From 9658db7f832eca9f4bbf7791c5e440886e5824d3 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期日, 04 二月 2024 14:13:22 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 company/src/views/enterprise/entrustedInvoicing.vue                                          |  149 ++++++++
 server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java    |   48 +-
 company/src/components/enterprise/additionSubtractionApplication.vue                         |    4 
 company/src/components/enterprise/factoryChange.vue                                          |    6 
 company/src/components/enterprise/OperaInsuranceApplyWindow.vue                              |   18 
 company/src/views/business/taxes.vue                                                         |   14 
 server/service/src/main/java/com/doumee/service/business/impl/TaxesServiceImpl.java          |   24 +
 company/src/api/business/taxes.js                                                            |    7 
 server/service/src/main/java/com/doumee/core/utils/DateUtil.java                             |    2 
 server/service/src/main/java/com/doumee/service/business/TaxesService.java                   |    2 
 server/service/src/main/java/com/doumee/core/utils/Constants.java                            |  103 ++++--
 server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java |   57 --
 company/src/views/enterprise/directInvoicing.vue                                             |  149 ++++++++
 company/src/components/enterprise/entrustmentHistory.vue                                     |   93 +++++
 company/src/components/enterprise/entrustedInvoicingApplication.vue                          |  253 ++++++++++++++
 company/src/components/enterprise/editFactoryChange.vue                                      |    6 
 server/company/src/main/java/com/doumee/api/business/TaxesController.java                    |   31 +
 17 files changed, 841 insertions(+), 125 deletions(-)

diff --git a/company/src/api/business/taxes.js b/company/src/api/business/taxes.js
index f73a0fe..5d47b66 100644
--- a/company/src/api/business/taxes.js
+++ b/company/src/api/business/taxes.js
@@ -20,3 +20,10 @@
         trim: true
     })
 }
+
+// 鍒楄〃鏌ヨ
+export function list(data) {
+    return request.post('/business/taxes/list', data, {
+        trim: true
+    })
+}
diff --git a/company/src/components/enterprise/OperaInsuranceApplyWindow.vue b/company/src/components/enterprise/OperaInsuranceApplyWindow.vue
index fa9d0fd..0eaba33 100644
--- a/company/src/components/enterprise/OperaInsuranceApplyWindow.vue
+++ b/company/src/components/enterprise/OperaInsuranceApplyWindow.vue
@@ -24,13 +24,12 @@
                         <el-date-picker
                             @change="getTimeVal"
                             v-model="form.applyStartTime"
-                            type="datetime"
+                            type="date"
                             class="date_picker"
-                            default-time="00:00:00"
                             :disabled="!form.solutionId"
                             :picker-options="pickerOptions"
-                            value-format="yyyy-MM-dd hh:mm:ss"
-                            format="yyyy-MM-dd hh:mm:ss"
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            format="yyyy-MM-dd HH:mm:ss"
                             placeholder="閫夋嫨鏃ユ湡">
                         </el-date-picker>
                         <span style="color: #F95601; font-size: 14px;">锛堟鏃ョ敓鏁堟姇淇濊浜�17:30鍓嶆彁浜わ紝瓒呮椂鎻愪氦浠ヤ繚闄╁崟涓哄噯锛�</span>
@@ -40,10 +39,11 @@
                     <el-date-picker
                         disabled
                         v-model="form.applyEndTime"
-                        type="datetime"
-                        default-time="00:00:00"
-                        value-format="yyyy-MM-dd hh:mm:ss"
-                        format="yyyy-MM-dd hh:mm:ss"
+                        type="date"
+                        class="date_picker"
+                        :picker-options="pickerOptions"
+                        value-format="yyyy-MM-dd HH:mm:ss"
+                        format="yyyy-MM-dd HH:mm:ss"
                         placeholder="閫夋嫨鏃ユ湡">
                     </el-date-picker>
                 </el-form-item>
