Merge branch 'master' of http://139.186.142.91:10010/r/productDev/funingyunwei
| | |
| | | <ul class="toolbar" v-permissions="['business:ywpatrolscheme:create', 'business:ywpatrolscheme:delete']"> |
| | | <li><el-button type="primary" @click="editClick()" icon="el-icon-plus" |
| | | v-permissions="['business:ywpatrolscheme:create']">新建</el-button></li> |
| | | <el-button type="primary" plain :loading="isWorking.export" v-permissions="['business:ywpatrolscheme:exportExcel']" |
| | | @click="exportExcel">导出</el-button> |
| | | <el-button type="primary" plain :loading="isWorking.export" |
| | | v-permissions="['business:ywpatrolscheme:exportExcel']" @click="exportExcel">导出</el-button> |
| | | <!-- <li><el-button @click="deleteByIdInBatch" icon="el-icon-delete" |
| | | v-permissions="['business:ywpatrolscheme:delete']">删除</el-button></li> --> |
| | | </ul> |
| | |
| | | <el-table-column type="selection" width="55"></el-table-column> |
| | | |
| | | <el-table-column prop="title" label="计划名称" min-width="100px"></el-table-column> |
| | | <el-table-column prop="lineId" label="计划编号" min-width="100px"></el-table-column> |
| | | <el-table-column prop="code" label="计划编号" min-width="100px"></el-table-column> |
| | | <el-table-column prop="userName" label="负责人员" min-width="100px"></el-table-column> |
| | | |
| | | <el-table-column prop="startDate" label="计划日期" min-width="150px"> |
| | |
| | | <template> |
| | | <GlobalWindow width="800px" :title="title" :visible.sync="visible" @close="close" :confirm-working="isWorking" @confirm="confirm"> |
| | | <GlobalWindow width="800px" :title="title" :visible.sync="visible" @close="close" :confirm-working="isWorking" |
| | | @confirm="confirm"> |
| | | <el-form :model="form" ref="form" :rules="rules"> |
| | | <el-form-item label="位置类型" prop="areaType"> |
| | | <el-select v-model="form.areaType"> |
| | |
| | | <i class="el-icon-plus avatar-uploader-icon"></i> |
| | | <div>图片/视频</div> |
| | | </div> |
| | | </el-upload> |
| | | </el-upload> |
| | | <div v-for="(item, i) in fileList" :key="i" class="item"> |
| | | <i @click="handleDelImg(i)" class="el-icon-error close"></i> |
| | | <el-image :src="item.fileurlFull" :preview-src-list="[item.fileurlFull]" v-if="item.type == 0" |
| | |
| | | // 表单数据 |
| | | form: { |
| | | id: null, |
| | | creator: '', |
| | | createDate: '', |
| | | editor: '', |
| | | editDate: '', |
| | | floor: '', |
| | | isdeleted: '', |
| | | title: '', |
| | | remark: '', |
| | | status: '', |
| | |
| | | floorId: '', |
| | | roomId: '', |
| | | userId: '', |
| | | phone: '', |
| | | submitDate: '', |
| | | cateId: '', |
| | | areaType: '0', |
| | |
| | | // 新建 |
| | | if (target == null) { |
| | | this.$nextTick(() => { |
| | | this.$refs.form = { |
| | | id: null, |
| | | editDate: '', |
| | | floor: '', |
| | | title: '', |
| | | remark: '', |
| | | status: '', |
| | | sortnum: '', |
| | | content: '', |
| | | getDate: '', |
| | | projectId: '', |
| | | buildingId: '', |
| | | floorId: '', |
| | | roomId: '', |
| | | userId: '', |
| | | submitDate: '', |
| | | cateId: '', |
| | | areaType: '0', |
| | | code: '', |
| | | dealStatus: '', |
| | | dispatchUserId: '', |
| | | dispatchDate: '', |
| | | dispatchInfo: '', |
| | | dealUserId: '', |
| | | dealDate: '', |
| | | dealInfo: '', |
| | | dealType: '' |
| | | } |
| | | this.buildList = [] |
| | | this.roomList = [] |
| | | this.levelList = [] |
| | | this.$refs.form.resetFields() |
| | | this.form[this.configData['field.id']] = null |
| | | }) |
| | |
| | | changeBuild(e) { |
| | | this.$set(this.form, 'floorId', '') |
| | | this.$set(this.form, 'roomId', '') |
| | | if(this.form.areaType == 1){ |
| | | if (this.form.areaType == 1) { |
| | | this.getLevel(e) |
| | | }else{ |
| | | } else { |
| | | this.getRoom(e) |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | }, |
| | | getLevel(buildingId) { |
| | | getFloorList({ buildingId}).then(res => { |
| | | getFloorList({ buildingId }).then(res => { |
| | | this.levelList = res |
| | | }) |
| | | }, |
| | |
| | | }) |
| | | }, |
| | | changeSel(e) { |
| | | if(e && e.length == 2){ |
| | | if (e && e.length == 2) { |
| | | this.$set(this.form, 'cateId', e[1]) |
| | | }else{ |
| | | } else { |
| | | this.$set(this.form, 'cateId', '') |
| | | } |
| | | }, |
| | |
| | | <template> |
| | | <GlobalWindow width="920px" title="工单详情" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | <GlobalWindow width="960px" title="工单详情" :visible.sync="visible" :confirm-working="isWorking" @close="close" |
| | | @confirm="confirm"> |
| | | <div class="main"> |
| | | <div class="title"> |
| | | <span>工单详情</span> |
| | | <div> |
| | | <div class="status primaryColor" v-if="info.dealStatus == 0 || info.dealStatus == null">待指派</div> |
| | | <div class="status" v-if="info.dealStatus == 1">已指派</div> |
| | | <div class="status green" v-if="info.dealStatus == 1">已指派</div> |
| | | <div class="status gray" v-if="info.dealStatus == 2">已处理</div> |
| | | </div> |
| | | </div> |
| | |
| | | import { detailById, dispatchOrder, dealOrder } from '@/api/workorder/ywWorkorder' |
| | | import { getUserList } from '@/api/system/user' |
| | | import { Message, Loading } from 'element-ui' |
| | | import dayjs from 'dayjs' |
| | | export default { |
| | | components: { |
| | | GlobalWindow |
| | |
| | | const { id } = this |
| | | detailById(id).then(res => { |
| | | this.info = res |
| | | if(this.info.dealStatus == 1){ |
| | | this.$set(this.param, 'getDate',dayjs().format('YYYY-MM-DD HH:mm:ss') ) |
| | | } |
| | | }) |
| | | }, |
| | | getStaff() { |
| | |
| | | align-items: center; |
| | | |
| | | .status { |
| | | padding: 0 6px; |
| | | height: 22px; |
| | | line-height: 22px; |
| | | padding: 0 12px; |
| | | height: 24px; |
| | | line-height: 24px; |
| | | border-radius: 2px; |
| | | border: 1px solid #00BA92; |
| | | color: #00BA92; |
| | |
| | | } |
| | | |
| | | .primaryColor { |
| | | border: 1px solid $primary-color; |
| | | border: 1px solid rgba(63, 126, 239,.2); |
| | | background-color: rgba(63, 126, 239,.2); |
| | | } |
| | | |
| | | .green{ |
| | | background-color: rgba(83, 183, 148, .2); |
| | | border: 1px solid rgba(83, 183, 148, .2); |
| | | } |
| | | .gray { |
| | | color: gray; |
| | | border: 1px solid gray; |
| | | color: #333333; |
| | | background-color: rgba(128, 128, 128, .2); |
| | | border: 1px solid rgba(128, 128, 128, .2); |
| | | } |
| | | } |
| | | |
| | |
| | | width: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | .la{ |
| | | margin-bottom: 0; |
| | | width: 72px; |
| | | } |
| | | } |
| | | |
| | | .max { |
| | |
| | | <ul class="toolbar" v-permissions="['business:category:create', 'business:category:delete']"> |
| | | <li><el-button type="primary" @click="handleEdit()" icon="el-icon-plus" |
| | | v-permissions="['business:category:create']">新建</el-button></li> |
| | | <li v-permissions="['business:category:exportExcel']"><el-button type="primary" |
| | | @click="exportExcel">导出</el-button></li> |
| | | <!-- <li v-permissions="['business:category:exportExcel']"><el-button type="primary" |
| | | @click="exportExcel">导出</el-button></li> --> |
| | | </ul> |
| | | <el-table row-key="id" :tree-props="{ children: 'childCategoryList' }" v-loading="isWorking.search" |
| | | :data="dataList" stripe @selection-change="handleSelectionChange"> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item prop="cateId" label="工单分类"> |
| | | <el-cascader v-model="searchForm.areaIds" @change="changeSel" placeholder="请选择巡检区域" clearable |
| | | <el-cascader v-model="searchForm.areaIds" @change="changeSel" placeholder="请选择工单分类" clearable |
| | | :options="cateList" :props="{ |
| | | label: 'name', |
| | | value: 'id', |
| | | children: 'childCategoryList' |
| | | }"></el-cascader> |
| | | </el-form-item> |
| | | <el-form-item label="提交日期"> |
| | | <el-form-item label="上报时间"> |
| | | <el-date-picker v-model="searchForm.selDate" @change="changeSelDate" format="yyyy-MM-dd" |
| | | value-format="yyyy-MM-dd" type="daterange"></el-date-picker> |
| | | </el-form-item> |
| | |
| | | buildingId: '', |
| | | cateId: '', |
| | | } |
| | | this.buildList = [] |
| | | this.search() |
| | | }, |
| | | changeSelDate(e) { |
| | |
| | | <view class="la"><text class="red">*</text>选择设备</view>
|
| | | <view class="line">
|
| | | <view class="sel_wrap" @click="showModal = true">
|
| | | <view class="left" :class="param.deviceName ? '' : 'placeholder9'">{{ param.deviceName ? param.deviceName : '请选择设备' }}</view>
|
| | | <view class="left" :class="param.deviceName ? '' : 'placeholder9'">
|
| | | {{ param.deviceName ? param.deviceName : '请选择设备' }}
|
| | | </view>
|
| | | <u-icon name="arrow-right" color="#999999" size="17"></u-icon>
|
| | | </view>
|
| | | <image class="icon" src="@/static/side/scan.png" mode=""></image>
|
| | | <image @click="openQrcode" class="icon" src="@/static/side/scan.png" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | <view class="item"> |
| | | <view class="la">设备状态</view> |
| | | <view class="line"> |
| | | <view class="radio_wrap"> |
| | | <view class="ite" :class="{active: param.status == 0}" @click="statusChange(0)">正常</view> |
| | | <view class="ite" :class="{active: param.status == 1}" @click="statusChange(1)">损坏</view> |
| | | <view class="ite" :class="{active: param.status == 2}" @click="statusChange(2)">报废</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="la">上传视频/图片</view> |
| | | <view class="upload_wrap"> |
| | | <view class="upload_file" @click="showUpload = true"> |
| | | <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon> |
| | | <view class="mt6">图片/视频</view> |
| | | </view> |
| | | <view class="upload_file" v-for="(item, i) in fileList" :key="i"> |
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red" |
| | | @click="fileDel('fileList', i)"></u-icon> |
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image> |
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="item"> |
| | | <view class="la">运维备注</view> |
| | | <view class="line"> |
| | | <textarea v-model="param.content" placeholder="请输入" placeholder-class="placeholder9" /> |
| | | </view> |
| | | </view> |
| | | <view class="item">
|
| | | <view class="la">设备状态</view>
|
| | | <view class="line">
|
| | | <view class="radio_wrap">
|
| | | <view class="ite" :class="{active: param.status == 0}" @click="statusChange(0)">正常</view>
|
| | | <view class="ite" :class="{active: param.status == 1}" @click="statusChange(1)">损坏</view>
|
| | | <view class="ite" :class="{active: param.status == 2}" @click="statusChange(2)">报废</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="la">上传视频/图片</view>
|
| | | <view class="upload_wrap">
|
| | | <view class="upload_file" @click="showUpload = true">
|
| | | <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
|
| | | <view class="mt6">图片/视频</view>
|
| | | </view>
|
| | | <view class="upload_file" v-for="(item, i) in fileList" :key="i">
|
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red"
|
| | | @click="fileDel('fileList', i)"></u-icon>
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="la">运维备注</view>
|
| | | <view class="line">
|
| | | <textarea v-model="param.content" placeholder="请输入" placeholder-class="placeholder9" />
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | <view class="sub_btn" @click="onSubmit">提交</view> |
| | | <!-- --> |
| | | <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay> |
| | | <view class="sel_upload_wrap"> |
| | | <view class="btn" @click="uploadImage">选择图片</view> |
| | | <view class="btn" @click="uploadVideo">选择视频</view> |
| | | </view> |
| | | </u-popup> |
| | | <!-- --> |
| | | <u-popup :show="showModal" @close="showModal = false" :safeAreaInsetBottom="true" :round="10" closeable closeOnClickOverlay> |
| | | <view class="appr_modal"> |
| | | <view class="title">请选择设备</view> |
| | | <view class="search_wrap"> |
| | | <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image> |
| | | <input v-model="searchValue" @confirm="getDevice()" type="text" placeholder="搜索设备名称/编号" placeholder-class="placeholder9" /> |
| | | </view> |
| | | <view class="modal_list"> |
| | | <view class="item" v-for="item,i in deviceList" @click="deviceClick(item)"> |
| | | <view class="name">[{{item.code}}] {{ item.name }}</view> |
| | | <image v-if="activeDevice.id == item.id" src="@/static/radioed.png" mode=""></image> |
| | | </view> |
| | | </view> |
| | | <view class="sub_btn" @click="handleDevice">确定选择</view> |
| | | </view> |
| | | <view class="sub_btn" @click="onSubmit">提交</view>
|
| | | <!-- -->
|
| | | <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
|
| | | <view class="sel_upload_wrap">
|
| | | <view class="btn" @click="uploadImage">选择图片</view>
|
| | | <view class="btn" @click="uploadVideo">选择视频</view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- -->
|
| | | <u-popup :show="showModal" @close="showModal = false" :safeAreaInsetBottom="true" :round="10" closeable
|
| | | closeOnClickOverlay>
|
| | | <view class="appr_modal">
|
| | | <view class="title">请选择设备</view>
|
| | | <view class="search_wrap">
|
| | | <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
|
| | | <input v-model="searchValue" @confirm="getDevice()" type="text" placeholder="搜索设备名称/编号"
|
| | | placeholder-class="placeholder9" />
|
| | | </view>
|
| | | <view class="modal_list">
|
| | | <view class="item" v-for="item,i in deviceList" @click="deviceClick(item)">
|
| | | <view class="name">[{{item.code}}] {{ item.name }}</view>
|
| | | <image v-if="activeDevice.id == item.id" src="@/static/radioed.png" mode=""></image>
|
| | | </view>
|
| | | </view>
|
| | | <view class="sub_btn" @click="handleDevice">确定选择</view>
|
| | | </view>
|
| | | </u-popup>
|
| | | <!-- -->
|
| | | <view class="reader-box" @click="stopScan" v-if="isScaning">
|
| | | <view class="reader" id="reader"></view>
|
| | | </view>
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script> |
| | | import { |
| | | uploadUrl, |
| | | ywDevicePost, |
| | | ywDeviceCreate |
| | | } from '@/api' |
| | | <script>
|
| | | import {
|
| | | uploadUrl,
|
| | | ywDevicePost,
|
| | | ywDeviceCreate
|
| | | } from '@/api'
|
| | | import dayjs from 'dayjs';
|
| | | import {
|
| | | Html5Qrcode
|
| | | } from 'html5-qrcode';
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | param: {status: 0}, |
| | | showUpload: false, |
| | | showModal: false, |
| | | fileList: [], |
| | | |
| | | searchValue: '', |
| | | deviceList: [], |
| | | activeDevice: {}
|
| | | param: {
|
| | | status: 0
|
| | | },
|
| | | showUpload: false,
|
| | | showModal: false,
|
| | | fileList: [],
|
| | |
|
| | | searchValue: '',
|
| | | deviceList: [],
|
| | | activeDevice: {},
|
| | |
|
| | | html5Qrcode: null,
|
| | | isScaning: false,
|
| | | };
|
| | | }, |
| | | onLoad() { |
| | | this.getDevice() |
| | | }, |
| | | methods: { |
| | | onSubmit() { |
| | | const { param, fileList } = this |
| | | |
| | | if(!param.deviceId) return this.showToast('请先选择要维护的设备') |
| | | ywDeviceCreate({ |
| | | ...param, |
| | | userId: uni.getStorageSync('userInfo').id, |
| | | dealDate: dayjs().format('YYYY-MM-DD HH:mm:ss'), |
| | | multifileList: fileList |
| | | }).then(res => { |
| | | this.showToast('提交成功') |
| | | uni.navigateBack() |
| | | }) |
| | | }, |
| | | getDevice(){ |
| | | ywDevicePost({ |
| | | capacity: 9999, |
| | | page: 1, |
| | | model: { |
| | | name: this.searchValue |
| | | } |
| | | }).then(res => { |
| | | this.deviceList = res.data.records || [] |
| | | }) |
| | | }, |
| | | handleDevice() { |
| | | const { activeDevice } = this |
| | | if(!activeDevice.id) return this.showToast('请先选择设备') |
| | | this.$set(this.param, 'deviceId', activeDevice.id) |
| | | this.$set(this.param, 'deviceName', activeDevice.name) |
| | | this.showModal = false |
| | | }, |
| | | deviceClick(item) { |
| | | this.activeDevice = item |
| | | this.$forceUpdate() |
| | | }, |
| | | statusChange(val){ |
| | | this.param.status = val |
| | | }, |
| | | fileDel(str, i) { |
| | | this[str].splice(i, 1); |
| | | }, |
| | | uploadImage() { |
| | | this.showUpload = false; |
| | | let token = uni.getStorageSync('token') || ''; |
| | | uni.chooseImage({ |
| | | count: 4, |
| | | success: chooseImageRes => { |
| | | uni.showLoading({ |
| | | title: '上传中', |
| | | mask: true |
| | | }); |
| | | const tempFilePaths = chooseImageRes.tempFilePaths; |
| | | let imgs = tempFilePaths.map((value, index) => { |
| | | return { |
| | | name: 'file', |
| | | uri: value |
| | | }; |
| | | }); |
| | | uni.uploadFile({ |
| | | url: `${uploadUrl}`, |
| | | files: imgs, |
| | | name: 'file', |
| | | formData: { |
| | | folder: 'YW_DEVICE' |
| | | }, |
| | | header: { |
| | | Dm_user_token: token |
| | | }, |
| | | success: uploadFileRes => { |
| | | let res = JSON.parse(uploadFileRes.data); |
| | | if (res.data && res.data.length > 0) { |
| | | res.data.forEach(i => { |
| | | i.type = 0; |
| | | i.fileurl = i.imgaddr; |
| | | i.fileurlFull = i.url; |
| | | this.fileList.push(i); |
| | | }); |
| | | } |
| | | }, |
| | | fail(err) { |
| | | console.log('err', err); |
| | | }, |
| | | complete() { |
| | | uni.hideLoading(); |
| | | // if (i === chooseImageRes.tempFilePaths.length - 1) { |
| | | // uni.hideLoading() |
| | | // } |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | }, |
| | | uploadVideo() { |
| | | this.showUpload = false; |
| | | let token = uni.getStorageSync('token') || ''; |
| | | uni.chooseVideo({ |
| | | success: chooseImageRes => { |
| | | uni.showLoading({ |
| | | title: '上传中', |
| | | mask: true |
| | | }); |
| | | uni.uploadFile({ |
| | | url: `${uploadUrl}`, |
| | | filePath: chooseImageRes.tempFilePath, |
| | | header: { |
| | | Dm_user_token: token |
| | | }, |
| | | name: 'file', |
| | | formData: { |
| | | folder: 'YW_DEVICE' |
| | | }, |
| | | success: uploadFileRes => { |
| | | let res = JSON.parse(uploadFileRes.data); |
| | | if (res.data && res.data.length > 0) { |
| | | res.data.forEach(i => { |
| | | i.type = 1; |
| | | i.fileurl = i.imgaddr; |
| | | i.fileurlFull = i.url; |
| | | this.fileList.push(i); |
| | | }); |
| | | } |
| | | }, |
| | | complete() { |
| | | uni.hideLoading(); |
| | | } |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | },
|
| | | onLoad() {
|
| | | this.getDevice()
|
| | | },
|
| | | methods: {
|
| | | onSubmit() {
|
| | | const {
|
| | | param,
|
| | | fileList
|
| | | } = this
|
| | |
|
| | | if (!param.deviceId) return this.showToast('请先选择要维护的设备')
|
| | | ywDeviceCreate({
|
| | | ...param,
|
| | | userId: uni.getStorageSync('userInfo').id,
|
| | | dealDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
|
| | | multifileList: fileList
|
| | | }).then(res => {
|
| | | this.showToast('提交成功')
|
| | | uni.navigateBack()
|
| | | })
|
| | | },
|
| | | getDevice() {
|
| | | ywDevicePost({
|
| | | capacity: 9999,
|
| | | page: 1,
|
| | | model: {
|
| | | name: this.searchValue
|
| | | }
|
| | | }).then(res => {
|
| | | this.deviceList = res.data.records || []
|
| | | })
|
| | | },
|
| | | handleDevice() {
|
| | | const {
|
| | | activeDevice
|
| | | } = this
|
| | | if (!activeDevice.id) return this.showToast('请先选择设备')
|
| | | this.$set(this.param, 'deviceId', activeDevice.id)
|
| | | this.$set(this.param, 'deviceName', activeDevice.name)
|
| | | this.showModal = false
|
| | | },
|
| | | deviceClick(item) {
|
| | | this.activeDevice = item
|
| | | this.$forceUpdate()
|
| | | },
|
| | | statusChange(val) {
|
| | | this.param.status = val
|
| | | },
|
| | | fileDel(str, i) {
|
| | | this[str].splice(i, 1);
|
| | | },
|
| | | uploadImage() {
|
| | | this.showUpload = false;
|
| | | let token = uni.getStorageSync('token') || '';
|
| | | uni.chooseImage({
|
| | | count: 4,
|
| | | success: chooseImageRes => {
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | | mask: true
|
| | | });
|
| | | const tempFilePaths = chooseImageRes.tempFilePaths;
|
| | | let imgs = tempFilePaths.map((value, index) => {
|
| | | return {
|
| | | name: 'file',
|
| | | uri: value
|
| | | };
|
| | | });
|
| | | uni.uploadFile({
|
| | | url: `${uploadUrl}`,
|
| | | files: imgs,
|
| | | name: 'file',
|
| | | formData: {
|
| | | folder: 'YW_DEVICE'
|
| | | },
|
| | | header: {
|
| | | Dm_user_token: token
|
| | | },
|
| | | success: uploadFileRes => {
|
| | | let res = JSON.parse(uploadFileRes.data);
|
| | | if (res.data && res.data.length > 0) {
|
| | | res.data.forEach(i => {
|
| | | i.type = 0;
|
| | | i.fileurl = i.imgaddr;
|
| | | i.fileurlFull = i.url;
|
| | | this.fileList.push(i);
|
| | | });
|
| | | }
|
| | | },
|
| | | fail(err) {
|
| | | console.log('err', err);
|
| | | },
|
| | | complete() {
|
| | | uni.hideLoading();
|
| | | // if (i === chooseImageRes.tempFilePaths.length - 1) {
|
| | | // uni.hideLoading()
|
| | | // }
|
| | | }
|
| | | });
|
| | | }
|
| | | });
|
| | | },
|
| | | uploadVideo() {
|
| | | this.showUpload = false;
|
| | | let token = uni.getStorageSync('token') || '';
|
| | | uni.chooseVideo({
|
| | | success: chooseImageRes => {
|
| | | uni.showLoading({
|
| | | title: '上传中',
|
| | | mask: true
|
| | | });
|
| | | uni.uploadFile({
|
| | | url: `${uploadUrl}`,
|
| | | filePath: chooseImageRes.tempFilePath,
|
| | | header: {
|
| | | Dm_user_token: token
|
| | | },
|
| | | name: 'file',
|
| | | formData: {
|
| | | folder: 'YW_DEVICE'
|
| | | },
|
| | | success: uploadFileRes => {
|
| | | let res = JSON.parse(uploadFileRes.data);
|
| | | if (res.data && res.data.length > 0) {
|
| | | res.data.forEach(i => {
|
| | | i.type = 1;
|
| | | i.fileurl = i.imgaddr;
|
| | | i.fileurlFull = i.url;
|
| | | this.fileList.push(i);
|
| | | });
|
| | | }
|
| | | },
|
| | | complete() {
|
| | | uni.hideLoading();
|
| | | }
|
| | | });
|
| | | }
|
| | | });
|
| | | },
|
| | |
|
| | | openQrcode() {
|
| | | this.isScaning = true;
|
| | | Html5Qrcode.getCameras().then((devices) => {
|
| | | if (devices && devices.length) {
|
| | | this.html5Qrcode = new Html5Qrcode('reader');
|
| | | this.html5Qrcode.start({
|
| | | facingMode: 'environment'
|
| | | }, {
|
| | | focusMode: 'continuous', //设置连续聚焦模式
|
| | | fps: 5, //设置扫码识别速度
|
| | | qrbox: 280 //设置二维码扫描框大小
|
| | | },
|
| | | (decodeText, decodeResult) => {
|
| | | if (decodeText) { //这里decodeText就是通过扫描二维码得到的内容
|
| | | this.action(decodeText) //对二维码逻辑处理
|
| | | this.stopScan(); //关闭扫码功能
|
| | | }
|
| | | },
|
| | | (err) => {
|
| | | // console.log(err); //错误信息
|
| | | }
|
| | | );
|
| | | }
|
| | | });
|
| | | },
|
| | |
|
| | | stopScan() {
|
| | | console.log('停止扫码')
|
| | | this.isScaning = false;
|
| | | if (this.html5Qrcode) {
|
| | | this.html5Qrcode.stop();
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
| | | }
|
| | |
|
| | | .line {
|
| | | display: flex; |
| | | align-items: center; |
| | | .icon{ |
| | | width: 52rpx; |
| | | height: 52rpx; |
| | | margin-left: 40rpx; |
| | | display: flex;
|
| | | align-items: center;
|
| | |
|
| | | .icon {
|
| | | width: 52rpx;
|
| | | height: 52rpx;
|
| | | margin-left: 40rpx;
|
| | | }
|
| | |
|
| | | textarea {
|
| | | box-sizing: border-box;
|
| | | width: 690rpx;
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | .sel_wrap { |
| | | .sel_wrap {
|
| | | flex: 1;
|
| | | height: 90rpx;
|
| | | display: flex;
|
| | |
| | | align-items: center;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | | }
|
| | | .radio_wrap{ |
| | | margin-top: 20rpx; |
| | | width: 100%; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | .ite{ |
| | | width: 216rpx; |
| | | height: 68rpx; |
| | | background: #F7F7F7; |
| | | border-radius: 36rpx; |
| | | font-size: 30rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | } |
| | | .active{ |
| | | color: $primaryColor; |
| | | border-color: $primaryColor; |
| | | background: rgba(0,104,255,0.1); |
| | | } |
| | |
|
| | | .radio_wrap {
|
| | | margin-top: 20rpx;
|
| | | width: 100%;
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | |
|
| | | .ite {
|
| | | width: 216rpx;
|
| | | height: 68rpx;
|
| | | background: #F7F7F7;
|
| | | border-radius: 36rpx;
|
| | | font-size: 30rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | }
|
| | |
|
| | | .active {
|
| | | color: $primaryColor;
|
| | | border-color: $primaryColor;
|
| | | background: rgba(0, 104, 255, 0.1);
|
| | | }
|
| | | }
|
| | |
|
| | | .upload_wrap {
|
| | | display: flex;
|
| | | flex-wrap: wrap;
|
| | |
| | |
|
| | | }
|
| | | }
|
| | |
|
| | | .sel_upload_wrap {
|
| | | width: 100%;
|
| | | border-top: 1px solid #333333;
|
| | |
| | | text-align: center;
|
| | | }
|
| | | }
|
| | |
|
| | | .sub_btn {
|
| | | position: fixed;
|
| | | bottom: 68rpx;
|
| | |
| | | font-size: 32rpx;
|
| | | color: #FFFFFF;
|
| | | }
|
| | | .appr_modal { |
| | | padding: 36rpx 30rpx 0; |
| | | height: calc( 100vh - 120rpx ); |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | margin-bottom: 40rpx; |
| | | text-align: center; |
| | | } |
| | | |
| | | .search_wrap { |
| | | display: flex; |
| | | align-items: center; |
| | | width: 100%; |
| | | height: 76rpx; |
| | | background: #f2f2f2; |
| | | border-radius: 38rpx; |
| | | padding-left: 30rpx; |
| | | input{ |
| | | flex: 1; |
| | | } |
| | | .search { |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | } |
| | | } |
| | | .modal_list{ |
| | | height: calc( 100% - 360rpx ); |
| | | .item{ |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | height: 100rpx; |
| | | font-size: 30rpx; |
| | | border-bottom: 1px solid #E5E5E5; |
| | | image{ |
| | | width: 40rpx; |
| | | height: 40rpx; |
| | | } |
| | | } |
| | | .active{ |
| | | color: $primaryColor; |
| | | } |
| | | } |
| | | |
| | | } |
| | |
|
| | | .appr_modal {
|
| | | padding: 36rpx 30rpx 0;
|
| | | height: calc(100vh - 120rpx);
|
| | |
|
| | | .title {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | | margin-bottom: 40rpx;
|
| | | text-align: center;
|
| | | }
|
| | |
|
| | | .search_wrap {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | width: 100%;
|
| | | height: 76rpx;
|
| | | background: #f2f2f2;
|
| | | border-radius: 38rpx;
|
| | | padding-left: 30rpx;
|
| | |
|
| | | input {
|
| | | flex: 1;
|
| | | }
|
| | |
|
| | | .search {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .modal_list {
|
| | | height: calc(100% - 360rpx);
|
| | |
|
| | | .item {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: space-between;
|
| | | height: 100rpx;
|
| | | font-size: 30rpx;
|
| | | border-bottom: 1px solid #E5E5E5;
|
| | |
|
| | | image {
|
| | | width: 40rpx;
|
| | | height: 40rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .active {
|
| | | color: $primaryColor;
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | .reader-box {
|
| | | position: fixed;
|
| | | top: 0;
|
| | | bottom: 0;
|
| | | left: 0;
|
| | | right: 0;
|
| | | background-color: rgba(0, 0, 0, 0.5);
|
| | | }
|
| | |
|
| | | .reader {
|
| | | width: 100%;
|
| | | // width: 540rpx;
|
| | | // height: 540rpx;
|
| | | position: absolute;
|
| | | top: 50%;
|
| | | left: 50%;
|
| | | transform: translate(-50%, -50%);
|
| | | }
|
| | | </style> |
| | |
| | | model: {
|
| | | ...param,
|
| | | queryStatus: activeTab,
|
| | | dispatchUserId: selectAll ? '' : uni.getStorageSync('userInfo').id,
|
| | | dealUserId: selectAll ? '' : uni.getStorageSync('userInfo').id,
|
| | | }
|
| | | }).then(res => {
|
| | | this.list = [...this.list, ...res.data.records]
|
| | |
| | | compression: |
| | | enabled: true |
| | | mime-types: application/json |
| | | port: 8080 |
| | | port: 10010 |
| | | |
| | | tomcat: |
| | | max-swallow-size: -1 |
| | |
| | | public ApiResponse<List<YwContract>> list (@RequestBody YwContract model,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(ywContractService.findList(model)); |
| | | } |
| | | @ApiOperation("列表") |
| | | @ApiOperation("根据退租日期查询账单数据") |
| | | @PostMapping("/findForBills") |
| | | @CloudRequiredPermission("business:ywcontract:query") |
| | | public ApiResponse<YwContract> findForBills (@RequestBody YwContract model,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | |
| | | @ExcelColumn(name="合同编号",index = 1,width = 10) |
| | | @TableField(exist = false) |
| | | private String contractCode; |
| | | @ApiModelProperty(value = "合同狀態", example = "1") |
| | | @TableField(exist = false) |
| | | private String contractStatus; |
| | | |
| | | |
| | | @ApiModelProperty(value = "客户名称(付款方)", example = "1") |
| | |
| | | private String remark; |
| | | |
| | | @ApiModelProperty(value = "状态 0启用 1禁用", example = "1") |
| | | @ExcelColumn(name="状态",index = 9,width = 6,valueMapping = "0=启用;1=停用;") |
| | | @ExcelColumn(name="状态",index = 8,width = 6,valueMapping = "0=启用;1=停用;") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty(value = "排序码", example = "1") |
| | |
| | | |
| | | @ApiModelProperty(value = "超期任务数") |
| | | @TableField(exist = false) |
| | | @ExcelColumn(name="超期任务数",index = 8,width = 6) |
| | | private Integer timeOutTaskNum; |
| | | } |
| | |
| | | |
| | | @TableId(type = IdType.AUTO) |
| | | @ApiModelProperty(value = "主键", example = "1") |
| | | @ExcelColumn(name="主键") |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value = "创建人编码", example = "1") |
| | | @ExcelColumn(name="创建人编码") |
| | | private Integer creator; |
| | | |
| | | @ApiModelProperty(value = "创建时间") |
| | | @ExcelColumn(name="创建时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date createDate; |
| | | |
| | | @ApiModelProperty(value = "更新人编码", example = "1") |
| | | @ExcelColumn(name="更新人编码") |
| | | private Integer editor; |
| | | |
| | | @ApiModelProperty(value = "更新时间") |
| | | @ExcelColumn(name="更新时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | private Date editDate; |
| | | |
| | | @ApiModelProperty(value = "是否删除0否 1是", example = "1") |
| | | @ExcelColumn(name="是否删除0否 1是") |
| | | private Integer isdeleted; |
| | | |
| | | @ApiModelProperty(value = "标题") |
| | | @ExcelColumn(name="标题") |
| | | private String title; |
| | | |
| | | @ApiModelProperty(value = "备注") |
| | | @ExcelColumn(name="备注") |
| | | private String remark; |
| | | |
| | | @ApiModelProperty(value = "状态 0启用 1禁用", example = "1") |
| | | @ExcelColumn(name="状态 0启用 1禁用") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty(value = "排序码", example = "1") |
| | | @ExcelColumn(name="排序码") |
| | | private Integer sortnum; |
| | | |
| | | @ApiModelProperty(value = "情况说明") |
| | | @ExcelColumn(name="情况说明") |
| | | private String content; |
| | | |
| | | @ApiModelProperty(value = "上门时间") |
| | | @ExcelColumn(name="上门时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date getDate; |
| | | |
| | | @ApiModelProperty(value = "所属项目编码(关联yw_project)", example = "1") |
| | | @ExcelColumn(name="所属项目编码(关联yw_project)") |
| | | private Integer projectId; |
| | | |
| | | @ApiModelProperty(value = "所属楼宇编码(关联yw_building)", example = "1") |
| | | @ExcelColumn(name="所属楼宇编码(关联yw_building)") |
| | | private Integer buildingId; |
| | | |
| | | @ApiModelProperty(value = "所属房间编码(关联yw_room)", example = "1") |
| | | @ExcelColumn(name="所属房间编码(关联yw_room)") |
| | | private Integer roomId; |
| | | @ApiModelProperty(value = "所属楼层编码(关联yw_floor)", example = "1") |
| | | @ExcelColumn(name="所属楼层编码(关联yw_floor)") |
| | | private Integer floorId; |
| | | |
| | | @ApiModelProperty(value = "提报人编码", example = "1") |
| | | @ExcelColumn(name="提报人编码") |
| | | private Integer userId; |
| | | |
| | | @ApiModelProperty(value = "联系电话") |
| | | @ExcelColumn(name="联系电话") |
| | | private String phone; |
| | | |
| | | @ApiModelProperty(value = "提报时间") |
| | | @ExcelColumn(name="提报时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @ExcelColumn(name="上报时间",index = 5,width = 16,dateFormat = "yyyy-MM-dd HH:mm:ss") |
| | | private Date submitDate; |
| | | |
| | | @ApiModelProperty(value = "工单分类编码(关联category)", example = "1") |
| | | @ExcelColumn(name="工单分类编码(关联category)") |
| | | private Integer cateId; |
| | | |
| | | @ApiModelProperty(value = "保修区域类型 0室内维修 1公共区域", example = "1") |
| | | @ExcelColumn(name="保修区域类型 0室内维修 1公共区域") |
| | | @ExcelColumn(name="位置区域",valueMapping = "0=室内维修;1=公共区域;",index = 0,width = 10) |
| | | private Integer areaType; |
| | | |
| | | @ApiModelProperty(value = "工单编号") |
| | | @ExcelColumn(name="工单编号") |
| | | private String code; |
| | | |
| | | @ApiModelProperty(value = "处理状态 0待处理 1已分派 2已处理", example = "1") |
| | | @ExcelColumn(name="处理状态 0待处理 1已分派 2已处理") |
| | | @ExcelColumn(name="工单状态",index = 7,width = 10,valueMapping = "0=待处理;1=已分派;1=已处理;") |
| | | private Integer dealStatus; |
| | | |
| | | @ApiModelProperty(value = "分派人编码(关联system_user)", example = "1") |
| | | @ExcelColumn(name="分派人编码(关联system_user)") |
| | | private Integer dispatchUserId; |
| | | |
| | | @ApiModelProperty(value = "分派时间") |
| | | @ExcelColumn(name="分派时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date dispatchDate; |
| | | |
| | | @ApiModelProperty(value = "分派处理说明") |
| | | @ExcelColumn(name="分派处理说明") |
| | | private String dispatchInfo; |
| | | |
| | | @ApiModelProperty(value = "处理人编码(关联system_user)", example = "1") |
| | | @ExcelColumn(name="处理人编码(关联system_user)") |
| | | private Integer dealUserId; |
| | | |
| | | @ApiModelProperty(value = "处理时间") |
| | | @ExcelColumn(name="处理时间") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date dealDate; |
| | | |
| | | @ApiModelProperty(value = "处理备注") |
| | | @ExcelColumn(name="处理备注") |
| | | private String dealInfo; |
| | | |
| | | @ApiModelProperty(value = "处理方式 0指派后处理 1直接回复", example = "1") |
| | | @ExcelColumn(name="处理方式 0指派后处理 1直接回复") |
| | | private Integer dealType; |
| | | |
| | | @ApiModelProperty(value = "项目名称") |
| | | @TableField(exist = false) |
| | | private String projectName; |
| | |
| | | private String queryStatus; |
| | | |
| | | @ApiModelProperty(value = "楼宇名称") |
| | | @ExcelColumn(name="楼宇",index = 1,width = 10) |
| | | @TableField(exist = false) |
| | | private String buildingName; |
| | | @ApiModelProperty(value = "房源名称") |
| | | @ExcelColumn(name="房源",index = 2,width = 10) |
| | | @TableField(exist = false) |
| | | private String roomName; |
| | | @ApiModelProperty(value = "楼层名称") |
| | |
| | | @TableField(exist = false) |
| | | private String roomNum; |
| | | @ApiModelProperty(value = "提报人姓名") |
| | | @ExcelColumn(name="上报人",index = 4,width = 10) |
| | | @TableField(exist = false) |
| | | private String creatorName; |
| | | @ApiModelProperty(value = "提报人电话") |
| | |
| | | private String creatorMobile; |
| | | @ApiModelProperty(value = "处理人姓名") |
| | | @TableField(exist = false) |
| | | @ExcelColumn(name="处理人",index = 6,width = 10) |
| | | private String dealUserName; |
| | | @ApiModelProperty(value = "处理人组织") |
| | | @TableField(exist = false) |
| | | private String dealUserCompany; |
| | | @ApiModelProperty(value = "类别名称") |
| | | @ExcelColumn(name="工单分类",index = 3,width = 10) |
| | | @TableField(exist = false) |
| | | private String categoryName; |
| | | @ApiModelProperty(value = "分配人姓名") |
| | |
| | | import com.doumee.dao.admin.request.UpdateCompanySortDTO; |
| | | import com.doumee.dao.admin.response.CompanyDTO; |
| | | import com.doumee.dao.business.MemberMapper; |
| | | import com.doumee.dao.business.YwContractMapper; |
| | | import com.doumee.dao.business.dao.CompanyMapper; |
| | | import com.doumee.dao.business.dao.join.CompanyJoinMapper; |
| | | import com.doumee.dao.business.model.Company; |
| | | import com.doumee.dao.business.model.Member; |
| | | import com.doumee.dao.business.model.YwContract; |
| | | import com.doumee.dao.business.vo.CompanyTree; |
| | | import com.doumee.dao.system.model.SystemUser; |
| | | import com.doumee.service.business.CompanyService; |
| | |
| | | |
| | | @Autowired |
| | | private CompanyJoinMapper companyJoinMapper; |
| | | @Autowired |
| | | private YwContractMapper ywContractMapper; |
| | | |
| | | |
| | | /** |
| | | * 创建财务公司 |
| | |
| | | .eq(Company::getType,company.getType()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,名称不能重复~"); |
| | | } |
| | | if(StringUtils.isNotBlank(company.getCode())){ |
| | | if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getCode,company.getCode()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,纳税识别号不能重复~"); |
| | | } |
| | | } |
| | | company.setCreateDate(new Date()); |
| | | company.setCreator(company.getLoginUserInfo().getId()); |
| | |
| | | .eq(Company::getName,company.getName()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,组织名称不能重复~"); |
| | | } |
| | | if(StringUtils.isNotBlank(company.getCode())){ |
| | | if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getCode,company.getCode()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,纳税识别号不能重复~"); |
| | | } |
| | | } |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(user ==null){ |
| | |
| | | .eq(Member::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,该部门下存在人员信息,不能进行删除操作!"); |
| | | } |
| | | if(ywContractMapper.selectCount(new QueryWrapper<YwContract>().lambda().eq(YwContract::getCompanyId,id))>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "当前公司已关联业务,不可删除"); |
| | | } |
| | | |
| | | Company company = new Company(); |
| | | company.setId(id); |
| | |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,组织名称不能重复~"); |
| | | } |
| | | if(StringUtils.isNotBlank(company.getCode())){ |
| | | if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getCode,company.getCode()) |
| | | .ne(Company::getId,company.getId()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,纳税识别号不能重复~"); |
| | | } |
| | | } |
| | | |
| | | LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); |
| | | if(user == null){ |
| | | user = company.getLoginUserInfo(); |
| | |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,名称不能重复~"); |
| | | } |
| | | if(StringUtils.isNotBlank(company.getCode())){ |
| | | if(companyMapper.selectCount(new QueryWrapper<Company>().lambda() |
| | | .eq(Company::getCode,company.getCode()) |
| | | .ne(Company::getId,company.getId()) |
| | | .eq(Company::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,纳税识别号不能重复~"); |
| | | } |
| | | } |
| | | companyMapper.updateById(company); |
| | | return company.getId(); |
| | | } |
| | |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.YwAccountMapper; |
| | | import com.doumee.dao.business.YwContractRevenueMapper; |
| | | import com.doumee.dao.business.dao.CompanyMapper; |
| | | import com.doumee.dao.business.model.Company; |
| | | import com.doumee.dao.business.model.YwAccount; |
| | | import com.doumee.dao.business.model.YwContractRevenue; |
| | | import com.doumee.dao.business.model.YwProject; |
| | | import com.doumee.service.business.YwAccountService; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.CollectionUtils; |
| | |
| | | private YwAccountMapper ywAccountMapper; |
| | | @Autowired |
| | | private CompanyMapper companyMapper; |
| | | @Autowired |
| | | private YwContractRevenueMapper ywContractRevenueMapper; |
| | | |
| | | @Override |
| | | public Integer create(YwAccount model) { |
| | |
| | | || !Constants.equalsInteger(ywProject.getType(),Constants.TWO)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,请选择正确的公司信息!"); |
| | | } |
| | | if(StringUtils.isNotBlank(model.getTitle())){ |
| | | if(ywAccountMapper.selectCount(new QueryWrapper<YwAccount>().lambda() |
| | | .eq(YwAccount::getTitle,model.getTitle()) |
| | | .eq(YwAccount::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,收支条目不能重复~"); |
| | | } |
| | | } |
| | | |
| | | |
| | | model.setCreator(model.getLoginUserInfo().getId()); |
| | | model.setIsdeleted(Constants.ZERO); |
| | | model.setCreateDate(new Date()); |
| | |
| | | |
| | | @Override |
| | | public void deleteById(Integer id, LoginUserInfo user) { |
| | | if(ywContractRevenueMapper.selectCount(new QueryWrapper<YwContractRevenue>().lambda().eq(YwContractRevenue::getAccountId,id))>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前收支账户已关联业务,不可删除"); |
| | | } |
| | | YwAccount model = new YwAccount(); |
| | | model.setId(id); |
| | | model.setIsdeleted(Constants.ONE); |
| | |
| | | || !Constants.equalsInteger(ywProject.getType(),Constants.TWO)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,请选择正确的公司信息!"); |
| | | } |
| | | if(StringUtils.isNotBlank(model.getTitle())){ |
| | | if(ywAccountMapper.selectCount(new QueryWrapper<YwAccount>().lambda() |
| | | .eq(YwAccount::getTitle,model.getTitle()) |
| | | .ne(YwAccount::getId,model.getId()) |
| | | .eq(YwAccount::getIsdeleted,Constants.ZERO)) >0){ |
| | | throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "对不起,收支条目不能重复~"); |
| | | } |
| | | } |
| | | |
| | | model.setEditDate(model.getCreateDate()); |
| | | model.setEditor(model.getCreator()); |
| | | ywAccountMapper.updateById(model); |
| | |
| | | new MPJLambdaWrapper<YwContractRevenue>().selectAll(YwContractRevenue.class) |
| | | .selectAs(YwContractBill::getCode,YwContractRevenue::getBillCode) |
| | | .selectAs(YwContract::getCode,YwContractRevenue::getContractCode) |
| | | .selectAs(YwContract::getStatus,YwContractRevenue::getContractStatus) |
| | | .selectAs(YwCustomer::getName,YwContractRevenue::getCustomerName) |
| | | .selectAs(SystemUser::getRealname,YwContractRevenue::getRealname) |
| | | .selectAs(YwAccount::getTitle,YwContractRevenue::getAccountTitle) |
| | |
| | | .selectAs(YwContractBill::getCode,YwContractRevenue::getBillCode) |
| | | .selectAs(YwContractBill::getType,YwContractRevenue::getBillType) |
| | | .selectAs(YwContract::getCode,YwContractRevenue::getContractCode) |
| | | .selectAs(YwContract::getStatus,YwContractRevenue::getContractStatus) |
| | | .selectAs(YwCustomer::getName,YwContractRevenue::getCustomerName) |
| | | .selectAs(SystemUser::getRealname,YwContractRevenue::getRealname) |
| | | .leftJoin(YwContractBill.class,YwContractBill::getId,YwContractRevenue::getBillId) |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.time.temporal.ChronoUnit; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | |
| | | @Transactional(rollbackFor = {BusinessException.class,Exception.class}) |
| | | public Integer create(YwContract model) { |
| | | isParamValidCreated(model); |
| | | |
| | | |
| | | model.setCreator(model.getLoginUserInfo().getId()); |
| | | model.setIsdeleted(Constants.ZERO); |
| | | model.setCreateDate(new Date()); |
| | | model.setStatus(Constants.ZERO); |
| | | model.setEditDate(model.getCreateDate()); |
| | | model.setEditor(model.getCreator()); |
| | | if(model.getStartDate().getTime() > System.currentTimeMillis()){ |
| | | model.setStatus(Constants.ZERO); |
| | | }else if(model.getStartDate().getTime() <= System.currentTimeMillis() && model.getEndDate().getTime() > System.currentTimeMillis()){ |
| | | model.setStatus(Constants.ONE); |
| | | }else{ |
| | | model.setStatus(Constants.TWO); |
| | | } |
| | | model.setStatus(Constants.ZERO);//待执行 |
| | | model.setRemark(getRemarlByParam(model)); |
| | | ywContractMapper.insert(model); |
| | |
| | | } |
| | | model.setTotalArea(new BigDecimal(0)); |
| | | for(YwRoom r : rooms){ |
| | | model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getArea()))); |
| | | model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getRentArea()))); |
| | | } |
| | | model.setRoomList(rooms); |
| | | } |
| | |
| | | BigDecimal fee = Constants.formatBigdecimal(model.getBtFee()); |
| | | String str = "退租摘要:剩余未结清账单{param1}份,关闭账单{param2}份【退租日{param3},退租费用合计需{param4}{param5}元。】"; |
| | | str = str.replace("{param1}",model.getBtWaitBill()+"") |
| | | .replace("{param2}",DateUtil.getDateLongSlash(model.getBtDate())) |
| | | .replace("{param3}",fee.compareTo(new BigDecimal(0)) >=0?"收":"付") |
| | | .replace("{param4}",(fee.compareTo(new BigDecimal(0)) >=0? |
| | | Constants.formatBigdecimal(model.getBtFee()).intValue() |
| | | :(Constants.formatBigdecimal(model.getBtFee()).intValue() * -1))+"" ); |
| | | .replace("{param2}",model.getBtCLoseBill()+"") |
| | | .replace("{param3}",DateUtil.getDateLongSlash(model.getBtDate())) |
| | | .replace("{param4}",fee.compareTo(new BigDecimal(0)) >=0?"收":"付") |
| | | .replace("{param5}",(fee.compareTo(new BigDecimal(0)) >=0? |
| | | Constants.formatBigdecimal2Float(model.getBtFee()).intValue() |
| | | :(Constants.formatBigdecimal2Float(model.getBtFee()).intValue() * -1))+"" ); |
| | | return str; |
| | | } |
| | | private String getbackRentLogByParam(YwContract model) { |
| | |
| | | update.setBtFee(param.getBtFee()); |
| | | update.setBtRemark(getbackRentRemarkByParam(param)); |
| | | ywContractMapper.updateById(update); |
| | | // if(1==1){ |
| | | // throw new BusinessException(ResponseStatus.NOT_ALLOWED); |
| | | // } |
| | | dealLogBiz(param,Constants.YwLogType.CONTRACT_BACK, param.getLoginUserInfo().getRealname(),getbackRentLogByParam(param)); |
| | | return param.getId(); |
| | | } |
| | |
| | | } |
| | | if(Constants.equalsInteger(bill.getPayStatus(),Constants.ZERO) |
| | | ||Constants.equalsInteger(bill.getPayStatus(),Constants.THREE)){ |
| | | if(bill.getStartDate().getTime()<param.getBtDate().getTime()){ |
| | | if(bill.getStartDate().getTime()<=param.getBtDate().getTime()){ |
| | | canBills.add(bill); |
| | | }else{ |
| | | //如果还没开始,账单直接关闭 |
| | | closeBills.add(bill); |
| | | noBills.add(bill); |
| | | } |
| | | // if(bill.getStartDate().getTime()>param.getEditDate().getTime()){ |
| | | // //如果还没开始,账单直接关闭 |
| | | // closeBills.add(bill); |
| | | // noBills.add(bill); |
| | | // }else{ |
| | | // canBills.add(bill); |
| | | // } |
| | | }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){ |
| | | if(bill.getStartDate().getTime()>param.getBtDate().getTime()){ |
| | | // if(bill.getEndDate().getTime()<param.getEditDate().getTime()){ |
| | | //如果已结清,账单直接关闭 |
| | | noBills.add(bill); |
| | | }else{ |
| | |
| | | |
| | | BigDecimal totalBackFee = new BigDecimal(0); |
| | | if(canBills.size()>0){ |
| | | //直接关闭关闭账单 |
| | | // |
| | | for(YwContractBill b : canBills){ |
| | | BigDecimal fee = new BigDecimal(0); |
| | | YwContractBill editBill = getEditBillFromListByParam(b,param.getCanBackRentBills()); |
| | | if(editBill != null){ |
| | | //付款状态:0=待收款;1=已结清;2=部分结清;3=待付款;4=待退款;5=已关闭 |
| | | //如果账单信息做了编辑,金额计算 实收金额 和 修改后应收金额作对比,判断是否应该退款 |
| | | fee = Constants.formatBigdecimal(b.getActReceivableFee()).subtract(editBill.getReceivableFee()); |
| | | fee = editBill.getReceivableFee().subtract(Constants.formatBigdecimal(b.getActReceivableFee())); |
| | | if(fee.compareTo(new BigDecimal(0))== 0){ |
| | | //如果费用正好,则修改账单信息为已结清 |
| | | b.setPayStatus(Constants.ONE); |
| | |
| | | addBill.setContractId(param.getId()); |
| | | addBill.setType(Constants.ONE); |
| | | addBill.setStatus(Constants.ZERO); |
| | | addBill.setTotleFee(addBill.getReceivableFee()); |
| | | if(Constants.equalsInteger(addBill.getFeeType(),Constants.ONE)){ |
| | | addBill.setStartDate(addBill.getPlanPayDate()); |
| | | addBill.setEndDate(addBill.getPlanPayDate()); |
| | | } |
| | | if(Constants.equalsInteger(addBill.getBillType(),Constants.ZERO)){ |
| | | //如果是收款 |
| | | totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getActReceivableFee())); |
| | | // totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getActReceivableFee())); |
| | | addBill.setPayStatus(Constants.ZERO); |
| | | addBill.setBtFee(Constants.formatBigdecimal(addBill.getActReceivableFee())); |
| | | addBill.setBtFee(Constants.formatBigdecimal(addBill.getReceivableFee())); |
| | | }else{ |
| | | //如果是付款 |
| | | addBill.setPayStatus(Constants.THREE); |
| | | addBill.setBtFee(Constants.formatBigdecimal(addBill.getActReceivableFee()).multiply(new BigDecimal(-1))); |
| | | addBill.setBtFee(Constants.formatBigdecimal(addBill.getReceivableFee()).multiply(new BigDecimal(-1))); |
| | | } |
| | | totalBackFee = totalBackFee.add(Constants.formatBigdecimal(addBill.getBtFee())); |
| | | addBill.setEditDate(param.getEditDate()); |
| | |
| | | yjBill.setEditDate(param.getEditDate()); |
| | | yjBill.setEditor(param.getEditor()); |
| | | yjBill.setReceivableFee(BigDecimal.ZERO); |
| | | yjBill.setPayStatus(Constants.FOUR); |
| | | yjBill.setPlanPayDate(canBill.getPlanPayDate()); |
| | | if(Constants.formatBigdecimal(canBill.getActReceivableFee()).compareTo(new BigDecimal(0)) == 0){ |
| | | //未支付的押金,直接关闭 |
| | | yjBill.setStatus(Constants.ONE); |
| | | closeBills.add(yjBill); |
| | | }else{ |
| | | yjBill.setBtFee(Constants.formatBigdecimal(canBill.getActReceivableFee()).multiply(new BigDecimal(-1))); |
| | | yjBill.setPayStatus(Constants.FOUR); |
| | | yjBill.setPlanPayDate(canBill.getPlanPayDate()); |
| | | totalBackFee = totalBackFee.add(Constants.formatBigdecimal(yjBill.getBtFee())); |
| | | yjNoBills ++; |
| | | } |
| | | ywContractBillMapper.updateById(yjBill); |
| | | } |
| | | } |
| | | yjNoBills ++; |
| | | } |
| | | } |
| | | param.setBtWaitBill(canBills.size() + newBills.size()+yjNoBills);//未清算的账单数量 |
| | |
| | | } |
| | | int num =1; |
| | | for(int i=0;i<billList1.size();i++){ |
| | | billList1.get(i).setSortnum(num); |
| | | num++; |
| | | if(Constants.equalsInteger(billList1.get(i).getCostType(),Constants.ZERO)){ |
| | | billList1.get(i).setSortnum(num); |
| | | num++; |
| | | } |
| | | } |
| | | for(int i=0;i<billList2.size();i++){ |
| | | billList2.get(i).setSortnum(num); |
| | | num++; |
| | | if(Constants.equalsInteger(billList1.get(i).getCostType(),Constants.ONE)) { |
| | | billList2.get(i).setSortnum(num); |
| | | num++; |
| | | } |
| | | } |
| | | if(model.getId()!=null){ |
| | | ywContractBillMapper.insert(billList1); |
| | |
| | | BigDecimal totalFee = new BigDecimal(0); |
| | | DateCompare dateCompare = DateCompare.dayCompare(bill.getStartDate(),bill.getEndDate(),freeStart, freeEnd); |
| | | if(Constants.equalsInteger(d.getCircleType(),Constants.ZERO)){ |
| | | //0=元每平米天 |
| | | //0=元每平米天 账单金额=账单周期的天数*租赁面积*单价; |
| | | int days = dateCompare.getDay() ; |
| | | BigDecimal areas = getAreasNumBYRooms(model.getRoomList()); |
| | | totalFee = new BigDecimal(days).multiply(areas).multiply(Constants.formatBigdecimal(d.getPrice()));//总价格 |
| | | }else if(Constants.equalsInteger(d.getCircleType(),Constants.ONE)){ |
| | | //1=元每平米月 |
| | | //1=元每平米月 账单金额=账单周期的月数(开始日期计算自然月)*租赁面积*单价+不满一个月的天数*租赁面积*单价*12/365; |
| | | BigDecimal areas = getAreasNumBYRooms(model.getRoomList()); |
| | | BigDecimal month =dateCompare.getMonthFloat(); |
| | | totalFee = month.multiply(areas).multiply(Constants.formatBigdecimal(d.getPrice()));//总价格 |
| | | }else if(Constants.equalsInteger(d.getCircleType(),Constants.TWO)){ |
| | | //2=元每平米年 |
| | | //2=元每平米年 账单金额=账单周期的月数(开始日期计算自然月)*单价*面积/12+不满一个月的天数*租赁面积*单价/365; |
| | | BigDecimal areas = getAreasNumBYRooms(model.getRoomList()); |
| | | BigDecimal year = dateCompare.getYearFloat(); |
| | | totalFee = year.multiply(areas).multiply(Constants.formatBigdecimal(d.getPrice()));//总价格 |
| | | BigDecimal month = new BigDecimal(dateCompare.getMonth()); |
| | | totalFee = ((month.multiply(Constants.formatBigdecimal(d.getPrice())).divide(new BigDecimal(12),2, RoundingMode.HALF_UP)) |
| | | .add(new BigDecimal(dateCompare.getMonthDays()).multiply(Constants.formatBigdecimal(d.getPrice())).divide(new BigDecimal(365),2, RoundingMode.HALF_UP))) |
| | | .multiply(areas);//总价格 |
| | | }else if(Constants.equalsInteger(d.getCircleType(),Constants.THREE)){ |
| | | //3=元每天 |
| | | //3=元每天 账单金额=账单周期的天数*单价; |
| | | int days = dateCompare.getDay() ; |
| | | totalFee = new BigDecimal(days).multiply(Constants.formatBigdecimal(d.getPrice()));//总价格 |
| | | }else if(Constants.equalsInteger(d.getCircleType(),Constants.FOUR)){ |
| | | //4=元每月 |
| | | //4=元每月 账单金额=账单周期的月数(开始日期计算自然月)*单价+不满一个月的天数*单价*12/365 |
| | | BigDecimal month = dateCompare.getMonthFloat(); |
| | | totalFee = month.multiply(Constants.formatBigdecimal(d.getPrice()));//总价格 |
| | | }else if(Constants.equalsInteger(d.getCircleType(),Constants.FIVE)){ |
| | | //5=元每年 |
| | | BigDecimal year = dateCompare.getYearFloat(); |
| | | totalFee = year.multiply(Constants.formatBigdecimal(d.getPrice()));//总价格 |
| | | //5=元每年 账单金额=账单周期的月数(开始日期计算自然月)*单价*面积/12+不满一个月的天数*租赁面积*单价/365; |
| | | BigDecimal month = new BigDecimal(dateCompare.getMonth()); |
| | | totalFee =( month.multiply(Constants.formatBigdecimal(d.getPrice())).divide(new BigDecimal(12),2, RoundingMode.HALF_UP)) |
| | | .add(new BigDecimal(dateCompare.getMonthDays()).multiply(Constants.formatBigdecimal(d.getPrice())).divide(new BigDecimal(365),2, RoundingMode.HALF_UP));//总价格 |
| | | }else if(Constants.equalsInteger(d.getCircleType(),Constants.SIX)){ |
| | | //6=元每场 |
| | | //6=元每场 账单金额=单价;只有选择一次性付款时,才能选择该单价维度; |
| | | totalFee =Constants.formatBigdecimal(d.getPrice()); |
| | | } |
| | | if(Constants.equalsInteger(model.getRoundedUp(),Constants.ONE)){ |
| | |
| | | BigDecimal data= new BigDecimal(0); |
| | | if(roomList!=null){ |
| | | for(YwRoom r :roomList){ |
| | | data = data.add(Constants.formatBigdecimal(r.getArea())); |
| | | data = data.add(Constants.formatBigdecimal(r.getRentArea())); |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | model.setTotalArea(new BigDecimal(0)); |
| | | for(YwRoom r : rooms){ |
| | | model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getArea()))); |
| | | model.setTotalArea(model.getTotalArea().add(Constants.formatBigdecimal(r.getRentArea()))); |
| | | } |
| | | model.setRoomList(rooms); |
| | | YwCustomer customer = customerMapper.selectById(model.getRenterId()); |
| | |
| | | } |
| | | @Override |
| | | public YwContract findById(Integer id) { |
| | | |
| | | YwContract model =queryDetailInfoById(id); |
| | | //查询操作日志记录 |
| | | YwWorkorderLog log = new YwWorkorderLog(); |
| | | log.setJobId(model.getId()); |
| | | log.setIsdeleted(Constants.ZERO); |
| | | model.setLogList(ywWorkorderLogMapper.selectList(new QueryWrapper<YwWorkorderLog>(log) |
| | | .lambda() |
| | | .in(YwWorkorderLog::getObjType,Constants.YwLogType.CONTRACT_BACK.getKey() |
| | | ,Constants.YwLogType.CONTRACT_CREATE.getKey() |
| | | ,Constants.YwLogType.CONTRACT_UPDATE.getKey()) |
| | | .orderByAsc(YwWorkorderLog::getCreateDate))); |
| | | |
| | | //查询账单集合 |
| | | queryBillListByModel(model,new Date()); |
| | | return model; |
| | | } |
| | | private YwContract queryDetailInfoById(Integer id) { |
| | | MPJLambdaWrapper<YwContract> queryWrapper = new MPJLambdaWrapper<>(); |
| | | queryWrapper.selectAll(YwContract.class ) |
| | | .selectAs(Company::getName,YwContract::getCompanyName ) |
| | | .selectAs(SystemUser::getRealname,YwContract::getUserName ) |
| | | .selectAs(YwCustomer::getName,YwContract::getRenterName ) |
| | | .selectAs(YwProject::getName,YwContract::getProjectName ) |
| | | .select("t3.realname",YwContract::getCreatorName ) |
| | | .select("(select sum(r.area) from yw_contract_room cr left join yw_room r on r.id = cr.room_id where r.isdeleted=0 and cr.contract_id =t.id)",YwContract::getTotalArea ) |
| | | .leftJoin(Company.class,Company::getId,YwContract::getCompanyId) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getUserId) |
| | | .leftJoin(SystemUser.class,SystemUser::getId,YwContract::getCreator) |
| | | .leftJoin(YwProject.class,YwProject::getId,YwContract::getProjectId) |
| | | .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId) |
| | | .eq( YwContract::getId,id); |
| | | YwContract model = ywContractMapper.selectJoinOne(YwContract.class,queryWrapper); |
| | | if(model != null){ |
| | | queryWrapper.selectAll(YwContract.class) |
| | | .selectAs(Company::getName, YwContract::getCompanyName) |
| | | .selectAs(SystemUser::getRealname, YwContract::getUserName) |
| | | .selectAs(YwCustomer::getName, YwContract::getRenterName) |
| | | .selectAs(YwProject::getName, YwContract::getProjectName) |
| | | .select("t3.realname", YwContract::getCreatorName) |
| | | .select("(select sum(r.area) from yw_contract_room cr left join yw_room r on r.id = cr.room_id where r.isdeleted=0 and cr.contract_id =t.id)", YwContract::getTotalArea) |
| | | .leftJoin(Company.class, Company::getId, YwContract::getCompanyId) |
| | | .leftJoin(SystemUser.class, SystemUser::getId, YwContract::getUserId) |
| | | .leftJoin(SystemUser.class, SystemUser::getId, YwContract::getCreator) |
| | | .leftJoin(YwProject.class, YwProject::getId, YwContract::getProjectId) |
| | | .leftJoin(YwCustomer.class, YwCustomer::getId, YwContract::getRenterId) |
| | | .eq(YwContract::getId, id); |
| | | YwContract model = ywContractMapper.selectJoinOne(YwContract.class, queryWrapper); |
| | | if (model == null) { |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | //合同附件 |
| | | initFiles(model); |
| | | //查询房源信息数据 |
| | | MPJLambdaWrapper<YwRoom> rw = new MPJLambdaWrapper<>(); |
| | | rw.selectAll(YwRoom.class ) |
| | | .selectAs(YwProject::getName,YwRoom::getProjectName) |
| | | .selectAs(YwFloor::getName,YwRoom::getFloorName) |
| | | .selectAs(YwBuilding::getName,YwRoom::getBuildingName) |
| | | .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId) |
| | | .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId) |
| | | .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor) |
| | | .eq(YwRoom::getIsdeleted,Constants.ZERO) |
| | | .exists("(select a.id from yw_contract_room a where a.isdeleted=0 and a.type=0 and a.room_id=t.id and a.contract_id="+model.getId()+")"); |
| | | model.setRoomList(roomMapper.selectJoinList(YwRoom.class,rw)); |
| | | rw.selectAll(YwRoom.class) |
| | | .selectAs(YwProject::getName, YwRoom::getProjectName) |
| | | .selectAs(YwFloor::getName, YwRoom::getFloorName) |
| | | .selectAs(YwBuilding::getName, YwRoom::getBuildingName) |
| | | .leftJoin(YwProject.class, YwProject::getId, YwRoom::getProjectId) |
| | | .leftJoin(YwBuilding.class, YwBuilding::getId, YwRoom::getBuildingId) |
| | | .leftJoin(YwFloor.class, YwFloor::getId, YwRoom::getFloor) |
| | | .eq(YwRoom::getIsdeleted, Constants.ZERO) |
| | | .exists("(select a.id from yw_contract_room a where a.isdeleted=0 and a.type=0 and a.room_id=t.id and a.contract_id=" + model.getId() + ")"); |
| | | model.setRoomList(roomMapper.selectJoinList(YwRoom.class, rw)); |
| | | model.setWyFirstCircleStr(Constants.getUnitTypeByNum(model.getWyFirstCircle())); |
| | | model.setZlFirstCircleStr(Constants.getUnitTypeByNum(model.getZlFirstCircle())); |
| | | //查询租賃条款信息 |
| | | MPJLambdaWrapper<YwContractDetail> dw = new MPJLambdaWrapper<>(); |
| | | dw.selectAll(YwContractDetail.class ) |
| | | .eq(YwContractDetail::getIsdeleted,Constants.ZERO) |
| | | .eq(YwContractDetail::getContractId,model.getId()) |
| | | .in(YwContractDetail::getType,Constants.ZERO,Constants.TWO) |
| | | dw.selectAll(YwContractDetail.class) |
| | | .eq(YwContractDetail::getIsdeleted, Constants.ZERO) |
| | | .eq(YwContractDetail::getContractId, model.getId()) |
| | | .in(YwContractDetail::getType, Constants.ZERO, Constants.TWO) |
| | | .orderByAsc(YwContractDetail::getSortnum); |
| | | model.setZlDetailList(ywContractDetailMapper.selectJoinList(YwContractDetail.class,dw)); |
| | | model.setZlDetailList(ywContractDetailMapper.selectJoinList(YwContractDetail.class, dw)); |
| | | //查询物業条款信息 |
| | | dw = new MPJLambdaWrapper<>(); |
| | | dw.selectAll(YwContractDetail.class ) |
| | | .eq(YwContractDetail::getIsdeleted,Constants.ZERO) |
| | | .eq(YwContractDetail::getContractId,model.getId()) |
| | | .in(YwContractDetail::getType,Constants.ONE,Constants.THREE) |
| | | dw.selectAll(YwContractDetail.class) |
| | | .eq(YwContractDetail::getIsdeleted, Constants.ZERO) |
| | | .eq(YwContractDetail::getContractId, model.getId()) |
| | | .in(YwContractDetail::getType, Constants.ONE, Constants.THREE) |
| | | .orderByAsc(YwContractDetail::getSortnum); |
| | | model.setWyDetailList(ywContractDetailMapper.selectJoinList(YwContractDetail.class,dw)); |
| | | model.setWyDetailList(ywContractDetailMapper.selectJoinList(YwContractDetail.class, dw)); |
| | | |
| | | //查询操作日志记录 |
| | | YwWorkorderLog log = new YwWorkorderLog(); |
| | | log.setJobId(model.getId()); |
| | | log.setIsdeleted(Constants.ZERO); |
| | | model.setLogList(ywWorkorderLogMapper.selectList(new QueryWrapper<YwWorkorderLog>(log) |
| | | .lambda() |
| | | .in(YwWorkorderLog::getObjType,Constants.YwLogType.CONTRACT_BACK.getKey() |
| | | ,Constants.YwLogType.CONTRACT_CREATE.getKey() |
| | | ,Constants.YwLogType.CONTRACT_UPDATE.getKey()) |
| | | .orderByAsc(YwWorkorderLog::getCreateDate))); |
| | | |
| | | //查询账单集合 |
| | | |
| | | queryBillListByModel(model,new Date()); |
| | | } |
| | | return model; |
| | | } |
| | | @Override |
| | | public YwContract findForBills(YwContract model) { |
| | | queryBillListByModel(model,model.getBtDate()); |
| | | |
| | | @Override |
| | | public YwContract findForBills(YwContract param) { |
| | | YwContract model = queryDetailInfoById(param.getId()); |
| | | queryBillListByModel(model,param.getBtDate()); |
| | | return model; |
| | | |
| | | } |
| | | private void queryBillListByModel(YwContract model,Date date) { |
| | | if(date ==null){ |
| | | date = new Date(); |
| | | } |
| | | //查询账单集合 |
| | | model.setBillList(ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>() |
| | | .selectAll(YwContractBill.class ) |
| | |
| | | .eq( YwContractBill::getContractId,model.getId()) |
| | | .eq(YwContractBill::getIsdeleted,Constants.ZERO) |
| | | .orderByAsc(YwContractBill::getSortnum,YwContractBill::getCreateDate))); |
| | | |
| | | for (YwContractBill ywContractBill:model.getBillList()) { |
| | | ywContractBill.setNeedReceivableFee(ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())); |
| | | ywContractBill.setNeedReceivableFee(ywContractBill.getReceivableFee()); |
| | | // ywContractBill.setNeedReceivableFee(ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())); |
| | | } |
| | | model.setCanBackRentBills(new ArrayList<>()); |
| | | long nowStart = Utils.Date.getStart(date).getTime(); |
| | | long nowEnd = Utils.Date.getEnd(date).getTime(); |
| | | long nowEnd = Utils.Date.getDayEnd(date).getTime(); |
| | | if(model.getBillList()!=null && model.getBillList().size()>0){ |
| | | for(YwContractBill bill: model.getBillList()){ |
| | | //付款状态:0=待收款;1=已结清;2=部分结清;3=待付款;4=待退款;5=已关闭 |
| | |
| | | continue; |
| | | } |
| | | model.getCanBackRentBills().add(bill); |
| | | |
| | | }else if(Constants.equalsInteger(bill.getPayStatus(),Constants.ONE) ){ |
| | | if(bill.getEndDate().getTime()<nowStart){ |
| | | //如果已结清,账单直接关闭 |
| | |
| | | model.getCanBackRentBills().add(bill); |
| | | } |
| | | } |
| | | for(YwContractBill bill : model.getCanBackRentBills()){ |
| | | YwContractDetail detail = null; |
| | | if(Constants.equalsInteger(bill.getCostType(),Constants.ZERO)){ |
| | | detail = getDetailByIdFromList(bill.getDetailId(),model.getZlDetailList()); |
| | | if(detail!=null&& bill.getStartDate()!=null && bill.getEndDate()!=null |
| | | &&(date.getTime() <= bill.getStartDate().getTime() || (date.getTime() >= bill.getStartDate().getTime() && date.getTime()<= bill.getEndDate().getTime()))){ |
| | | Date odate = bill.getEndDate(); |
| | | bill.setEndDate(date); |
| | | BigDecimal actFee = getTotalFeeByStartEnd(model,detail,bill,model.getZlFreeStartDate(),model.getZlFreeEndDate()); |
| | | bill.setEndDate(odate); |
| | | bill.setNeedReceivableFee(actFee); |
| | | } |
| | | }else if(Constants.equalsInteger(bill.getCostType(),Constants.ONE)){ |
| | | detail = getDetailByIdFromList(bill.getDetailId(),model.getWyDetailList()); |
| | | if(detail!=null&& bill.getStartDate()!=null && bill.getEndDate()!=null |
| | | &&(date.getTime() <= bill.getStartDate().getTime() || (date.getTime() >= bill.getStartDate().getTime() && date.getTime()<= bill.getEndDate().getTime()))){ |
| | | Date odate = bill.getEndDate(); |
| | | bill.setEndDate(date); |
| | | BigDecimal actFee = getTotalFeeByStartEnd(model,detail,bill,model.getWyFreeStartDate(),model.getWyFreeEndDate()); |
| | | bill.setEndDate(odate); |
| | | bill.setNeedReceivableFee(actFee); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | private YwContractDetail getDetailByIdFromList(Integer detailId, List<YwContractDetail> list) { |
| | | if(list!=null){ |
| | | for(YwContractDetail d : list){ |
| | | if(Constants.equalsInteger(detailId,d.getId())){ |
| | | return d; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | |
| | | queryWrapper.ge(YwContract::getWyFreeEndDate, Utils.Date.getStart(pageWrap.getModel().getWyFreeEndDate())); |
| | | queryWrapper.le(YwContract::getWyFreeEndDate, Utils.Date.getEnd(pageWrap.getModel().getWyFreeEndDate())); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | if (pageWrap.getModel().getZlTotalFee() != null) { |
| | | queryWrapper.eq(YwContract::getZlTotalFee, pageWrap.getModel().getZlTotalFee()); |
| | | } |
| | |
| | | .like(StringUtils.isNotBlank(model.getTitle()),YwPatrolScheme::getTitle,model.getTitle()) |
| | | //查询有时段交集的数据 |
| | | .apply(Objects.nonNull(model.getStartDate())&&Objects.nonNull(model.getEndDate()), |
| | | " t.START_DATE <= '"+Utils.Date.getStart(pageWrap.getModel().getEndDate())+"' and t.END_DATE >= '"+Utils.Date.getStart(pageWrap.getModel().getStartDate())+"' " |
| | | " t.START_DATE <= '"+pageWrap.getModel().getEndDate()+"' and t.END_DATE >= '"+pageWrap.getModel().getStartDate()+"' " |
| | | ) |
| | | // .ge(Objects.nonNull(model.getStartDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getStartDate())) |
| | | // .le(Objects.nonNull(model.getEndDate()),YwDeviceRecord::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getEndDate())) |
| | |
| | | .like(YwRoom::getRoomNum,pageWrap.getModel().getRoomName()) |
| | | ); |
| | | } |
| | | |
| | | if (pageWrap.getModel().getCreator() != null) { |
| | | queryWrapper.eq(YwWorkorder::getCreator, pageWrap.getModel().getCreator()); |
| | | } |