Merge branch 'master' of http://139.186.142.91:10010/r/productDev/funingyunwei
| | |
| | | // è¡¨åæ°æ® |
| | | form: { |
| | | id: null, |
| | | type: '2', |
| | | type: '1', |
| | | name: '', |
| | | parentId: null, |
| | | disable: false, |
| | |
| | | |
| | | const router = new VueRouter({ |
| | | // + (process.env.VUE_APP_ROUTER_MODE === 'hash' ? '#' : '') |
| | | base: process.env.VUE_APP_CONTEXT_PATH, |
| | | mode: process.env.VUE_APP_ROUTER_MODE, |
| | | // base: process.env.VUE_APP_CONTEXT_PATH, |
| | | mode: 'hash', |
| | | routes: [ |
| | | // ç»å½ |
| | | { |
| | |
| | | loading: false, |
| | | sorting: false, |
| | | searchForm: { |
| | | type: 2 |
| | | type: 1 |
| | | }, |
| | | list: [], |
| | | total: 0 |
| | |
| | | }, |
| | | // è·åç»ç»æ |
| | | getfindCompanyTreePage () { |
| | | fetchList() |
| | | fetchList(1) |
| | | .then(res => { |
| | | if (res && res.length > 0) { |
| | | res[0].fsStatus = 1 |
| | |
| | | <el-button type="text" size="medium" @click="addZl">å¢å </el-button> |
| | | </div> |
| | | <div class="list"> |
| | | <template v-for="(item, index) in form.zlDetailList" :key="index"> |
| | | <div v-for="(item, index) in form.zlDetailList" :key="index"> |
| | | <el-form-item label="èµ·å§æ¥æ" prop="time"> |
| | | <el-date-picker type="daterange" v-model="item.time" @change="getDate1($event, index)" value-format="yyyy-MM-dd" placeholder="è¯·éæ©" /> |
| | | </el-form-item> |
| | |
| | | <el-link :underline="false" type="danger" @click="deleZl(index)" style="margin-left: 20px; flex-shrink: 0;">å é¤</el-link> |
| | | </div> |
| | | </el-form-item> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | |
| | | <el-button type="text" size="medium" @click="addWy">å¢å </el-button> |
| | | </div> |
| | | <div class="list"> |
| | | <template v-for="(item, index) in form.wyDetailList" :key="index"> |
| | | <div v-for="(item, index) in form.wyDetailList" :key="index"> |
| | | <el-form-item label="èµ·å§æ¥æ" prop="time"> |
| | | <el-date-picker type="daterange" v-model="item.time" @change="getDate2($event, index)" value-format="yyyy-MM-dd" placeholder="è¯·éæ©" /> |
| | | </el-form-item> |
| | |
| | | <el-link :underline="false" type="danger" @click="deleWy(index)" style="margin-left: 20px; flex-shrink: 0;">å é¤</el-link> |
| | | </div> |
| | | </el-form-item> |
| | | </template> |
| | | </div> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | |
| | | <el-table-column prop="feeArea" label="计费é¢ç§¯(m²)" min-width="80px"></el-table-column> |
| | | <el-table-column prop="" label="ç§èµç¶æ" min-width="80px"> |
| | | <template v-slot="{row}"> |
| | | <span v-if="row.leaseStatus == 0">å¾
ç§èµ</span> |
| | | <span v-if="row.leaseStatus == 1">å·²ç§èµ</span> |
| | | <span v-if="row.leaseStatus == 2">æªå¼å¯ç§èµ</span> |
| | | <span v-if="row.leaseStatus == 0">å¾
ç§</span> |
| | | <span v-else-if="row.leaseStatus == 1">å·²ç§</span> |
| | | <span v-else>-</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="isInvestment" label="æåç¶æ" min-width="60px"> |
| | |
| | | realname: param.name,
|
| | | id: param.id
|
| | | }).then(res => {
|
| | | this.memberList = res.data || []
|
| | | this.memberList = [{id: '', realname: 'å
¨é¨'}, ...res.data]
|
| | | })
|
| | | }
|
| | | }
|
| | |
| | | },
|
| | | getpeo() {
|
| | | findInternalList().then(res => {
|
| | | this.columns = [res.data]
|
| | | this.columns = [...res.data]
|
| | | })
|
| | | },
|
| | | confirm(e) { |
| | |
| | | <template>
|
| | | <view class="main_app">
|
| | | <!-- <view class="head_wrap">
|
| | | <!-- <view class="head_wrap">
|
| | | <view class="search_wrap">
|
| | | <image class="mr12 search" src="@/static/home/ic_search@2x.png" mode="widthFix"></image>
|
| | | <input v-model="param.keyword" @confirm="getList()" type="text" placeholder="æç´¢æ¥¼å®/æ¿é´åç§°" placeholder-class="placeholder9" />
|
| | | </view>
|
| | | </view> --> |
| | | <!-- --> |
| | | <view class="tabs"> |
| | | <view class="tab" :class="{active: param.queryStatus == '0,1'}" @click="tabsClick('0,1')"> |
| | | <text>å¾
å¤ç</text> |
| | | <text class="border"></text> |
| | | </view> |
| | | <view class="tab" :class="{active: param.queryStatus == 3}" @click="tabsClick(3)"> |
| | | <text>å·²å¤ç</text> |
| | | <text class="border"></text> |
| | | </view> |
| | | <view class="tab" @click="allClick"> |
| | | <view class="name"> |
| | | <image v-if="selectAll" class="icon" src="@/static/checked.png" mode=""></image> |
| | | <image v-else class="icon" src="@/static/check.png" mode=""></image> |
| | | <text>æ¥çå
¨é¨</text> |
| | | </view> |
| | | <text class="border"></text> |
| | | </view> |
| | | </view> -->
|
| | | <!-- -->
|
| | | <view class="tabs">
|
| | | <view class="tab" :class="{active: param.queryStatus == '0,1'}" @click="tabsClick('0,1')">
|
| | | <text>å¾
å¤ç</text>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | <view class="tab" :class="{active: param.queryStatus == 3}" @click="tabsClick(3)">
|
| | | <text>å·²å¤ç</text>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | <view class="tab" @click="allClick">
|
| | | <view class="name">
|
| | | <image v-if="selectAll" class="icon" src="@/static/checked.png" mode=""></image>
|
| | | <image v-else class="icon" src="@/static/check.png" mode=""></image>
|
| | | <text>æ¥çå
¨é¨</text>
|
| | | </view>
|
| | | <text class="border"></text>
|
| | | </view>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view class="list">
|
| | | <view class="item" v-for="item in list" @click="itemClick(item)">
|
| | | <image v-if="item.status == 0 || item.status == 1" src="@/static/side/xunjianed.png" class="icon"></image> |
| | | <image v-else src="@/static/side/xunjian.png" class="icon"></image>
|
| | | <view class="content">
|
| | | <view class="name_wrap line">
|
| | | <view class="name">{{item.planTitle}}</view>
|
| | | <view class="status" :class="{ |
| | | green: item.status == 1, |
| | | red: item.status == 2, |
| | | gray: item.status == 3 || item.status == 4 |
| | | }">{{statusM[item.status]}}</view>
|
| | | </view>
|
| | | <view class="line" v-if="item.startDate">任塿¥æï¼{{ item.startDate.slice(0, 11) }}</view>
|
| | | <view class="line">æ§è¡æ¶é´ï¼{{ item.startDate.slice(11, 16) }} è³ {{ item.endDate.slice(11, 16) }}</view> |
| | | <view class="line"> |
| | | <view>宿æ
åµï¼{{item.finishNum || 0}}/{{item.patrolNum}}</view> |
| | | <view class="btn"> |
| | | <image src="@/static/side/ic_saoma@2x.png" class="saoma" mode=""></image> |
| | | <view>æ«ç å·¡æ£</view> |
| | | </view> |
| | | <scroll-view scroll-y="true" class="scroll_Y" @scrolltolower="scrolltolower">
|
| | | <view class="list">
|
| | | <view class="item" v-for="item in list" @click="itemClick(item)">
|
| | | <image v-if="item.status == 0 || item.status == 1" src="@/static/side/xunjianed.png" class="icon"></image>
|
| | | <image v-else src="@/static/side/xunjian.png" class="icon"></image>
|
| | | <view class="content">
|
| | | <view class="name_wrap line">
|
| | | <view class="name">{{item.planTitle}}</view>
|
| | | <view class="status" :class="{
|
| | | green: item.status == 1,
|
| | | red: item.status == 2,
|
| | | gray: item.status == 3 || item.status == 4
|
| | | }">{{statusM[item.status]}}</view>
|
| | | </view>
|
| | | <view class="line" v-if="item.startDate">任塿¥æï¼{{ item.startDate.slice(0, 11) }}</view>
|
| | | <view class="line">æ§è¡æ¶é´ï¼{{ item.startDate.slice(11, 16) }} è³ {{ item.endDate.slice(11, 16) }}</view>
|
| | | <view class="line">
|
| | | <view>宿æ
åµï¼{{item.finishNum || 0}}/{{item.patrolNum}}</view>
|
| | | <view class="btn">
|
| | | <image src="@/static/side/ic_saoma@2x.png" class="saoma" mode=""></image>
|
| | | <view>æ«ç å·¡æ£</view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </view>
|
| | | </scroll-view>
|
| | |
|
| | | <!-- -->
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script> |
| | | import { ywPatrolTaskPost } from '@/api'
|
| | | <script>
|
| | | import {
|
| | | ywPatrolTaskPost
|
| | | } from '@/api'
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | param: { |
| | | queryStatus: '0,1' |
| | | }, |
| | | list: [], |
| | | activeTab: 0, |
| | | selectAll: false, |
| | | page: 1, |
| | | |
| | | statusM: { |
| | | 0: 'å¾
å¼å§', |
| | | 1: 'è¿è¡ä¸', |
| | | 2: 'å·²è¶
æ', |
| | | 3: '已宿', |
| | | 4: '已忶', |
| | | param: {
|
| | | queryStatus: '0,1'
|
| | | },
|
| | | list: [],
|
| | | activeTab: 0,
|
| | | selectAll: false,
|
| | | page: 1,
|
| | |
|
| | | statusM: {
|
| | | 0: 'å¾
å¼å§',
|
| | | 1: 'è¿è¡ä¸',
|
| | | 2: 'å·²è¶
æ',
|
| | | 3: '已宿',
|
| | | 4: '已忶',
|
| | | }
|
| | | };
|
| | | }, |
| | | onLoad() { |
| | | this.getList() |
| | | }, |
| | | onReachBottom() { |
| | | const {total,list} = this |
| | | if (list.length < total) { |
| | | this.page = this.page + 1 |
| | | this.getList() |
| | | } else { |
| | | this.showToast('ææ æ´å¤æ°æ®') |
| | | } |
| | | },
|
| | | methods: {
|
| | | tabsClick(val) { |
| | | this.param.status = val |
| | | this.page = 1 |
| | | this.list = [] |
| | | this.getList() |
| | | }, |
| | | allClick() { |
| | | this.selectAll = !this.selectAll |
| | | this.list = [] |
| | | this.page = 1 |
| | | this.getList() |
| | | }, |
| | | itemClick(item) { |
| | | uni.navigateTo({ |
| | | url: '/pages/polling/detail?id=' + item.id |
| | | }) |
| | | }, |
| | | getList() { |
| | | const { page, param, selectAll } = this |
| | | ywPatrolTaskPost({ |
| | | model: {...param, dealUserId: selectAll ? '' : uni.getStorageSync('userInfo').id, }, |
| | | page, |
| | | capacity: 10 |
| | | }).then(res => { |
| | | this.list = [...this.list, ...res.data.records] |
| | | this.total = res.data.total |
| | | }) |
| | | onLoad() {
|
| | | this.getList()
|
| | | },
|
| | | methods: { |
| | | scrolltolower() { |
| | | const { |
| | | total, |
| | | list |
| | | } = this |
| | | if (list.length < total) { |
| | | this.page = this.page + 1 |
| | | this.getList() |
| | | } else { |
| | | this.showToast('ææ æ´å¤æ°æ®') |
| | | } |
| | | },
|
| | | tabsClick(val) {
|
| | | this.param.queryStatus = val
|
| | | this.page = 1
|
| | | this.list = []
|
| | | this.getList()
|
| | | },
|
| | | allClick() {
|
| | | this.selectAll = !this.selectAll
|
| | | this.list = []
|
| | | this.page = 1
|
| | | this.getList()
|
| | | },
|
| | | itemClick(item) {
|
| | | uni.navigateTo({
|
| | | url: '/pages/polling/detail?id=' + item.id
|
| | | })
|
| | | },
|
| | | getList() {
|
| | | const {
|
| | | page,
|
| | | param,
|
| | | selectAll
|
| | | } = this
|
| | | ywPatrolTaskPost({
|
| | | model: {
|
| | | ...param,
|
| | | dealUserId: selectAll ? '' : uni.getStorageSync('userInfo').id,
|
| | | },
|
| | | page,
|
| | | capacity: 10
|
| | | }).then(res => {
|
| | | this.list = [...this.list, ...res.data.records]
|
| | | this.total = res.data.total
|
| | | })
|
| | | }
|
| | | }
|
| | | }
|
| | | </script>
|
| | |
|
| | | <style lang="scss" scoped> |
| | | .main_app{ |
| | | padding: 0 30rpx; |
| | | } |
| | | .tabs{ |
| | | display: flex; |
| | | width: 750rpx; |
| | | margin: 12rpx -30rpx 0; |
| | | border-bottom: 1rpx solid #E5E5E5; |
| | | .tab{ |
| | | font-size: 30rpx; |
| | | color: #666666; |
| | | flex: 1; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: flex-end; |
| | | height: 88rpx; |
| | | .name{ |
| | | display: flex; |
| | | align-items: center; |
| | | } |
| | | .icon{ |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | margin-right: 10rpx; |
| | | } |
| | | .border{ |
| | | width: 54rpx; |
| | | height: 6rpx; |
| | | background-color: #fff; |
| | | border-radius: 3rpx; |
| | | margin-top: 24rpx; |
| | | } |
| | | } |
| | | .active{ |
| | | font-weight: 600; |
| | | font-size: 32rpx; |
| | | color: #222222; |
| | | .border{ |
| | | background-color: $primaryColor; |
| | | } |
| | | |
| | | } |
| | | |
| | | <style lang="scss" scoped>
|
| | | .main_app {
|
| | | padding: 0 30rpx;
|
| | | }
|
| | |
|
| | | .tabs {
|
| | | display: flex;
|
| | | width: 750rpx;
|
| | | margin: 12rpx -30rpx 0;
|
| | | border-bottom: 1rpx solid #E5E5E5;
|
| | |
|
| | | .tab {
|
| | | font-size: 30rpx;
|
| | | color: #666666;
|
| | | flex: 1;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | align-items: center;
|
| | | justify-content: flex-end;
|
| | | height: 88rpx;
|
| | |
|
| | | .name {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | }
|
| | |
|
| | | .icon {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | margin-right: 10rpx;
|
| | | }
|
| | |
|
| | | .border {
|
| | | width: 54rpx;
|
| | | height: 6rpx;
|
| | | background-color: #fff;
|
| | | border-radius: 3rpx;
|
| | | margin-top: 24rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | .active {
|
| | | font-weight: 600;
|
| | | font-size: 32rpx;
|
| | | color: #222222;
|
| | |
|
| | | .border {
|
| | | background-color: $primaryColor;
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | .head_wrap {
|
| | | display: flex;
|
| | | align-items: center;
|
| | |
| | | background: #F7F7F7;
|
| | | border-radius: 38rpx;
|
| | | padding-left: 30rpx;
|
| | | input{ |
| | | flex: 1; |
| | |
|
| | | input {
|
| | | flex: 1;
|
| | | }
|
| | |
|
| | | .search {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | |
| | |
|
| | | }
|
| | |
|
| | | .scroll_Y {
|
| | | height: calc(100vh - 230rpx);
|
| | | }
|
| | |
|
| | | .list {
|
| | | .item {
|
| | | display: flex;
|
| | | // height: 290rpx; |
| | | padding: 30rpx 0; |
| | | // height: 290rpx;
|
| | | padding: 30rpx 0;
|
| | | border-bottom: 2rpx solid #E5E5E5;
|
| | | &:nth-last-child(1){ |
| | | border: none; |
| | | }
|
| | | .icon {
|
| | | width: 80rpx;
|
| | | height: 80rpx; |
| | | height: 80rpx;
|
| | | margin-right: 24rpx;
|
| | | }
|
| | |
|
| | | .content {
|
| | | flex: 1; |
| | | color: #666666; |
| | | display: flex; |
| | | flex-direction: column; |
| | | justify-content: space-between; |
| | | .line{ |
| | | margin-bottom: 20rpx; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | .btn{ |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | width: 180rpx; |
| | | height: 60rpx; |
| | | background: $primaryColor; |
| | | color: #fff; |
| | | font-size: 26rpx; |
| | | box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0,104,255,0.3); |
| | | border-radius: 30rpx; |
| | | .saoma{ |
| | | width: 28rpx; |
| | | height: 28rpx; |
| | | margin-right: 8rpx; |
| | | } |
| | | } |
| | | &:nth-last-child(1){ |
| | | margin-bottom: 0; |
| | | } |
| | | } |
| | | .name_wrap{ |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | .name{ |
| | | display: flex; |
| | | align-items: flex-end; |
| | | font-weight: 600; |
| | | font-size: 34rpx; |
| | | color: #222222; |
| | | } |
| | | .status{ |
| | | color: $primaryColor; |
| | | } |
| | | .green{ |
| | | color: #0ADE79; |
| | | } |
| | | .gray{ |
| | | color: #999999; |
| | | } |
| | | flex: 1;
|
| | | color: #666666;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | justify-content: space-between;
|
| | |
|
| | | .line {
|
| | | margin-bottom: 20rpx;
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | |
|
| | | .btn {
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | width: 180rpx;
|
| | | height: 60rpx;
|
| | | background: $primaryColor;
|
| | | color: #fff;
|
| | | font-size: 26rpx;
|
| | | box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(0, 104, 255, 0.3);
|
| | | border-radius: 30rpx;
|
| | |
|
| | | .saoma {
|
| | | width: 28rpx;
|
| | | height: 28rpx;
|
| | | margin-right: 8rpx;
|
| | | }
|
| | | }
|
| | |
|
| | | &:nth-last-child(1) {
|
| | | margin-bottom: 0;
|
| | | }
|
| | | }
|
| | |
|
| | | .name_wrap {
|
| | | display: flex;
|
| | | justify-content: space-between;
|
| | | align-items: center;
|
| | |
|
| | | .name {
|
| | | display: flex;
|
| | | align-items: flex-end;
|
| | | font-weight: 600;
|
| | | font-size: 34rpx;
|
| | | color: #222222;
|
| | | }
|
| | |
|
| | | .status {
|
| | | color: $primaryColor;
|
| | | }
|
| | |
|
| | | .green {
|
| | | color: #0ADE79;
|
| | | }
|
| | |
|
| | | .gray {
|
| | | color: #999999;
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | <u-icon name="arrow-right" color="#999999" size="15"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="item">
|
| | | <view class="item" v-if="param.areaType == 0">
|
| | | <view class="la">ä¸é¨æ¶é´</view>
|
| | | <view class="line sel_wrap" @click="showTime = true">
|
| | | <view class="left" :class="param.getDate ? '' : 'placeholder9'">{{ param.getDate ? param.getDate : 'è¯·éæ©' }}
|
| | |
| | | <view class="line">ä½ç½®ç±»åï¼{{item.areaType == '0' ? '室å
è£
ä¿®' : 'å
Œ
񆧆'}}</view>
|
| | | <view class="line">å·¥ååç±»ï¼{{item.categoryName}}</view>
|
| | | <view class="line">䏿¥æ¶é´ï¼{{item.createDate}}</view>
|
| | | <view class="line">ä¸é¨æ¶é´ï¼{{item.getDate}}</view>
|
| | | <view class="line" v-if="item.getDate">ä¸é¨æ¶é´ï¼{{item.getDate}}</view>
|
| | | </view>
|
| | | </view>
|
| | | <view v-if="list.length == 0" class="empty_wrap">
|
| | |
| | | * 以年为åä½ç¸å·®ä¸ºï¼6å¹´ |
| | | * 以æä¸ºåä½ç¸å·®ä¸ºï¼73个æ |
| | | * 以æ¥ä¸ºåä½ç¸å·®ä¸ºï¼2220天 |
| | | * @param fromDate |
| | | * @param toDate |
| | | * @param toDateOrigin |
| | | * @return |
| | | */ |
| | | public static DateCompare dayCompare(Date fromDate,Date toDate,Date freeStart,Date freeEnd){ |
| | | public static DateCompare dayCompare(Date fromDateOrigin,Date toDateOrigin,Date freeStart,Date freeEnd){ |
| | | //å¼å§æ¶é´å¾å延伸ï¼é¤å»æææ¶æ |
| | | fromDate = DateUtil.addDaysToDate(fromDate,getIntersectingDays(fromDate,DateUtil.addDaysToDate(toDate,1),freeStart,DateUtil.addDaysToDate(freeEnd,1))); |
| | | if(toDate.getTime()< fromDate.getTime()){ |
| | | Date fromDate = DateUtil.addDaysToDate(fromDateOrigin,getIntersectingDays(fromDateOrigin,DateUtil.addDaysToDate(toDateOrigin,1),freeStart,DateUtil.addDaysToDate(freeEnd,1))); |
| | | if(toDateOrigin.getTime()< fromDate.getTime()){ |
| | | return DateCompare.builder().day(0).month(0).year(0).yearFloat(new BigDecimal(0)).monthFloat(new BigDecimal(0)).build(); |
| | | } |
| | | toDate = DateUtil.addDaysToDate(toDate,1);//å
嫿ªæ¢æ¥æ |
| | | Date toDate =DateUtil.addDaysToDate(toDateOrigin, 1); |
| | | // toDate = DateUtil.addDaysToDate(toDate,1);//å
嫿ªæ¢æ¥æ |
| | | Calendar from = Calendar.getInstance(); |
| | | from.setTime(fromDate); |
| | | Calendar to = Calendar.getInstance(); |
| | |
| | | BigDecimal yearFloat = new BigDecimal(year) ; |
| | | BigDecimal monthFloat = new BigDecimal(month) ; |
| | | |
| | | int yearDays = day - (DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate)+1); |
| | | int yearDays = day - (DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate)); |
| | | if(yearDays!=0){ |
| | | if(yearDays <0){ |
| | | year = year-1; |
| | |
| | | } |
| | | yearFloat = yearFloat.add(new BigDecimal(1.0*yearDays).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP)); |
| | | } |
| | | int monthDays = day - (DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate)+1) ; |
| | | int monthDays = day - (DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate)) ; |
| | | if(monthDays!=0){ |
| | | if(monthDays <0){ |
| | | month = month-1; |
| | |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | DateCompare dateCompare = DateCompare.monthYearCompare(DateUtil.getDateFromString("2024-12-02 00:00:00"),DateUtil.getDateByString("2025-01-02 00:00:00") ); |
| | | DateCompare dateCompare = DateCompare.monthYearCompare(DateUtil.getDateFromString("2025-06-03 00:00:00"),DateUtil.getDateByString("2025-09-02 00:00:00") ); |
| | | System.out.println(dateCompare.day); |
| | | System.out.println(dateCompare.monthDays); |
| | | System.out.println(dateCompare.month); |
| | |
| | | System.out.println(dateCompare.year); |
| | | System.out.println(dateCompare.yearFloat); |
| | | } |
| | | public static DateCompare monthYearCompare(Date fromDate,Date toDate ){ |
| | | public static DateCompare monthYearCompare(Date fromDate,Date toDateOrigin ){ |
| | | //å¼å§æ¶é´å¾å延伸ï¼é¤å»æææ¶æ |
| | | toDate =DateUtil.addDaysToDate(toDate, 1); |
| | | Date toDate =DateUtil.addDaysToDate(toDateOrigin, 1); |
| | | Calendar from = Calendar.getInstance(); |
| | | from.setTime(fromDate); |
| | | Calendar to = Calendar.getInstance(); |
| | |
| | | BigDecimal yearFloat = new BigDecimal(year) ; |
| | | BigDecimal monthFloat = new BigDecimal(month) ; |
| | | |
| | | int yearDays = day - (DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate)+1); |
| | | int yearDays = day - (DateUtil.daysBetweenDates(DateUtil.addYearToDate(fromDate,year),fromDate)); |
| | | if(yearDays!=0){ |
| | | if(yearDays <0){ |
| | | year = year-1; |
| | |
| | | } |
| | | yearFloat = yearFloat.add(new BigDecimal(1.0*yearDays).divide(new BigDecimal(365.0), 15,RoundingMode.HALF_UP)); |
| | | } |
| | | int monthDays = day - (DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate)+1) ; |
| | | int monthDays = day - (DateUtil.daysBetweenDates(DateUtil.addMonthToDate(fromDate,month),fromDate)) ; |
| | | if(monthDays!=0){ |
| | | if(monthDays <0){ |
| | | month = month-1; |
| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.dao.business.dto.DataDTO; |
| | | import com.doumee.dao.business.model.YwProject; |
| | | import com.doumee.dao.business.model.YwRoom; |
| | | import com.doumee.dao.business.vo.ProjectDataVO; |
| | |
| | | @ApiOperation("é¡¹ç®æ ") |
| | | @PostMapping("/tree") |
| | | @CloudRequiredPermission("business:ywproject:query") |
| | | public ApiResponse<List<ProjectDataVO>> tree (@RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(ywProjectService.projectTree()); |
| | | public ApiResponse<List<ProjectDataVO>> tree (@RequestBody DataDTO dataDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { |
| | | return ApiResponse.success(ywProjectService.projectTree(dataDTO)); |
| | | } |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.doumee.dao.business.dto; |
| | | |
| | | import com.doumee.core.model.LoginUserInfo; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * Created by IntelliJ IDEA. |
| | | * |
| | | * @Author : Rk |
| | | * @create 2024/5/20 14:54 |
| | | */ |
| | | @Data |
| | | @ApiModel("æ¥ææ¥è¯¢ç±»") |
| | | public class DataDTO { |
| | | |
| | | @ApiModelProperty(value = "项ç®ä¸»é®") |
| | | private Integer projectId; |
| | | |
| | | @ApiModelProperty(value = "å¼å§æ¥æ: yyyy-MM-dd") |
| | | private String startDate; |
| | | |
| | | @ApiModelProperty(value = "ç»ææ¥æ: yyyy-MM-dd") |
| | | private String endDate; |
| | | |
| | | } |
| | |
| | | import com.doumee.core.model.LoginUserInfo; |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.dao.business.dto.DataDTO; |
| | | import com.doumee.dao.business.model.YwProject; |
| | | import com.doumee.dao.business.vo.ProjectDataVO; |
| | | |
| | |
| | | long count(YwProject ywProject); |
| | | |
| | | |
| | | List<ProjectDataVO> projectTree(); |
| | | List<ProjectDataVO> projectTree(DataDTO dataDTO); |
| | | } |
| | |
| | | ){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | if(StringUtils.isNotBlank(member.getEmail())&&!Constants.validEmail(member.getEmail())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"è¯·å¡«åæ£ç¡®çemail"); |
| | | } |
| | | LoginUserInfo loginUserInfo = member.getLoginUserInfo(); |
| | | member.setCreator(loginUserInfo.getId()); |
| | | member.setCreateDate(new Date()); |
| | |
| | | @Override |
| | | public List<Member> ywList(Member member) { |
| | | List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>() |
| | | .lambda().eq(Member::getIsdeleted,Constants.ZERO) |
| | | .lambda() |
| | | .eq(Member::getIsdeleted,Constants.ZERO) |
| | | .eq(Member::getStatus,Constants.ZERO) |
| | | .eq(Objects.nonNull(member.getCustomerId()),Member::getCustomerId,member.getCustomerId()) |
| | | .eq(Member::getType,Constants.memberType.customer) |
| | | ); |
| | | return memberList; |
| | |
| | | ywContractBill.setEndDate(ywContractBill.getPlanPayDate()); |
| | | } |
| | | //æ¥è¯¢ååä¸çæå¤§çåºå· |
| | | List<YwContractBill> ywContractBillList = ywContractBillMapper.selectList(new QueryWrapper<YwContractBill>().lambda().eq(YwContractBill::getContractId,ywContract.getId()).orderByDesc(YwContractBill::getId)); |
| | | List<YwContractBill> ywContractBillList = ywContractBillMapper.selectList(new QueryWrapper<YwContractBill>() |
| | | .lambda().eq(YwContractBill::getContractId,ywContract.getId()) |
| | | .in(YwContractBill::getCostType,Constants.ZERO,Constants.SIX,Constants.FOUR,Constants.FIVE,7) |
| | | .orderByDesc(YwContractBill::getId)); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractBillList)){ |
| | | ywContractBill.setSortnum(ywContractBillList.size() + 1 ); |
| | | }else{ |
| | | ywContractBill.setSortnum(Constants.ZERO); |
| | | ywContractBill.setSortnum(0); |
| | | } |
| | | ywContractBillMapper.insert(ywContractBill); |
| | | |
| | |
| | | } |
| | | |
| | | private void dealRoomsForContract(YwContract model) { |
| | | this.dealRoomsValid(model); |
| | | List<YwContractRoom> list = new ArrayList<>(); |
| | | for(YwRoom room :model.getRoomList()){ |
| | | YwContractRoom t = new YwContractRoom(); |
| | |
| | | } |
| | | ywContractRoomMapper.insert(list); |
| | | } |
| | | |
| | | private void dealRoomsValid(YwContract model){ |
| | | List<Integer> roomIds = model.getRoomList().stream().map(i->i.getId()).collect(Collectors.toList()); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(roomIds)){ |
| | | if(ywContractMapper.selectJoinCount(new MPJLambdaWrapper<YwContract>() |
| | | .leftJoin(YwContractRoom.class,YwContractRoom::getContractId,YwContract::getId) |
| | | .eq(YwContractRoom::getType,Constants.ZERO) |
| | | .in(YwContractRoom::getRoomId,roomIds) |
| | | .in(YwContract::getStatus,Constants.ZERO,Constants.ONE,Constants.TWO) |
| | | .apply(" (" + |
| | | " ( t.START_DATE < '"+DateUtil.getFomartDate(model.getEndDate(),"yyyy-MM-dd HH:mm:ss")+"' and t.END_DATE > '"+DateUtil.getFomartDate(model.getStartDate(),"yyyy-MM-dd HH:mm:ss")+"' ) " + |
| | | "or " + |
| | | " ( t.START_DATE < '"+DateUtil.getFomartDate(model.getEndDate(),"yyyy-MM-dd HH:mm:ss")+"' and t.END_DATE > '"+DateUtil.getFomartDate(model.getStartDate(),"yyyy-MM-dd HH:mm:ss")+"' ) " + |
| | | " ) ") |
| | | |
| | | )>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ¿æºå·²è¢«å ç¨è¯·å·æ°éè¯"); |
| | | }; |
| | | |
| | | if(ywContractMapper.selectJoinCount(new MPJLambdaWrapper<YwContract>() |
| | | .leftJoin(YwContractRoom.class,YwContractRoom::getContractId,YwContract::getId) |
| | | .eq(YwContractRoom::getType,Constants.ZERO) |
| | | .in(YwContractRoom::getRoomId,roomIds) |
| | | .in(YwContract::getStatus,Constants.THREE) |
| | | .apply(" ( t.START_DATE < '"+DateUtil.getFomartDate(model.getBtDate(),"yyyy-MM-dd HH:mm:ss")+"' " + |
| | | " and t.END_DATE > '"+DateUtil.getFomartDate(model.getStartDate(),"yyyy-MM-dd HH:mm:ss")+"' ) " ) |
| | | )>Constants.ZERO){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"æ¿æºå·²è¢«å ç¨è¯·å·æ°éè¯"); |
| | | }; |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<YwContractBill> getBillList(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(); |
| | | } |
| | |
| | | totalBackFee = totalBackFee.add(fee);//ç´¯è®¡éæ¬¾éé¢ |
| | | } |
| | | } |
| | | List<YwContractBill> ywContractBillList = ywContractBillMapper.selectList(new QueryWrapper<YwContractBill>() |
| | | .lambda().eq(YwContractBill::getContractId,param.getId()).orderByDesc(YwContractBill::getId)); |
| | | Integer sortNum = ywContractBillList.size(); |
| | | if(param.getAddBillList()!=null && param.getAddBillList().size()>0){ |
| | | for(YwContractBill addBill : param.getAddBillList()){ |
| | | sortNum = sortNum + 1 ; |
| | | addBill.setIsdeleted(Constants.ZERO); |
| | | 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()); |
| | |
| | | addBill.setBtUserId(param.getBtUserId()); |
| | | addBill.setBtSignDate(param.getBtSignDate()); |
| | | addBill.setBtType(param.getBtType()); |
| | | addBill.setSortnum(sortNum ); |
| | | newBills.add(addBill); |
| | | } |
| | | ywContractBillMapper.insert(param.getAddBillList());//æ¹éæå
¥æ°æ® |
| | |
| | | } |
| | | 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 =1; |
| | | for(int i=0;i<billList2.size();i++){ |
| | | billList2.get(i).setSortnum(num); |
| | | num++; |
| | | if(Constants.equalsInteger( billList2.get(i).getCostType(),Constants.ONE)){ |
| | | billList2.get(i).setSortnum(num++); |
| | | } |
| | | } |
| | | if(model.getId()!=null){ |
| | | ywContractBillMapper.insert(billList1); |
| | |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | LoginUserInfo loginUserInfo = ywCustomer.getLoginUserInfo(); |
| | | if(StringUtils.isNotBlank(ywCustomer.getEmail())&&!Constants.validEmail(ywCustomer.getEmail())){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"è¯·å¡«åæ£ç¡®çemail"); |
| | | } |
| | | ywCustomer.setStatus(Constants.ZERO); |
| | | ywCustomer.setIsdeleted(Constants.ZERO); |
| | | ywCustomer.setCreator(loginUserInfo.getId()); |
| | |
| | | .leftJoin(YwPatrolScheme.class,YwPatrolScheme::getId,YwPatrolTask::getSchemeId) |
| | | .eq(YwPatrolTask::getIsdeleted, Constants.ZERO) |
| | | .eq(Objects.nonNull(model.getStatus()) && !Constants.equalsInteger(model.getStatus(),Constants.TWO),YwPatrolTask::getStatus, model.getStatus()) |
| | | .eq(Objects.nonNull(model.getDealUserId()),YwPatrolTask::getDealUserId, model.getDealUserId()) |
| | | .apply(Objects.nonNull(model.getStatus()) && Constants.equalsInteger(model.getStatus(),Constants.TWO)," t.status = 1 and t.END_DATE > now() ") |
| | | .apply(StringUtils.isNotBlank(model.getQueryStatus())," find_in_set(t.status ,'"+model.getQueryStatus()+"') ") |
| | | .like(StringUtils.isNotBlank(model.getPlanTitle()),YwPatrolScheme::getTitle,model.getPlanTitle()) |
| | |
| | | import com.doumee.core.model.PageData; |
| | | import com.doumee.core.model.PageWrap; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.YwBuildingMapper; |
| | | import com.doumee.dao.business.YwFloorMapper; |
| | | import com.doumee.dao.business.YwProjectMapper; |
| | | import com.doumee.dao.business.YwRoomMapper; |
| | | import com.doumee.dao.business.dto.DataDTO; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.business.vo.CompanyTree; |
| | | import com.doumee.dao.business.vo.ProjectDataVO; |
| | |
| | | |
| | | |
| | | @Override |
| | | public List<ProjectDataVO> projectTree(){ |
| | | public List<ProjectDataVO> projectTree(DataDTO dataDTO){ |
| | | List<ProjectDataVO> projectDataVOList = new ArrayList<>(); |
| | | List<YwProject> ywProjectList = ywProjectMapper.selectList(new QueryWrapper<YwProject>().lambda() |
| | | .eq(YwProject::getIsdeleted,Constants.ZERO) |
| | | .eq(YwProject::getStatus,Constants.ZERO) |
| | | .eq(Objects.nonNull(dataDTO.getProjectId()),YwProject::getId,dataDTO.getProjectId()) |
| | | .orderByAsc(YwProject::getSortnum) |
| | | ); |
| | | for (YwProject ywProject:ywProjectList) { |
| | |
| | | List<YwBuilding> ywBuildingList = ywBuildingMapper.selectList(new QueryWrapper<YwBuilding>().lambda() |
| | | .eq(YwBuilding::getIsdeleted,Constants.ZERO) |
| | | .eq(YwBuilding::getStatus,Constants.ZERO) |
| | | .eq(Objects.nonNull(dataDTO.getProjectId()),YwBuilding::getProjectId,dataDTO.getProjectId()) |
| | | .orderByAsc(YwBuilding::getSortnum) |
| | | ); |
| | | |
| | |
| | | List<YwFloor> ywFloorList = ywFloorMapper.selectList(new QueryWrapper<YwFloor>().lambda() |
| | | .eq(YwFloor::getIsdeleted,Constants.ZERO) |
| | | .eq(YwFloor::getStatus,Constants.ZERO) |
| | | .eq(Objects.nonNull(dataDTO.getProjectId()),YwFloor::getProjectId,dataDTO.getProjectId()) |
| | | .orderByAsc(YwFloor::getSortnum) |
| | | ); |
| | | |
| | |
| | | projectDataVOList.add(projectDataVO); |
| | | } |
| | | |
| | | |
| | | |
| | | List<YwRoom> ywRoomList = ywRoomMapper.selectList(new QueryWrapper<YwRoom>().lambda() |
| | | .eq(YwRoom::getIsdeleted,Constants.ZERO) |
| | | .eq(YwRoom::getStatus,Constants.ZERO) |
| | | .eq(Objects.nonNull(dataDTO.getProjectId()),YwRoom::getProjectId,dataDTO.getProjectId()) |
| | | .apply(Objects.nonNull(dataDTO)&&Objects.nonNull(dataDTO.getStartDate())&&Objects.nonNull(dataDTO.getEndDate())," id not in (" + |
| | | " SELECT y2.room_id FROM yw_contract y1 left join yw_contract_room y2 on y1.id = y2.contract_id where 1 = 1 and y1.`STATUS` in( 0,1,2) " + |
| | | " and y1.START_DATE < '"+dataDTO.getEndDate()+" 00:00:00' and y1.END_DATE > '"+ dataDTO.getStartDate() +" 00:00:00' " + |
| | | " ) ") |
| | | .apply(Objects.nonNull(dataDTO)&&Objects.nonNull(dataDTO.getStartDate())&&Objects.nonNull(dataDTO.getEndDate())," id not in (" + |
| | | " SELECT y2.room_id FROM yw_contract y1 left join yw_contract_room y2 on y1.id = y2.contract_id where 1 = 1 and y1.`STATUS` = 3 " + |
| | | " and y1.START_DATE < '"+dataDTO.getEndDate()+" 00:00:00' and y1.BT_DATE > '"+ dataDTO.getStartDate() +" 00:00:00' " + |
| | | " ) ") |
| | | .orderByAsc(YwRoom::getSortnum) |
| | | ); |
| | | |
| | | |
| | | for (YwRoom data:ywRoomList) { |
| | | ProjectDataVO projectDataVO = new ProjectDataVO(); |
| | | BeanUtils.copyProperties(data,projectDataVO); |
| | | projectDataVO.setName(data.getCode()); |
| | | projectDataVO.setName(data.getCode() + " " + data.getArea() +"ã¡"); |
| | | projectDataVO.setPId(data.getFloor()); |
| | | projectDataVO.setLv(Constants.THREE); |
| | | projectDataVOList.add(projectDataVO); |
| | |
| | | .selectAs(YwProject::getName,YwRoom::getProjectName) |
| | | .selectAs(YwFloor::getName,YwRoom::getFloorName) |
| | | .selectAs(YwBuilding::getName,YwRoom::getBuildingName) |
| | | .select(" select case when y1.status = 3 then now() BETWEEN y1.START_DATE and y1.BT_DATE else now() BETWEEN y1.START_DATE and y1.END_DATE END " + |
| | | .select(" ifnull( ( select case when y1.status = 3 then now() BETWEEN y1.START_DATE and y1.BT_DATE else now() BETWEEN y1.START_DATE and y1.END_DATE END " + |
| | | "from yw_contract y1 left join yw_contract_room y2 on y1.id = y2.CONTRACT_ID and y2.TYPE = 0 " + |
| | | "where y1.`STATUS` <> 4 and y2.room_id = t.id order by y1.create_date desc limit 1 ",YwRoom::getLeaseStatus) |
| | | "where y1.`STATUS` <> 4 and y2.room_id = t.id order by y1.create_date desc limit 1 ) ,0) ",YwRoom::getLeaseStatus) |
| | | .leftJoin(YwProject.class,YwProject::getId,YwRoom::getProjectId) |
| | | .leftJoin(YwBuilding.class,YwBuilding::getId,YwRoom::getBuildingId) |
| | | .leftJoin(YwFloor.class,YwFloor::getId,YwRoom::getFloor); |