@@ -319,7 +319,7 @@
                 startDate: time
             }).then(res => {
                 this.price = res.cyclePrice
-                this.form.applyEndTime = res.endDate.substring(0, 10)
+                this.form.applyEndTime = res.endDate
                 this.tableData.forEach(item => {
                     item.fee = res.cyclePrice
                 })
diff --git a/company/src/components/enterprise/additionSubtractionApplication.vue b/company/src/components/enterprise/additionSubtractionApplication.vue
index a162b90..9a62700 100644
--- a/company/src/components/enterprise/additionSubtractionApplication.vue
+++ b/company/src/components/enterprise/additionSubtractionApplication.vue
@@ -19,8 +19,8 @@
                             v-model="form.applyStartTime"
                             type="date"
                             :picker-options="pickerOptions"
-                            value-format="yyyy-MM-dd"
-                            format="yyyy 骞� MM 鏈� dd 鏃�"
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            format="yyyy-MM-dd HH:mm:ss"
                             placeholder="閫夋嫨鏃ユ湡">
                         </el-date-picker>
                         <span style="color: #F95601; font-size: 14px;">锛堟鏃ョ敓鏁堟姇淇濊浜�17:30鍓嶆彁浜わ紝瓒呮椂鎻愪氦浠ヤ繚闄╁崟涓哄噯锛�</span>
diff --git a/company/src/components/enterprise/editFactoryChange.vue b/company/src/components/enterprise/editFactoryChange.vue
index a2d46fa..852b841 100644
--- a/company/src/components/enterprise/editFactoryChange.vue
+++ b/company/src/components/enterprise/editFactoryChange.vue
@@ -16,10 +16,10 @@
                     <div style="display: flex; flex-direction: column;">
                         <el-date-picker
                             v-model="form.applyStartTime"
-                            type="datetime"
+                            type="date"
                             :picker-options="pickerOptions"
-                            value-format="yyyy-MM-dd hh:mm:ss"
-                            format="yyyy-MM-dd hh:mm:ss"
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            format="yyyy-MM-dd HH:mm:ss"
                             placeholder="閫夋嫨鏃ユ湡">
                         </el-date-picker>
                         <span style="color: #F95601; font-size: 14px;">锛堟鏃ョ敓鏁堟姇淇濊浜�17:30鍓嶆彁浜わ紝瓒呮椂鎻愪氦浠ヤ繚闄╁崟涓哄噯锛�</span>
diff --git a/company/src/components/enterprise/entrustedInvoicingApplication.vue b/company/src/components/enterprise/entrustedInvoicingApplication.vue
new file mode 100644
index 0000000..1406ffc
--- /dev/null
+++ b/company/src/components/enterprise/entrustedInvoicingApplication.vue
@@ -0,0 +1,253 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <div class="info">
+            <div class="info_list">
+                <div class="info_list_item">
+                    <div class="info_list_item_label">寮�绁ㄥ悕绉帮細</div>
+                    <div class="info_list_item_val">{{userInfo.company.name}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">绾崇◣浜鸿瘑鍒彿锛�</div>
+                    <div class="info_list_item_val">{{userInfo.company.code}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">寮�鎴疯锛�</div>
+                    <div class="info_list_item_val">{{userInfo.company.taxBank}}</div>
+                </div>
+                <div class="info_list_item">
+                    <div class="info_list_item_label">璐﹀彿锛�</div>
+                    <div class="info_list_item_val">
+                        {{userInfo.company.taxAccount}}
+                    </div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鍦板潃銆佺數璇濓細</div>
+                    <div class="info_list_item_val">{{userInfo.company.invoiceAddr}} {{userInfo.company.phone}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">寮�绁ㄩ噾棰濓細</div>
+                    <div class="info_list_item_val" style="color:rgba(249, 86, 1, 0.996078431372549);">{{total}}</div>
+                </div>
+                <div class="info_list_item" style="width: 100%;">
+                    <div class="info_list_item_label">鎺ユ敹鏂瑰紡锛�</div>
+                    <div class="info_list_item_val">鐢靛瓙鍙戠エ</div>
+<!--                    <div v-if="model.type === 1" class="info_list_item_val">绾歌川鍙戠エ</div>-->
+                </div>
+            </div>
+            <el-table
+                :data="form.list"
+                border
+                show-summary
+                :summary-method="getSummaries"
+                style="width: 100%; margin-bottom: 20px;">
+                <el-table-column
+                    label="搴忓彿"
+                    align="center"
+                    width="80">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column
+                    align="center"
+                    prop="solutionsName"
+                    label="淇濋櫓鏂规">
+                </el-table-column>
+                <el-table-column
+                    align="center"
+                    prop="code"
+                    label="淇濆崟鍙�">
+                </el-table-column>
+                <el-table-column
+                    align="center"
+                    label="閲戦">
+                    <template slot-scope="{row}">
+                        <span style="color:rgba(249, 86, 1, 0.996078431372549);">{{row.totalPrice}}</span>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    import { mapState } from 'vuex'
+    export default {
+        name: 'entrustedInvoicingApplication',
+        extends: BaseOpera,
+        components: { GlobalWindow },
+        data () {
+            return {
+                form: {
+                    id: null,
+                    backInfo:'',
+                    list: []
+                },
+                rules: {
+                    backInfo: [
+                        { required: true, message: '璇疯緭鍏ラ��鍥炶鏄�' }
+                    ]
+                }
+            }
+        },
+        created () {
+            console.log(this.userInfo)
+            this.config({
+                api: '/business/taxes',
+                'field.id': 'id'
+            })
+        },
+        computed: {
+            ...mapState(['userInfo']),
+            total () {
+                let price = 0
+                this.form.list.forEach(item => {
+                    price += item.totalPrice
+                })
+                return price;
+            }
+        },
+        methods: {
+            open (title, target) {
+                this.title = title
+                this.visible = true
+                this.$nextTick(() => {
+                    for (const key in this.form) {
+                        this.form[key] = target[key]
+                    }
+                })
+            },
+            getSummaries (param) {
+                const { columns, data } = param
+                const sums = []
+                columns.forEach((column, index) => {
+                    if (index === 0) {
+                        sums[index] = '鍚堣'
+                    } else if (index == 4) {
+                        let price = 0
+                        data.forEach(item => {
+                            price += item.totalPrice
+                        })
+                        sums[index] = price
+                    }
+                })
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    ::v-deep .el-table__footer-wrapper tbody td {
+        cursor: pointer;
+        text-align: center;
+        &:nth-child(5) {
+            color:rgba(249, 86, 1, 0.996078431372549);
+        }
+    }
+    /*   ::v-deep .el-table__header-wrapper   th:first-child .cell{
+          color:rgba(249, 86, 1, 0.996078431372549) !important
+       }
+       ::v-deep  table:first-of-type th:first-child .cell{
+            //color:rgba(249, 86, 1, 0.996078431372549) !important
+       }
+       ::v-deep   .el-table--border th:first-child .cell {
+         &:nth-child(2) {
+           color:rgba(249, 86, 1, 0.996078431372549);
+         }
+       }*/
+
+
+    .info {
+        width: 100%;
+        .info_label {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: space-between;
+            margin-bottom: 20px;
+            span {
+                font-size: 14px;
+                font-weight: 500;
+                color: #000000;
+            }
+        }
+        .info_list {
+            width: 100%;
+            display: flex;
+            align-items: left;
+            flex-wrap: wrap;
+            .info_list_item {
+                width: 50%;
+                display: flex;
+                align-items: start;
+                font-size: 14px;
+                margin-bottom: 20px;
+                .info_list_item_label {
+                    width: 150px;
+                    flex-shrink: 0;
+                }
+                .info_list_item_val {
+                    flex: 1;
+                    display: flex;
+                    align-items: center;
+                    .image {
+                        width: 100px;
+                        height: 100px;
+                        display: flex;
+                        align-items: center;
+                        justify-content: center;
+                        overflow: hidden;
+                        img {
+                            width: 100%;
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    .form {
+        width: 100%;
+        display: flex;
+        flex-direction: column;
+        .form_item {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            margin-bottom: 20px;
+            &:last-child {
+                margin-bottom: 0 !important;
+            }
+            .form_item_label {
+                width: 100px;
+                flex-shrink: 0;
+                font-size: 14px;
+                color: black;
+            }
+            .form_item_val {
+                flex: 1;
+                min-height: 35px;
+                display: flex;
+                align-items: center;
+                input {
+                    width: 100%;
+                    height: 100%;
+                    font-size: 14px;
+                    color: black;
+                    padding: 5px 10px;
+                    outline: none;
+                    box-sizing: border-box;
+                    border: 1px solid #ececec;
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/components/enterprise/entrustmentHistory.vue b/company/src/components/enterprise/entrustmentHistory.vue
new file mode 100644
index 0000000..f4eda21
--- /dev/null
+++ b/company/src/components/enterprise/entrustmentHistory.vue
@@ -0,0 +1,93 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <div style="width: 100%; display: flex; align-items: center; margin-bottom: 20px;">
+            淇濋櫓鏂规锛歿{form.solutionsName}} <div style="width: 20px;"></div> 淇濆崟鍙凤細{{form.code || '-'}}
+        </div>
+        <el-table
+            :data="list"
+            border
+            ref="table"
+            style="width: 100%">
+            <el-table-column label="搴忓彿" width="80px">
+                <template slot-scope="scope">
+                    <span>{{scope.$index + 1}}</span>
+                </template>
+            </el-table-column>
+            <el-table-column
+                prop="solutionName"
+                label="鐢宠寮�绁ㄦ椂闂�">
+            </el-table-column>
+            <el-table-column
+                prop="bdCode"
+                label="寮�绁ㄧ姸鎬�">
+            </el-table-column>
+            <el-table-column
+                prop="applyChangeId"
+                label="寮�绁ㄩ噾棰濓紙鍏冿級">
+            </el-table-column>
+            <el-table-column
+                prop="duName"
+                label="鎺ユ敹鏂瑰紡">
+            </el-table-column>
+            <el-table-column
+                label="鎿嶄綔">
+                <template slot-scope="{row}">
+                    <el-button type="text">鐢宠璇︽儏</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    import { list } from '@/api/business/taxes'
+    export default {
+        name: 'entrustmentHistory',
+        extends: BaseOpera,
+        components: { GlobalWindow },
+        data () {
+            return {
+                form: {
+                    id: null,
+                    solutionsName: '',
+                    code: ''
+                },
+                list: []
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/dispatchUnit',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+            open (title, target) {
+                this.title = title
+                this.visible = true
+                // 缂栬緫
+                this.$nextTick(() => {
+                    for (const key in this.form) {
+                        this.form[key] = target[key]
+                    }
+                    this.getList()
+                })
+            },
+            getList() {
+                list({ insuranceApplyId: this.form.id })
+                    .then(res => {
+                        console.log(res)
+                        this.list = res
+                    })
+            }
+        }
+    }
+</script>
diff --git a/company/src/components/enterprise/factoryChange.vue b/company/src/components/enterprise/factoryChange.vue
index 7f4d2c3..f3d2ad3 100644
--- a/company/src/components/enterprise/factoryChange.vue
+++ b/company/src/components/enterprise/factoryChange.vue
@@ -16,10 +16,10 @@
                     <div style="display: flex; flex-direction: column;">
                         <el-date-picker
                             v-model="form.applyStartTime"
-                            type="datetime"
+                            type="date"
                             :picker-options="pickerOptions"
-                            value-format="yyyy-MM-dd hh:mm:ss"
-                            format="yyyy-MM-dd hh:mm:ss"
+                            value-format="yyyy-MM-dd HH:mm:ss"
+                            format="yyyy-MM-dd HH:mm:ss"
                             placeholder="閫夋嫨鏃ユ湡">
                         </el-date-picker>
                         <span style="color: #F95601; font-size: 14px;">锛堟鏃ョ敓鏁堟姇淇濊浜�17:30鍓嶆彁浜わ紝瓒呮椂鎻愪氦浠ヤ繚闄╁崟涓哄噯锛�</span>
diff --git a/company/src/views/business/taxes.vue b/company/src/views/business/taxes.vue
index 068797d..dd2edea 100644
--- a/company/src/views/business/taxes.vue
+++ b/company/src/views/business/taxes.vue
@@ -19,7 +19,7 @@
                     end-placeholder="缁撴潫鏃ユ湡">
                 </el-date-picker>
             </el-form-item>
-            <el-form-item label="鐢宠寮�绁ㄤ紒涓�" prop="companyId">
+            <el-form-item label="鐢宠寮�绁ㄤ紒涓�" prop="companyId" v-if="userInfo.type === 0">
               <el-select v-model="searchForm.companyId" placeholder="璇烽�夋嫨" @change="search">
                 <el-option
                     v-for="item in companyList"
@@ -54,7 +54,7 @@
                         <span v-if="row.status === 3">宸插啿绾�</span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="companyName" label="鐢宠浼佷笟" min-width="100px"></el-table-column>
+                <el-table-column prop="companyName" label="鐢宠浼佷笟" min-width="100px" v-if="userInfo.type === 0"></el-table-column>
                 <el-table-column prop="createDate" label="鐢宠寮�绁ㄦ椂闂�" min-width="100px"></el-table-column>
                 <el-table-column prop="creatorName" label="鐢宠浜�" min-width="100px"></el-table-column>
                 <el-table-column prop="price" label="寮�绁ㄩ噾棰濓紙鍏冿級" min-width="100px"></el-table-column>
@@ -82,9 +82,9 @@
                 </el-table-column>
                 <el-table-column label="鎿嶄綔" min-width="180px">
                     <template slot-scope="{row}">
-                        <el-button v-if="row.status==0" type="text" @click="$refs.OperaTaxesUploadWindow.open('涓婁紶鍙戠エ',row)">涓婁紶鍙戠エ</el-button>
-                        <el-button v-if="row.status ==1 " type="text" @click="$refs.OperaTaxesUploadWindow.open('淇敼鍙戠エ',row)">淇敼鍙戠エ</el-button>
-                        <el-button type="text"    @click="$refs.OperaTaxesWindow.open('鐢宠璇︽儏',row)">鐢宠璇︽儏</el-button>
+                        <el-button v-if="row.status == 0" type="text" @click="$refs.OperaTaxesUploadWindow.open('涓婁紶鍙戠エ',row)">涓婁紶鍙戠エ</el-button>
+                        <el-button v-if="row.status == 1 && userInfo.type === 0" type="text" @click="$refs.OperaTaxesUploadWindow.open('淇敼鍙戠エ',row)">淇敼鍙戠エ</el-button>
+                        <el-button type="text" @click="$refs.OperaTaxesWindow.open('鐢宠璇︽儏',row)">鐢宠璇︽儏</el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -136,6 +136,7 @@
 import { pageAll as companyAll } from '@/api/business/company'
 import { doneApply } from '@/api/business/taxes'
 import UploadAvatarImage from '@/components/common/UploadAvatarImage'
+import { mapState } from 'vuex'
 export default {
   name: 'Taxes',
   extends: BaseTable,
@@ -157,6 +158,9 @@
       visible: false
     }
   },
+    computed: {
+      ...mapState(['userInfo'])
+    },
   created () {
     this.config({
       module: '鍙戠エ淇℃伅琛�',
diff --git a/company/src/views/enterprise/directInvoicing.vue b/company/src/views/enterprise/directInvoicing.vue
new file mode 100644
index 0000000..399b0a0
--- /dev/null
+++ b/company/src/views/enterprise/directInvoicing.vue
@@ -0,0 +1,149 @@
+<template>
+    <TableLayout>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <ul style="margin-bottom: 30px;width: 100%;display: flex;align-items: center;justify-content: space-between;">
+                <li style="font-size: 18px;font-weight: bold;">鐢宠寮�绁�</li>
+                <li><el-button type="primary" @click="apply">鎻愪氦寮�绁�</el-button></li>
+            </ul>
+            <el-table
+                    v-loading="isWorking.search"
+                    :data="tableData.list"
+                    stripe
+                    @selection-change="handleSelectionChange"
+            >
+                <el-table-column type="selection" fixed="left" width="55"></el-table-column>
+                <el-table-column label="搴忓彿" width="80px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="statusInfo" label="鐘舵��"></el-table-column>
+                <el-table-column prop="solutionsName" label="淇濋櫓鏂规"></el-table-column>
+                <el-table-column prop="code" label="淇濆崟鍙�"></el-table-column>
+                <el-table-column label="浜х敓璐圭敤锛堝厓锛�">
+                    <template slot-scope="{row}">
+                        <span>{{row.currentFee}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="宸插紑绁ㄨ垂鐢紙鍏冿級">
+                    <template slot-scope="{row}">
+                        <span>{{row.taxesMoney}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="fee" label="鏈紑绁ㄨ垂鐢紙鍏冿級">
+                    <template slot-scope="{row}">
+                        <span>{{row.currentFee - row.taxesMoney}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="taxesLast" label="涓婃寮�绁ㄦ椂闂�"></el-table-column>
+                <el-table-column prop="startTime" label="鎶曚繚鐢熸晥鏃ユ湡"></el-table-column>
+                <el-table-column prop="endTime" label="鎶曚繚澶辨晥鏃ユ湡"></el-table-column>
+                <el-table-column label="鎿嶄綔" min-width="180px">
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.entrustmentHistory.open('寮�绁ㄥ巻鍙�', row)">寮�绁ㄥ巻鍙�</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                    @size-change="handleSizeChange"
+                    @current-change="handlePageChange"
+                    :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!--   鐢宠    -->
+        <entrustedInvoicingApplication ref="entrustedInvoicingApplication" @success="handlePageChange" />
+        <!--    寮�绁ㄥ巻鍙�    -->
+        <entrustmentHistory ref="entrustmentHistory" @success="handlePageChange" />
+    </TableLayout>
+</template>
+
+<script>
+    import BaseTable from '@/components/base/BaseTable'
+    import TableLayout from '@/layouts/TableLayout'
+    import Pagination from '@/components/common/Pagination'
+    import entrustedInvoicingApplication from '@/components/enterprise/entrustedInvoicingApplication'
+    import entrustmentHistory from '@/components/enterprise/entrustmentHistory'
+    export default {
+        name: 'directInvoicing',
+        extends: BaseTable,
+        components: { TableLayout, Pagination, entrustedInvoicingApplication, entrustmentHistory },
+        data () {
+            return {
+                searchForm: {
+                    type: 0
+                }
+            }
+        },
+        created () {
+            this.config({
+                module: '鎶曚繚鐢宠淇℃伅琛�',
+                api: '/business/insuranceApply',
+                'field.id': 'id',
+                'field.main': 'id'
+            })
+            this.search()
+        },
+        methods: {
+            apply() {
+                if (this.tableData.selectedRows.length === 0) {
+                    this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
+                    return
+                }
+                for (let i = 0; i < this.tableData.selectedRows.length; i++) {
+                    if (this.tableData.selectedRows[i].currentFee - this.tableData.selectedRows[i].taxesMoney === 0) {
+                        this.$message.warning(`绗�${i + 1}椤瑰彲寮�绁ㄩ噾棰濅负0锛屼笉鑳借繘琛屽紑绁紒`)
+                        return
+                    }
+                }
+                let obj = {}
+                obj.list = JSON.parse(JSON.stringify(this.tableData.selectedRows))
+                obj.list.forEach(item => {
+                    item.totalPrice = item.currentFee - item.taxesMoney
+                })
+                console.log(obj.list)
+                this.$refs.entrustedInvoicingApplication.open('鐢宠寮�绁�', obj)
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .form {
+        width: 100%;
+        display: flex;
+        flex-direction: column;
+        .form_item {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            margin-bottom: 20px;
+            &:last-child {
+                margin-bottom: 0 !important;
+            }
+            .form_item_label {
+                width: 100px;
+                flex-shrink: 0;
+                font-size: 14px;
+                color: black;
+            }
+            .form_item_val {
+                flex: 1;
+                min-height: 35px;
+                display: flex;
+                align-items: center;
+                input {
+                    width: 100%;
+                    height: 100%;
+                    font-size: 14px;
+                    color: black;
+                    padding: 5px 10px;
+                    outline: none;
+                    box-sizing: border-box;
+                    border: 1px solid #ececec;
+                }
+            }
+        }
+    }
+</style>
diff --git a/company/src/views/enterprise/entrustedInvoicing.vue b/company/src/views/enterprise/entrustedInvoicing.vue
new file mode 100644
index 0000000..4298144
--- /dev/null
+++ b/company/src/views/enterprise/entrustedInvoicing.vue
@@ -0,0 +1,149 @@
+<template>
+    <TableLayout>
+        <!-- 琛ㄦ牸鍜屽垎椤� -->
+        <template v-slot:table-wrap>
+            <ul style="margin-bottom: 30px;width: 100%;display: flex;align-items: center;justify-content: space-between;">
+                <li style="font-size: 18px;font-weight: bold;">鐢宠寮�绁�</li>
+                <li><el-button type="primary" @click="apply">鎻愪氦寮�绁�</el-button></li>
+            </ul>
+            <el-table
+                v-loading="isWorking.search"
+                :data="tableData.list"
+                stripe
+                @selection-change="handleSelectionChange"
+            >
+                <el-table-column type="selection" fixed="left" width="55"></el-table-column>
+                <el-table-column label="搴忓彿" width="80px">
+                    <template slot-scope="scope">
+                        <span>{{scope.$index + 1}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="statusInfo" label="鐘舵��"></el-table-column>
+                <el-table-column prop="solutionsName" label="淇濋櫓鏂规"></el-table-column>
+                <el-table-column prop="code" label="淇濆崟鍙�"></el-table-column>
+                <el-table-column label="浜х敓璐圭敤锛堝厓锛�">
+                    <template slot-scope="{row}">
+                        <span>{{row.currentFee}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="宸插紑绁ㄨ垂鐢紙鍏冿級">
+                    <template slot-scope="{row}">
+                        <span>{{row.taxesMoney}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="fee" label="鏈紑绁ㄨ垂鐢紙鍏冿級">
+                    <template slot-scope="{row}">
+                        <span>{{row.currentFee - row.taxesMoney}}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="taxesLast" label="涓婃寮�绁ㄦ椂闂�"></el-table-column>
+                <el-table-column prop="startTime" label="鎶曚繚鐢熸晥鏃ユ湡"></el-table-column>
+                <el-table-column prop="endTime" label="鎶曚繚澶辨晥鏃ユ湡"></el-table-column>
+                <el-table-column label="鎿嶄綔" min-width="180px">
+                    <template slot-scope="{row}">
+                        <el-button type="text" @click="$refs.entrustmentHistory.open('寮�绁ㄥ巻鍙�', row)">寮�绁ㄥ巻鍙�</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <pagination
+                @size-change="handleSizeChange"
+                @current-change="handlePageChange"
+                :pagination="tableData.pagination"
+            >
+            </pagination>
+        </template>
+        <!--   鐢宠    -->
+        <entrustedInvoicingApplication ref="entrustedInvoicingApplication" @success="handlePageChange" />
+        <!--    寮�绁ㄥ巻鍙�    -->
+        <entrustmentHistory ref="entrustmentHistory" @success="handlePageChange" />
+    </TableLayout>
+</template>
+
+<script>
+    import BaseTable from '@/components/base/BaseTable'
+    import TableLayout from '@/layouts/TableLayout'
+    import Pagination from '@/components/common/Pagination'
+    import entrustedInvoicingApplication from '@/components/enterprise/entrustedInvoicingApplication'
+    import entrustmentHistory from '@/components/enterprise/entrustmentHistory'
+    export default {
+        name: 'entrustedInvoicing',
+        extends: BaseTable,
+        components: { TableLayout, Pagination, entrustedInvoicingApplication, entrustmentHistory },
+        data () {
+            return {
+                searchForm: {
+                    type: 1
+                }
+            }
+        },
+        created () {
+            this.config({
+                module: '鎶曚繚鐢宠淇℃伅琛�',
+                api: '/business/insuranceApply',
+                'field.id': 'id',
+                'field.main': 'id'
+            })
+            this.search()
+        },
+        methods: {
+            apply() {
+                if (this.tableData.selectedRows.length === 0) {
+                    this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
+                    return
+                }
+                for (let i = 0; i < this.tableData.selectedRows.length; i++) {
+                    if (this.tableData.selectedRows[i].currentFee - this.tableData.selectedRows[i].taxesMoney === 0) {
+                        this.$message.warning(`绗�${i + 1}椤瑰彲寮�绁ㄩ噾棰濅负0锛屼笉鑳借繘琛屽紑绁紒`)
+                        return
+                    }
+                }
+                let obj = {}
+                obj.list = JSON.parse(JSON.stringify(this.tableData.selectedRows))
+                obj.list.forEach(item => {
+                    item.totalPrice = item.currentFee - item.taxesMoney
+                })
+                console.log(obj.list)
+                this.$refs.entrustedInvoicingApplication.open('鐢宠寮�绁�', obj)
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .form {
+        width: 100%;
+        display: flex;
+        flex-direction: column;
+        .form_item {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            margin-bottom: 20px;
+            &:last-child {
+                margin-bottom: 0 !important;
+            }
+            .form_item_label {
+                width: 100px;
+                flex-shrink: 0;
+                font-size: 14px;
+                color: black;
+            }
+            .form_item_val {
+                flex: 1;
+                min-height: 35px;
+                display: flex;
+                align-items: center;
+                input {
+                    width: 100%;
+                    height: 100%;
+                    font-size: 14px;
+                    color: black;
+                    padding: 5px 10px;
+                    outline: none;
+                    box-sizing: border-box;
+                    border: 1px solid #ececec;
+                }
+            }
+        }
+    }
+</style>
diff --git a/server/company/src/main/java/com/doumee/api/business/TaxesController.java b/server/company/src/main/java/com/doumee/api/business/TaxesController.java
index bc5bcdf..b1828b6 100644
--- a/server/company/src/main/java/com/doumee/api/business/TaxesController.java
+++ b/server/company/src/main/java/com/doumee/api/business/TaxesController.java
@@ -82,6 +82,13 @@
         return ApiResponse.success(taxesService.findPageForCompany(pageWrap));
     }
 
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    @RequiresPermissions("business:taxes:query")
+    public ApiResponse<List<Taxes>> findList (@RequestBody Taxes taxes) {
+        return ApiResponse.success(taxesService.findListForCompany(taxes));
+    }
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @RequiresPermissions("business:taxes:exportExcel")
@@ -89,17 +96,25 @@
         ExcelExporter.build(Taxes.class).export(taxesService.findPage(pageWrap).getRecords(), "鍙戠エ淇℃伅琛�", response);
     }
 
-    @ApiOperation("鑾峰彇浼佷笟淇℃伅")
-    @GetMapping("/getCompanyDetail")
+
+    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @GetMapping("/{id}")
     @RequiresPermissions("business:taxes:query")
-    public ApiResponse<Taxes> getCompanyDetail() {
-        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-        if(!loginUserInfo.getType().equals(Constants.ONE)){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氱被鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
-        }
-        return ApiResponse.success(taxesService.findById(loginUserInfo.getCompanyId()));
+    public ApiResponse<Taxes> findById(@PathVariable Integer id) {
+        return ApiResponse.success(taxesService.findById(id));
     }
 
+//    @ApiOperation("鑾峰彇浼佷笟淇℃伅")
+//    @GetMapping("/getCompanyDetail")
+//    @RequiresPermissions("business:taxes:query")
+//    public ApiResponse<Taxes> getCompanyDetail() {
+//        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+//        if(!loginUserInfo.getType().equals(Constants.ONE)){
+//            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氱被鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
+//        }
+//        return ApiResponse.success(taxesService.findById(loginUserInfo.getCompanyId()));
+//    }
+
     @ApiOperation("鎻愪氦濮旀墭鎶曟姤寮�绁�")
     @PostMapping("/entrustInvoicing")
     public ApiResponse entrustInvoicing(@RequestBody EntrustInvoicingDTO entrustInvoicingDTOs) {
diff --git a/server/service/src/main/java/com/doumee/core/utils/Constants.java b/server/service/src/main/java/com/doumee/core/utils/Constants.java
index 09ba80d..6ce57c2 100644
--- a/server/service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/service/src/main/java/com/doumee/core/utils/Constants.java
@@ -166,14 +166,23 @@
     public static CountCyclePriceVO countPriceVO(Date startDate, Solutions solutions){
         CountCyclePriceVO countCyclePriceVO = new CountCyclePriceVO();
         if(solutions.getInsureCycleUnit().equals(Constants.ZERO)){
-            countCyclePriceVO.setEndDate(DateUtil.afterDateByType(startDate,0,solutions.getInsureCycle()));
+            countCyclePriceVO.setEndDate(
+                    DateUtil.getMontageDate(
+                        DateUtil.afterDateByType(startDate,0,solutions.getInsureCycle())
+                    ,2)
+            );
         }else if(solutions.getInsureCycleUnit().equals(Constants.TWO)){
+            //鑾峰彇褰撴湀澶╂暟
             Integer monthDays = DateUtil.monthDays(startDate);
+            //鑾峰彇澶╂暟鍚庣殑鏃ユ湡
             Date afterDate = DateUtil.afterDateByType(startDate,0,monthDays);
-            countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1));
+            //璧嬪�� 姣忔棩缁撴潫鏃跺垎绉�
+            countCyclePriceVO.setEndDate(DateUtil.getMontageDate(afterDate,2));
         }else if(solutions.getInsureCycleUnit().equals(Constants.THREE)){
+            //鑾峰彇X骞村悗鏃ユ湡 澶氫簡涓�澶�
             Date afterDate = DateUtil.afterDateByType(startDate,2,solutions.getInsureCycle());
-            countCyclePriceVO.setEndDate(DateUtil.afterDateByType(afterDate,0,-1));
+            //璧嬪�� 姣忔棩缁撴潫鏃跺垎绉� 鐒跺悗鍑忓皯涓�澶�
+            countCyclePriceVO.setEndDate(DateUtil.getMontageDate(afterDate,3));
         }
         countCyclePriceVO.setCyclePrice(Constants.countDetailFee(solutions,countCyclePriceVO.getEndDate(),startDate));
         return countCyclePriceVO;
@@ -635,8 +644,8 @@
         AUDIT_UN_PASS(2, "娲鹃仯鍗曚綅涓嶉�氳繃"),
         EDIT_UNIT(3, "淇敼娲鹃仯鍗曚綅淇℃伅"),
         ADD_WORK_TYPE(4, "鎻愪氦娣诲姞宸ョ"),
-        WORK_TYPE_AUDIT_PASS(5, "娣诲姞宸ョ瀹℃牳閫氳繃"),
-        WORK_TYPE_AUDIT_UN_PASS(6, "娣诲姞宸ョ瀹℃牳涓嶉�氳繃"),
+        WORK_TYPE_AUDIT_PASS(5, "娣诲姞宸ョ瀹℃壒閫氳繃"),
+        WORK_TYPE_AUDIT_UN_PASS(6, "娣诲姞宸ョ瀹℃壒涓嶉�氳繃"),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
@@ -678,7 +687,7 @@
     }
 
     public  enum ApplyCollectStatus {
-        DSP(0, "寰呭鏍�"),
+        DSP(0, "寰呭鎵�"),
         DCD(1, "寰呭嚭鍗�"),
         BZZ(2, "淇濋殰涓�"),
         YGQ(3, "宸茶繃鏈�"),
@@ -728,43 +737,48 @@
 
 
     public  enum ApplyLogType {
-        UPLOAD(0, "鎻愪氦鎶曚繚","鎻愪氦鎰忚锛�${param}"),
-        PLATFORM_RETURN(1, "閫�鍥炴姇淇�","鎻愪氦鎰忚锛�${param}"),
-        WAIT_SIGNATURE(2, "涓婁紶鎶曚繚鍗�","鎻愪氦鎰忚锛�${param}"),
-        SIGNATURE(3, "浼佷笟绛剧珷",""),
-        FAIL_RETURN(4, "淇濆崟鍑哄叿澶辫触閫�鍥�","鎻愪氦鎰忚锛�${param}"),
-        UPLOAD_INSURANCE(5, "淇濆崟瀹屾垚","淇濋櫓鐢熸晥璧锋湡锛�${param1}鍙樻洿涓�${param2}"),
-        COMPANY_APPLY_RETURN(6, "鐢宠閫�鍥�","鎻愪氦鎰忚锛�${param}"),
-        COMPANY_APPLY_CLOSE(7, "鍏抽棴鐢宠",""),
-        PLATFORM_AGREE_BACK(8, "鍚屾剰閫�鍥炵敵璇�",""),
-        PLATFORM_UN_AGREE_BACK(9, "椹冲洖閫�鍥炵敵璇�","鎻愪氦鎰忚锛�${param}"),
-        COMPANY_EDIT(10, "淇濆崟淇敼","鎻愪氦鎰忚锛�${param1}\n${param2}"),
-        PLATFORM_CHECK_PASS(11, "鎶曚繚瀹℃牳閫氳繃",""),
-        CA_PLATFORM_CHECK_PASS_NO(12, "閫�鍥炴姇淇�","鎻愪氦鎰忚锛�${param}"),
-        CA_PLATFORM_AGREE_BACK_APPLY(13, "鍚屾剰閫�鍥炵敵璇�","鎻愪氦鎰忚锛�${param}"),
-        CA_PLATFORM_APPROVE(14, "鎵瑰崟瀹屾垚","淇濋櫓鐢熸晥璧锋湡锛�${param1}鍙樻洿涓�${param2}"),
-        CA_PLATFORM_CHECK_SIGNATURE(15, "浼佷笟绛剧珷",""),
-        CA_COMPANY_EDIT(16, "鎵瑰崟淇敼","鎻愪氦鎰忚锛�${param1}\n${param2}"),
-        CA_COMPANY_COMMIT(17, "鎻愪氦鎶曚繚","鎻愪氦鎰忚锛�${param}"),
-        CA_COMPANY_BACK_APPLY(18, "鐢宠閫�鍥�","鎻愪氦鎰忚锛�${param}"),
-        CA_COMPANY_CLOSE(19, "鍏抽棴璁㈠崟",""),
-        CA_PALTFORM_REFUSE_APPLY(20, "椹冲洖閫�鍥炵敵璇�",""),
-        CA_PALTFORM_EDIT_PIDAN(21, "淇敼鎵瑰崟","淇敼鍘熷洜锛�${param}"),
-        PALTFORM_EDIT_BD(22, "淇敼淇濆崟","淇敼鍘熷洜锛�${param}"),
-        CA_JIAJIAN_APPLY_SIGN(23, "鍔犲噺淇濈敵璇蜂紒涓氱绔�",""),
+        UPLOAD(0, "鎻愪氦鎶曚繚","鎻愪氦鎰忚锛�${param}",0),
+        PLATFORM_RETURN(1, "閫�鍥炴姇淇�","鎻愪氦鎰忚锛�${param}",0),
+        WAIT_SIGNATURE(2, "涓婁紶鎶曚繚鍗�","鎻愪氦鎰忚锛�${param}",0),
+        SIGNATURE(3, "浼佷笟绛剧珷","",0),
+        FAIL_RETURN(4, "淇濆崟鍑哄叿澶辫触閫�鍥�","鎻愪氦鎰忚锛�${param}",0),
+        UPLOAD_INSURANCE(5, "淇濆崟瀹屾垚","淇濋櫓鐢熸晥璧锋湡锛�${param1}鍙樻洿涓�${param2}",0),
+        COMPANY_APPLY_RETURN(6, "鐢宠閫�鍥�","鎻愪氦鎰忚锛�${param}",0),
+        COMPANY_APPLY_CLOSE(7, "鍏抽棴鐢宠","",0),
+        PLATFORM_AGREE_BACK(8, "鍚屾剰閫�鍥炵敵璇�","",0),
+        PLATFORM_UN_AGREE_BACK(9, "椹冲洖閫�鍥炵敵璇�","鎻愪氦鎰忚锛�${param}",0),
+        COMPANY_EDIT(10, "淇濆崟淇敼","鎻愪氦鎰忚锛�${param1}\n${param2}",0),
+        PLATFORM_CHECK_PASS(11, "鎶曚繚瀹℃牳閫氳繃","",0),
+        UPLOAD_AGAIN(26, "鍐嶆鎶曚繚","",0),
 
-        CA_CHANGUNIT_APPLY_SIGN(24, "鎹㈡垚鐢宠浼佷笟绛剧珷",""),
+
+        CA_PLATFORM_CHECK_PASS_NO(12, "閫�鍥炴姇淇�","鎻愪氦鎰忚锛�${param}",1),
+        CA_PLATFORM_AGREE_BACK_APPLY(13, "鍚屾剰閫�鍥炵敵璇�","鎻愪氦鎰忚锛�${param}",1),
+        CA_PLATFORM_APPROVE(14, "鎵瑰崟瀹屾垚","淇濋櫓鐢熸晥璧锋湡锛�${param1}鍙樻洿涓�${param2}",1),
+        CA_PLATFORM_CHECK_SIGNATURE(15, "浼佷笟绛剧珷","",1),
+        CA_COMPANY_EDIT(16, "鎵瑰崟淇敼","鎻愪氦鎰忚锛�${param1}\n${param2}",1),
+        CA_COMPANY_COMMIT(17, "鎻愪氦鎶曚繚","鎻愪氦鎰忚锛�${param}",1),
+        CA_COMPANY_BACK_APPLY(18, "鐢宠閫�鍥�","鎻愪氦鎰忚锛�${param}",1),
+        CA_COMPANY_CLOSE(19, "鍏抽棴璁㈠崟","",1),
+        CA_PALTFORM_REFUSE_APPLY(20, "椹冲洖閫�鍥炵敵璇�","",1),
+        CA_PALTFORM_EDIT_PIDAN(21, "淇敼鎵瑰崟","淇敼鍘熷洜锛�${param}",1),
+        PALTFORM_EDIT_BD(22, "淇敼淇濆崟","淇敼鍘熷洜锛�${param}",1),
+        CA_JIAJIAN_APPLY_SIGN(23, "鍔犲噺淇濈敵璇蜂紒涓氱绔�","",1),
+        CA_CHANGUNIT_APPLY_SIGN(24, "鎹㈡垚鐢宠浼佷笟绛剧珷","",1),
+        CA_UPLOAD_AGAIN(25, "鍐嶆鎶曚繚","",1),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
         private String info;
         private int key;
+        private int type;
 
         // 鏋勯�犳柟娉�
-        ApplyLogType(int key, String name,String info) {
+        ApplyLogType(int key, String name,String info,int type) {
             this.name = name;
             this.info = info;
             this.key = key;
+            this.type = type;
         }
 
         // 鏅�氭柟娉�
@@ -784,6 +798,16 @@
             }
             return null;
         }
+        public static List<Integer> getTypeList(int type) {
+            List<Integer> list = new ArrayList<>();
+            for (ApplyLogType c : ApplyLogType.values()) {
+                if (c.getType() == type) {
+                    list.add(c.getKey());
+                }
+            }
+            return list;
+        }
+
 
         // get set 鏂规硶
         public String getName() {
@@ -809,6 +833,15 @@
         public void setInfo(String info) {
             this.info = info;
         }
+
+
+        public int getType() {
+            return type;
+        }
+
+        public void setType(int type) {
+            this.type = type;
+        }
     }
 
     public  enum InsuranceApplyStatus {
@@ -822,7 +855,7 @@
         COMPANY_BACK_APPLY_WAIT_SIGNATURE(7, "浼佷笟鐢宠閫�鍥�(寰呯绔�)","鎻愪氦鎰忚锛�${param}",5),
         COMPANY_BACK_APPLY_SIGNATURE(8, "浼佷笟鐢宠閫�鍥�(宸茬绔�)","鎻愪氦鎰忚锛�${param}",5),
         CLOSE(9, "璁㈠崟鍏抽棴","",6),
-        PLATFORM_CHECK_PASS(10,"骞冲彴鎶曚繚瀹℃牳閫氳繃","鎻愪氦鎰忚锛�${param}",0),
+        PLATFORM_CHECK_PASS(10,"骞冲彴鎶曚繚瀹℃牳閫氳繃","鎻愪氦鎰忚锛�${param}",1),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
@@ -972,9 +1005,9 @@
 
     public  enum NoticeType {
 
-        ZERO(0, "寰呭鏍�","","","寰呭鏍�","宸茬敵璇�","寰呭彈鐞�"),
+        ZERO(0, "寰呭鎵�","","","寰呭鏍�","宸茬敵璇�","寰呭彈鐞�"),
         ONE(1, "浼佷笟寰呯缃�","","","宸ョ寰呭鏍�","","瀹屾垚鍙楃悊"),
-        TWO(2, "寰呭嚭鍗�","寰呭鏍�","寰呭鏍�","","",""),
+        TWO(2, "寰呭嚭鍗�","寰呭鎵�","寰呭鎵�","","",""),
         THREE(3, "鐢宠閫�鍥�","鐢宠閫�鍥�","鐢宠閫�鍥�","","",""),
         FOUR(4, "宸查��鍥�","宸查��鍥�","宸查��鍥�","","",""),
         FIVE(5, "鐢宠椹冲洖","鐢宠椹冲洖","鐢宠椹冲洖","","","")
diff --git a/server/service/src/main/java/com/doumee/core/utils/DateUtil.java b/server/service/src/main/java/com/doumee/core/utils/DateUtil.java
index ef4258d..a56ff98 100644
--- a/server/service/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/server/service/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -1298,7 +1298,7 @@
         calo.setTime(oldDate);
         caln.setTime(newDate);
         if(type==0||type==1){
-            return    calculateDaysBetweenDates(caln, calo) ;
+            return    calculateDaysBetweenDates(caln, calo)  + 1 ;
         }else if(type==2){
 
             int day = caln.get(Calendar.DATE);
diff --git a/server/service/src/main/java/com/doumee/service/business/TaxesService.java b/server/service/src/main/java/com/doumee/service/business/TaxesService.java
index c40fbef..28ca7da 100644
--- a/server/service/src/main/java/com/doumee/service/business/TaxesService.java
+++ b/server/service/src/main/java/com/doumee/service/business/TaxesService.java
@@ -92,6 +92,8 @@
     PageData<Taxes> findPage(PageWrap<Taxes> pageWrap);
 
     PageData<Taxes> findPageForCompany(PageWrap<Taxes> pageWrap);
+
+    List<Taxes> findListForCompany(Taxes queryModel);
     /**
      * 鏉′欢缁熻
      *
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
index d1c2c30..d599b6c 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java
@@ -637,7 +637,14 @@
         applyChangeMapper.updateById(applyChangeFee);
 
 
-        this.saveApplyLog(applyChange,Constants.ApplyChangeLogStatus.UPLOAD,null);
+
+        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_COMPANY_COMMIT;
+        String info =applyLogType.getInfo();
+//        info = info.replace("${param}", update.getCheckInfo());
+        ApplyLog log = new ApplyLog(applyChange,applyLogType.getName(),info,applyChange.getId(),applyLogType.getKey(), null, null);
+        applyLogMapper.insert(log);
+        
+
         return applyChange.getId();
     }
 
@@ -710,7 +717,15 @@
         BigDecimal fee = this.dealApplyChangeData(applyChange,insuranceApply,companySolution,solutions,loginUserInfo,BigDecimal.ZERO);
         applyChange.setFee(fee);
         applyChangeMapper.updateById(applyChange);
-        this.saveApplyLog(applyChange,Constants.ApplyChangeLogStatus.UPLOAD,null);
+
+
+        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_UPLOAD_AGAIN;
+        String info =applyLogType.getInfo();
+//        info = info.replace("${param}", update.getCheckInfo());
+        ApplyLog log = new ApplyLog(applyChange,applyLogType.getName(),info,applyChange.getId(),applyLogType.getKey(), null, null);
+        applyLogMapper.insert(log);
+
+
         return applyChange.getId();
     }
 
@@ -783,23 +798,18 @@
     }
 
 
-
-
-
-    public void saveApplyLog(ApplyChange applyChange,Constants.ApplyChangeLogStatus applyChangeLogStatus,String content){
+    public void saveApplyLog(ApplyChange applyChange,Constants.ApplyLogType applyLogType,String content){
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         ApplyLog applyLog = new ApplyLog();
         applyLog.setCreateDate(new Date());
         applyLog.setCreator(loginUserInfo.getId());
         applyLog.setIsdeleted(Constants.ZERO);
         applyLog.setApplyId(applyChange.getApplyId());
-        applyLog.setTitle(applyChangeLogStatus.getName());
+        applyLog.setTitle(applyLogType.getName());
         if(StringUtils.isNotBlank(content)){
-            applyLog.setContent(applyChangeLogStatus.getInfo().replace("${param}",content));
-        }else{
-            applyLog.setContent(applyChangeLogStatus.getInfo());
+            applyLog.setContent(applyLogType.getInfo().replace("${param}",content));
         }
-        applyLog.setObjType(applyChangeLogStatus.getKey());
+        applyLog.setObjType(applyLogType.getKey());
         applyLog.setObjId( applyChange.getId());
         applyLog.setStatus(applyChange.getStatus());
         applyLogMapper.insert(applyLog);
@@ -1190,7 +1200,7 @@
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�");
         }
 
-        Constants.ApplyChangeLogStatus applyChangeLogStatus = Constants.ApplyChangeLogStatus.RETURN_APPLY;
+        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.CA_PLATFORM_CHECK_PASS_NO;
 
         Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.APPLY_CHANGE;
         if(applyChange.getType().equals(Constants.ONE)){
@@ -1221,7 +1231,7 @@
 
 
         }else if(applyChangeOptDTO.getOptType().equals(4)){
-            applyChangeLogStatus = Constants.ApplyChangeLogStatus.PLATFORM_AGREE;
+            applyLogType = Constants.ApplyLogType.CA_PLATFORM_AGREE_BACK_APPLY;
             //骞冲彴鍚屾剰閫�鍥�
             if(loginUserInfo.getType().equals(Constants.ZERO)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲钩鍙扮鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
@@ -1232,7 +1242,7 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�侀敊璇棤娉曡繘琛岃鎿嶄綔!");
             }
         }else if(applyChangeOptDTO.getOptType().equals(5)){
-            applyChangeLogStatus = Constants.ApplyChangeLogStatus.PLATFORM_UN_AGREE;
+            applyLogType = Constants.ApplyLogType.CA_PALTFORM_REFUSE_APPLY;
             //骞冲彴椹冲洖閫�鍥�
             if(loginUserInfo.getType().equals(Constants.ZERO)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炲钩鍙扮鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
@@ -1249,7 +1259,7 @@
             }
         }else if(applyChangeOptDTO.getOptType().equals(6)){
             //浼佷笟鍏抽棴
-            applyChangeLogStatus = Constants.ApplyChangeLogStatus.CLOSE;
+            applyLogType = Constants.ApplyLogType.CA_COMPANY_CLOSE;
             if(!loginUserInfo.getType().equals(Constants.ONE)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氱鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
             }
@@ -1257,7 +1267,6 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�侀敊璇棤娉曡繘琛岃鎿嶄綔!");
             }
             applyChange.setStatus(Constants.ApplyChangeStatus.CLOSE.getKey());
-
 
             //瀛樺偍寰呭姙淇℃伅
             //鍒犻櫎鍏朵粬寰呭姙
@@ -1270,8 +1279,10 @@
         applyChange.setEditDate(new Date());
         applyChangeMapper.updateById(applyChange);
 
-        //瀛樺偍鏃ュ織鏁版嵁
-        this.saveApplyLog(applyChange,applyChangeLogStatus,applyChangeOptDTO.getOptIllustration());
+        String info = applyLogType.getInfo();
+        info = info.replace("${param}", applyChangeOptDTO.getOptIllustration());
+        ApplyLog log = new ApplyLog(applyChange,applyLogType.getName(),info,applyChange.getId(),applyLogType.getKey(), null, null);
+        applyLogMapper.insert(log);
     }
 
 
@@ -1302,6 +1313,7 @@
                         .selectAs(Company::getName,ApplyLog::getCompanyName)
                         .leftJoin(SystemUser.class,SystemUser::getId,ApplyLog::getCreator)
                         .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
+                        .in(ApplyLog::getObjType,Constants.ApplyLogType.getTypeList(Constants.ONE))
                         .eq(ApplyLog::getObjId,applyChange.getId())
                         .orderByAsc(ApplyLog::getCreateDate)
         );
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
index f9c7c8f..d8911d9 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java
@@ -817,7 +817,14 @@
         updBean.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
         insuranceApplyMapper.updateById(updBean);
         //瀛樺偍鏃ュ織鏁版嵁
-        this.saveApplyLog(insuranceApply,insuranceApplyStatus,null);
+        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.UPLOAD;
+        String info =applyLogType.getInfo();
+//        info = info.replace("${param}", update.getCheckInfo());
+        ApplyLog log = new ApplyLog(insuranceApply,applyLogType.getName(),info,insuranceApply.getId(),applyLogType.getKey(),null, null);
+        applyLogMapper.insert(log);
+
+
+
         //鍙戦�佸緟鍔炰笟鍔�
 
         //瀛樺偍寰呭姙淇℃伅
@@ -896,7 +903,12 @@
         insuranceApply.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
         insuranceApplyMapper.updateById(insuranceApply);
         //瀛樺偍鏃ュ織鏁版嵁
-        this.saveApplyLog(insuranceApply,insuranceApplyStatus,null);
+
+        Constants.ApplyLogType applyLogType = Constants.ApplyLogType.UPLOAD_AGAIN;
+        String info =applyLogType.getInfo();
+//        info = info.replace("${param}", update.getCheckInfo());
+        ApplyLog log = new ApplyLog(insuranceApply,applyLogType.getName(),info,insuranceApply.getId(),applyLogType.getKey(),null, null);
+        applyLogMapper.insert(log);
 
 
         //瀛樺偍寰呭姙淇℃伅
@@ -1009,43 +1021,6 @@
     }
 
 
-    public void saveApplyLog(InsuranceApply insuranceApply,Constants.InsuranceApplyStatus insuranceApplyStatus,String content){
-        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-        ApplyLog applyLog = new ApplyLog();
-        applyLog.setCreateDate(new Date());
-        applyLog.setCreator(loginUserInfo.getId());
-        applyLog.setIsdeleted(Constants.ZERO);
-        applyLog.setApplyId(insuranceApply.getId());
-        applyLog.setTitle(insuranceApplyStatus.getName());
-        applyLog.setContent(content);
-        applyLog.setObjType(insuranceApplyStatus.getKey());
-        applyLog.setObjId( insuranceApply.getId());
-        applyLog.setStatus(insuranceApply.getStatus());
-        applyLogMapper.insert(applyLog);
-    }
-
-
-
-//    public BigDecimal countDetailFee(Solutions solutions ,Date startDate,Date endDate){
-//        //鏌ヨ淇濋櫓瀹為檯鍛ㄦ湡
-//        Integer cycle = DateUtil.calculateBetween(endDate,startDate,solutions.getDataType());
-//        if(cycle==-1){
-//            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏃ユ湡淇℃伅閿欒!");
-//        }
-//        return solutions.getPrice().multiply(new BigDecimal(cycle));
-//    }
-
-//    public static void main(String[] args) {
-//        Date date1 = DateUtil.StringToDate("2023-03-01 00:00:00");
-//        Date date2 = DateUtil.StringToDate("2023-04-01 00:00:00");
-//        System.out.println(DateUtil.calculateBetween(date1,date2,0));
-//        System.out.println(DateUtil.calculateBetween(date1,date2,1));
-//        System.out.println(DateUtil.calculateBetween(date1,date2,2));
-//        System.out.println(DateUtil.calculateBetween(date1,date2,3));
-//
-//    }
-
-
     @Override
     public void deleteById(Integer id) {
         insuranceApplyMapper.deleteById(id);
@@ -1109,7 +1084,7 @@
         queryWrapper.select(" DATEDIFF( t.END_TIME ,now()  ) AS loseEfficacyDays ");
         queryWrapper.select(" ( select count(1) from apply_detail ad  where ad.apply_id = t.id ) as insureNum");
         if(!Objects.isNull(pageWrap.getModel())&&!Objects.isNull(pageWrap.getModel().getType())){
-            queryWrapper.select(" ( select sum(td.fee) from taxes ts inner join tax_detial td on td.TAX_ID = ts.id  where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id ) as taxesMoney");
+            queryWrapper.select(" ifnull(( select sum(td.fee) from taxes ts inner join tax_detial td on td.TAX_ID = ts.id  where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id ),0) as taxesMoney");
             queryWrapper.select(" ( select td.CREATE_DATE from taxes ts inner join tax_detial td on td.TAX_ID = ts.id  where ts.status != 2 and td.INSURANCE_APPLY_ID = t.id order by td.CREATE_DATE desc limit 1 ) as taxesLast ");
         }
         queryWrapper.leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId);
@@ -1302,6 +1277,7 @@
                         .selectAs(Company::getName,ApplyLog::getCompanyName)
                         .leftJoin(SystemUser.class,SystemUser::getId,ApplyLog::getCreator)
                         .leftJoin(Company.class,Company::getId,SystemUser::getCompanyId)
+                        .in(ApplyLog::getObjType,Constants.ApplyLogType.getTypeList(Constants.ZERO))
                         .eq(ApplyLog::getApplyId,insuranceApply.getId())
                         .orderByAsc(ApplyLog::getCreateDate)
         );
@@ -1472,7 +1448,6 @@
         info = info.replace("${param}", insuranceApplyOptDTO.getOptIllustration());
         ApplyLog log = new ApplyLog(insuranceApply,applyLogType.getName(),info,insuranceApply.getId(),applyLogType.getKey(),JSONObject.toJSONString(insuranceApply), JSONObject.toJSONString(insuranceApply));
         applyLogMapper.insert(log);
-//        this.saveApplyLog(insuranceApply,insuranceApplyStatus,null);
     }
 
 
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/TaxesServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/TaxesServiceImpl.java
index c744882..f9c781b 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/TaxesServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/TaxesServiceImpl.java
@@ -347,6 +347,7 @@
         queryWrapper.selectAll(Taxes.class);
         queryWrapper.selectAs(SystemUser::getRealname,Taxes::getCreatorName);
         queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Taxes::getCreator);
+
         Utils.MP.blankToNull(pageWrap.getModel());
         queryWrapper.eq(Taxes::getIsdeleted, Constants.ZERO);
         Taxes queryModel = pageWrap.getModel();
@@ -375,6 +376,29 @@
 
 
 
+    @Override
+    public List<Taxes> findListForCompany(Taxes queryModel) {
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        MPJLambdaWrapper<Taxes> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Taxes.class);
+        queryWrapper.selectAs(SystemUser::getRealname,Taxes::getCreatorName);
+        queryWrapper.leftJoin(SystemUser.class,SystemUser::getId,Taxes::getCreator);
+
+        queryWrapper.eq(Taxes::getIsdeleted, Constants.ZERO);
+        if(!user.getType().equals(Constants.ONE)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氱敤鎴锋棤娉曡繘琛岃涓氬姟鏌ヨ");
+        }
+        if(!Objects.isNull(queryModel)){
+            queryWrapper.ge(queryModel.getStartDate() != null,Taxes::getCreateDate, (queryModel.getStartDate()));
+            queryWrapper.le(queryModel.getEndDate() != null,Taxes::getCreateDate,  (queryModel.getEndDate()));
+            queryWrapper.eq(!Objects.isNull(queryModel.getInsuranceApplyId()),Taxes::getInsuranceApplyId,queryModel.getInsuranceApplyId());
+            queryWrapper.eq(!Objects.isNull(queryModel.getStatus()),Taxes::getStatus,queryModel.getStatus());
+        }
+        queryWrapper.orderByAsc(Taxes::getCreateDate);
+        return taxesJoinMapper.selectJoinList(Taxes.class, queryWrapper);
+    }
+
+
 
 
     @Override

--
Gitblit v1.9.3