From bd28e0ab635f43b608df6a2ab1823dcc6f78da93 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 01 二月 2024 20:46:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/company/src/main/java/com/doumee/api/business/DispatchUnitController.java                |    2 
 server/service/src/main/java/com/doumee/dao/business/model/Member.java                          |    9 
 server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java      |   37 
 server/service/src/main/java/com/doumee/service/business/impl/ApplyChagneDetailServiceImpl.java |   23 
 server/service/src/main/java/com/doumee/service/business/impl/NoticesServiceImpl.java           |  106 -
 server/platform/src/main/java/com/doumee/api/business/NoticesController.java                    |    2 
 server/service/src/main/java/com/doumee/service/business/ApplyChagneDetailService.java          |    2 
 server/company/src/main/java/com/doumee/api/business/NoticesController.java                     |    8 
 server/service/src/main/java/com/doumee/core/utils/Constants.java                               |  175 ++++
 server/service/src/main/java/com/doumee/service/business/impl/InsuranceApplyServiceImpl.java    |  118 ++
 company/src/components/enterprise/confirmJobType.vue                                            |    2 
 server/service/src/main/java/com/doumee/dao/business/model/Notices.java                         |   51 +
 company/src/components/business/OperaApplyChangeUnitDetailWindow.vue                            |   48 +
 company/src/views/enterprise/switchCourt.vue                                                    |  111 +-
 company/src/views/business/switchCourt.vue                                                      |    2 
 server/service/src/main/java/com/doumee/service/business/impl/ApplyChangeServiceImpl.java       |  105 ++
 company/src/components/enterprise/additionSubtractionApplication.vue                            |    7 
 company/src/components/enterprise/factoryChange.vue                                             |    6 
 company/src/api/business/applyChange.js                                                         |    5 
 company/src/components/enterprise/reinsurance.vue                                               |  594 +++++++++++++++
 server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java              |    3 
 server/service/src/main/java/com/doumee/service/business/impl/TaxesServiceImpl.java             |   74 -
 server/company/src/main/java/com/doumee/api/business/ApplyChagneDetailController.java           |    7 
 server/service/src/main/java/com/doumee/dao/business/model/MemberInsurance.java                 |   36 
 server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java            |   24 
 company/src/components/business/OperaApplyChangeDetailWindow.vue                                |   28 
 server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java      |   50 +
 company/src/components/enterprise/add_subtract_return.vue                                       |   72 +
 company/src/views/enterprise/add_subtract.vue                                                   |    7 
 company/src/components/enterprise/editFactoryChange.vue                                         |  501 +++++++++++++
 server/service/src/main/java/com/doumee/dao/business/join/NoticesJoinMapper.java                |   13 
 31 files changed, 1,955 insertions(+), 273 deletions(-)

diff --git a/company/src/api/business/applyChange.js b/company/src/api/business/applyChange.js
index 7f34754..de60e43 100644
--- a/company/src/api/business/applyChange.js
+++ b/company/src/api/business/applyChange.js
@@ -36,3 +36,8 @@
 export function applyChagneDetailList (data) {
     return request.post('/business/applyChagneDetail/list', data)
 }
+
+// 淇敼
+export function update (data) {
+    return request.post('/business/applyChange/update', data)
+}
diff --git a/company/src/components/business/OperaApplyChangeDetailWindow.vue b/company/src/components/business/OperaApplyChangeDetailWindow.vue
index 6f2e20d..7b74b15 100644
--- a/company/src/components/business/OperaApplyChangeDetailWindow.vue
+++ b/company/src/components/business/OperaApplyChangeDetailWindow.vue
@@ -12,21 +12,26 @@
                     <div class="desc_item_label_left">
                         <span>鎶曚繚浼佷笟锛歿{ apply.companyName }}</span>
                       <span v-if="model.status === 0">淇濆崟鐘舵�侊細寰呯缃�</span>
+<<<<<<< HEAD
+                      <span v-if="model.status === 1">淇濆崟鐘舵�侊細寰呭鏍�</span>
+                      <span v-if="model.status === 2">淇濆崟鐘舵�侊細宸蹭笂浼犳壒鍗�</span>
+=======
                       <span v-if="model.status === 1">淇濆崟鐘舵�侊細宸茬绔�</span>
                       <span v-if="model.status === 2">淇濆崟鐘舵�侊細宸茬敓鏁�</span>
+>>>>>>> 35bd55ad951fe8c5fb997dfa7bd836ad53db96fe
                       <span v-if="model.status === 3 || model.status === 4">淇濆崟鐘舵�侊細閫�鍥炵敵璇�</span>
                       <span v-if="model.status === 5 || model.status === 8">淇濆崟鐘舵�侊細宸查��鍥�</span>
-                      <span v-if="model.status ===7">淇濆崟鐘舵�侊細宸插叧闂�</span>
+                      <span v-if="model.status === 7 || model.status === 6">淇濆崟鐘舵�侊細宸插叧闂�</span>
                         <span>鎻愪氦鏃堕棿锛歿{ model.createDate }}</span>
                     </div>
                   <div class="desc_item_label_right">
                       <template v-if="userInfo.type === 1">
                           <el-button type="primary" @click="$refs.ApplyChangeDetails.open('鍔犲噺淇濊鍗�',apply,model)">瀵煎嚭璇﹀崟</el-button>
-                          <el-button v-if="[5, 8].includes(model.status)" type="primary" @click="$refs.additionSubtractionApplication.open('鍔犲噺淇濈敵璇�', {id: dataId})">鍐嶆鎶曚繚</el-button>
+                          <el-button v-if="[5, 8].includes(model.status)" type="primary" @click="$refs.reinsurance.open('鍔犲噺淇濈敵璇�', {id: dataId, applyChangId: modelId})">鍐嶆鎶曚繚</el-button>
                           <el-button type="primary" v-if="model.status == 0" @click="goSign">绛剧讲鐢宠鍗�</el-button>
-                          <el-button v-if="[2, 3, 7].includes(model.status)" type="primary">鐢宠閫�鍥�</el-button>
+                          <el-button v-if="[0, 1, 2, 3, 7].includes(model.status)" type="primary" @click="$refs.add_subtract_return.open('鐢宠閫�鍥�', { id: modelId })">鐢宠閫�鍥�</el-button>
                           <el-button v-if="model.status == 5" type="primary" @click="viewApplyFile">鏌ョ湅鐢宠鍗�</el-button>
-                          <el-button v-if="model.status == 5" type="primary" @click="viewPidan">鏌ョ湅鎵瑰崟</el-button>
+                          <el-button v-if="model.status == 2" type="primary" @click="viewPidan">鏌ョ湅鎵瑰崟</el-button>
                           <el-button v-if="[5, 8].includes(model.status)" type="primary" @click="closeOrder">鍏抽棴璁㈠崟</el-button>
                       </template>
                         <template v-else>
@@ -180,11 +185,12 @@
         <ApplyChangeDetails ref="ApplyChangeDetails" @success="successEvent" />
         <OperaApplyChangeCheckWindow ref="OperaApplyChangeCheckWindow" @success="successEvent" />
         <!--    浼佷笟鐢宠閫�鍥�    -->
-        <applyReturn ref="applyReturn" @success="successEvent" />
+<!--        <applyReturn ref="applyReturn" @success="successEvent" />-->
+        <add_subtract_return ref="add_subtract_return" @success="successEvent" />
         <!--    鏂板鎶曚繚    -->
         <OperaInsuranceApply ref="OperaInsuranceApply" @success="successEvent" />
         <!--    鍔犲噺淇濈敵璇�    -->
-        <additionSubtractionApplication ref="additionSubtractionApplication" @success="successEvent" />
+        <reinsurance ref="reinsurance" @success="successEvent" />
         <!--    鎹㈠巶鐢宠    -->
         <factoryChange ref="factoryChange" @success="successEvent" />
     </GlobalWindow>
@@ -195,9 +201,9 @@
 import GlobalWindow from '@/components/common/GlobalWindow'
 import ApplyChangeDetails from '@/components/business/ApplyChangeDetails'
 import OperaApplyChangeCheckWindow from '@/components/business/OperaApplyChangeCheckWindow'
-import additionSubtractionApplication from '@/components/enterprise/additionSubtractionApplication'
+import reinsurance from '@/components/enterprise/reinsurance'
 import factoryChange from '@/components/enterprise/factoryChange'
-import applyReturn from '@/components/enterprise/applyReturn'
+import add_subtract_return from '@/components/enterprise/add_subtract_return'
 import {
   getDetail,
   getChangeDetail,
@@ -215,9 +221,9 @@
       GlobalWindow,
       ApplyChangeDetails,
       OperaApplyChangeCheckWindow,
-      applyReturn,
+      add_subtract_return,
       OperaInsuranceApply,
-      additionSubtractionApplication,
+      reinsurance,
       factoryChange
   },
   data () {
@@ -273,7 +279,7 @@
             this.search()
       },
       closeOrder() {
-          this.$confirm('纭鍏抽棴娆′繚鍗曞悧?', '鎻愮ず', {
+          this.$confirm('纭鍏抽棴姝よ鍗曞悧?', '鎻愮ず', {
               confirmButtonText: '纭畾',
               cancelButtonText: '鍙栨秷',
               type: 'warning'
diff --git a/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue b/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue
index 085150b..40346f0 100644
--- a/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue
+++ b/company/src/components/business/OperaApplyChangeUnitDetailWindow.vue
@@ -12,8 +12,13 @@
                     <div class="desc_item_label_left">
                         <span>鎶曚繚浼佷笟锛歿{ apply.companyName }}</span>
                       <span v-if="model.status === 0">淇濆崟鐘舵�侊細寰呯缃�</span>
+<<<<<<< HEAD
+                      <span v-if="model.status === 1">淇濆崟鐘舵�侊細寰呭鏍�</span>
+                      <span v-if="model.status === 2">淇濆崟鐘舵�侊細宸蹭笂浼犳壒鍗�</span>
+=======
                       <span v-if="model.status === 1">淇濆崟鐘舵�侊細宸茬绔�</span>
                       <span v-if="model.status === 2">淇濆崟鐘舵�侊細宸茬敓鏁�</span>
+>>>>>>> 35bd55ad951fe8c5fb997dfa7bd836ad53db96fe
                       <span v-if="model.status === 3 || model.status === 4">淇濆崟鐘舵�侊細閫�鍥炵敵璇�</span>
                       <span v-if="model.status ===5 || model.status === 8">淇濆崟鐘舵�侊細宸查��鍥�</span>
                       <span v-if="model.status ===7">淇濆崟鐘舵�侊細宸插叧闂�</span>
@@ -21,13 +26,14 @@
                     </div>
                   <div class="desc_item_label_right">
                       <template v-if="userInfo.type === 1">
-                          <el-button v-if="[0, 2, 3, 10].includes(model.status)" type="danger" @click="$refs.applyReturn.open('鐢宠閫�鍥�', {id: dataId})">鐢宠閫�鍥�</el-button>
-                          <el-button v-if="model.status == 4" type="primary" @click="$refs.OperaInsuranceApply.open('鎶曚繚鐢宠', {id: dataId})">鍐嶆鎶曚繚</el-button>
-                          <el-button type="primary" @click="$refs.InsuranceDetails.open('鎶曚繚璇︽儏鍗�',model,0)">绛剧讲鐢宠鍗�</el-button>
-                          <el-button v-if="[2, 3, 5, 7, 8].includes(model.status)" type="primary" @click="viewToubaodan">鐢宠閫�鍥�</el-button>
-                          <el-button v-if="model.status == 5" type="primary" @click="viewBaoxiandan">鏌ョ湅鐢宠鍗�</el-button>
-                          <el-button v-if="model.status == 5" type="primary" @click="viewBaoxiandan">鏌ョ湅鎵瑰崟</el-button>
-                          <el-button v-if="model.status == 2" type="primary" @click="goSign">鍏抽棴璁㈠崟</el-button>
+                          <el-button type="primary" @click="$refs.ApplyChangeDetails.open('鎹㈠巶鐢宠璇﹀崟',apply,model)">瀵煎嚭璇﹀崟</el-button>
+<!--                          <el-button v-if="[0, 2, 3, 10].includes(model.status)" type="danger" @click="$refs.applyReturn.open('鐢宠閫�鍥�', {id: dataId})">鐢宠閫�鍥�</el-button>-->
+                          <el-button v-if="[5, 8].includes(model.status)" type="primary" @click="$refs.editFactoryChange.open('鎹㈠巶鐢宠', {id: dataId, applyChangId: modelId})">鍐嶆鎶曚繚</el-button>
+                          <el-button type="primary" v-if="model.status == 0"   @click="goSign">绛剧讲鐢宠鍗�</el-button>
+                          <el-button v-if="[0, 1, 2, 3, 7].includes(model.status)" type="primary" @click="$refs.add_subtract_return.open('鐢宠閫�鍥�', { id: modelId })">鐢宠閫�鍥�</el-button>
+                          <el-button v-if="model.status == 5" type="primary" @click="viewApplyFile">鏌ョ湅鐢宠鍗�</el-button>
+                          <el-button v-if="model.status == 5" type="primary" @click="viewPidan">鏌ョ湅鎵瑰崟</el-button>
+                          <el-button v-if="[5, 8].includes(model.status)" type="primary" @click="closeOrder">鍏抽棴璁㈠崟</el-button>
                       </template>
                         <template v-else>
                             <el-button type="primary" @click="$refs.ApplyChangeDetails.open('鎹㈠巶鐢宠璇﹀崟',apply,model)">瀵煎嚭璇﹀崟</el-button>
@@ -170,12 +176,15 @@
         <OperaApplyChangeUnitCheckWindow ref="OperaApplyChangeCheckWindow" @success="successEvent" />
         <!--    浼佷笟鐢宠閫�鍥�    -->
         <applyReturn ref="applyReturn" @success="successEvent" />
+        <add_subtract_return ref="add_subtract_return" @success="successEvent" />
         <!--    鏂板鎶曚繚    -->
         <OperaInsuranceApply ref="OperaInsuranceApply" @success="successEvent" />
         <!--    鍔犲噺淇濈敵璇�    -->
         <additionSubtractionApplication ref="additionSubtractionApplication" @success="successEvent" />
         <!--    鎹㈠巶鐢宠    -->
         <factoryChange ref="factoryChange" @success="successEvent" />
+
+        <editFactoryChange ref="editFactoryChange" @success="successEvent" />
     </GlobalWindow>
 </template>
 
@@ -186,13 +195,16 @@
 import OperaApplyChangeUnitCheckWindow from '@/components/business/OperaApplyChangeUnitCheckWindow'
 import additionSubtractionApplication from '@/components/enterprise/additionSubtractionApplication'
 import factoryChange from '@/components/enterprise/factoryChange'
+import editFactoryChange from '@/components/enterprise/editFactoryChange'
 import applyReturn from '@/components/enterprise/applyReturn'
+import add_subtract_return from '@/components/enterprise/add_subtract_return'
 import {
   getDetail,
   getChangeDetail,
   applyChagneDetailPage,
   getChangeUnitSignLink
 } from '@/api/business/insuranceApply'
+import { applyChangeOpt } from '@/api/business/applyChange'
 import OperaInsuranceApply from '@/components/enterprise/OperaInsuranceApplyWindow'
 import { mapState } from 'vuex'
 
@@ -206,7 +218,9 @@
       applyReturn,
       OperaInsuranceApply,
       additionSubtractionApplication,
-      factoryChange
+      factoryChange,
+      add_subtract_return,
+      editFactoryChange
   },
   data () {
     return {
@@ -257,6 +271,24 @@
         this.getDetail()
         this.getList()
      },
+      closeOrder() {
+          this.$confirm('纭鍏抽棴姝よ鍗曞悧?', '鎻愮ず', {
+              confirmButtonText: '纭畾',
+              cancelButtonText: '鍙栨秷',
+              type: 'warning'
+          }).then(() => {
+              applyChangeOpt({
+                  optType: 6,
+                  applyId: this.model.id
+              }).then(res => {
+                  this.getDetail()
+              }).catch(e => {
+                  this.$message.error(e)
+              })
+          }).catch(() => {
+
+          });
+      },
       resetting() {
             this.search()
       },
diff --git a/company/src/components/enterprise/add_subtract_return.vue b/company/src/components/enterprise/add_subtract_return.vue
new file mode 100644
index 0000000..402f62a
--- /dev/null
+++ b/company/src/components/enterprise/add_subtract_return.vue
@@ -0,0 +1,72 @@
+<template>
+    <GlobalWindow
+            :title="title"
+            width="40%"
+            :visible.sync="visible"
+            :confirm-working="isWorking"
+            @confirm="confirm"
+    >
+        <el-form ref="form" :model="form" label-width="130px">
+            <el-form-item label="濉啓鐢宠璇存槑">
+                <el-input type="textarea" v-model="form.remark"></el-input>
+            </el-form-item>
+        </el-form>
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    import { applyChangeOpt } from '@/api/business/applyChange'
+
+    export default {
+        name: 'add_subtract_return',
+        extends: BaseOpera,
+        components: { GlobalWindow },
+        data () {
+            return {
+                // 琛ㄥ崟鏁版嵁
+                form: {
+                    id: null,
+                    remark: ''
+                }
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/insurance',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+            open (title, target) {
+                this.title = title
+                this.visible = true
+                this.$nextTick(() => {
+                    this.$refs.form.resetFields()
+                    this.form[this.configData['field.id']] = null
+                })
+                this.$nextTick(() => {
+                    for (const key in this.form) {
+                        this.form[key] = target[key]
+                    }
+                })
+            },
+            confirm() {
+                this.isWorking = true
+                applyChangeOpt({ applyId: this.form.id, optIllustration: this.form.remark, optType: 3 })
+                    .then(res => {
+                        this.visible = false
+                        this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+                        this.$emit('success')
+                    })
+                    .catch(e => {
+                        this.$tip.apiFailed(e)
+                    })
+                    .finally(() => {
+                        this.isWorking = false
+                    })
+            }
+        }
+    }
+</script>
diff --git a/company/src/components/enterprise/additionSubtractionApplication.vue b/company/src/components/enterprise/additionSubtractionApplication.vue
index 2d369a8..6db50bd 100644
--- a/company/src/components/enterprise/additionSubtractionApplication.vue
+++ b/company/src/components/enterprise/additionSubtractionApplication.vue
@@ -183,7 +183,7 @@
     import confirmJobType from '@/components/enterprise/confirmJobType'
     import { all } from '@/api/business/solutions'
     import { getDetail } from '@/api/business/insuranceApply'
-    import { create, getChangeCountCyclePriceVO, applyChagneDetailList } from '@/api/business/applyChange'
+    import { create, getChangeCountCyclePriceVO } from '@/api/business/applyChange'
     export default {
         name: 'additionSubtractionApplication',
         extends: BaseOpera,
@@ -265,11 +265,6 @@
             },
             handleClick(e) {
                 this.activeName = e.index
-            },
-            getApplyChagneDetailList() {
-                applyChagneDetailList({
-
-                })
             },
             // 鑾峰彇鎶曚繚璇︽儏
             getDetails() {
diff --git a/company/src/components/enterprise/confirmJobType.vue b/company/src/components/enterprise/confirmJobType.vue
index b371ad2..07917d1 100644
--- a/company/src/components/enterprise/confirmJobType.vue
+++ b/company/src/components/enterprise/confirmJobType.vue
@@ -55,6 +55,8 @@
         methods: {
             open (title, arr) {
                 this.title = title
+                this.dw = ''
+                this.gz = ''
                 this.form.solutionId = arr.solutionId
                 this.data = arr.seleData
                 this.visible = true
diff --git a/company/src/components/enterprise/editFactoryChange.vue b/company/src/components/enterprise/editFactoryChange.vue
new file mode 100644
index 0000000..16619aa
--- /dev/null
+++ b/company/src/components/enterprise/editFactoryChange.vue
@@ -0,0 +1,501 @@
+<template>
+    <GlobalWindow
+            :title="title"
+            width="100%"
+            text="鎶曚繚鐢宠"
+            :visible.sync="visible"
+            :confirm-working="isWorking"
+            @confirm="confirm"
+    >
+        <div class="list">
+            <el-form :inline="true" ref="form" :model="form" :rules="rules" class="demo-form-inline">
+                <el-form-item label="淇濋櫓鏂规">
+                    <span>{{form.solutionsName}}</span>
+                </el-form-item>
+                <el-form-item label="鎵瑰崟鐢熸晥璧锋湡" prop="applyStartTime">
+                    <div style="display: flex; flex-direction: column;">
+                        <el-date-picker
+                            v-model="form.applyStartTime"
+                            type="datetime"
+                            :picker-options="pickerOptions"
+                            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>
+                    </div>
+                </el-form-item>
+                <el-form-item label="鎶曚繚骞撮緞" v-if="item">
+                    <span>{{item.minAge}} 鑷� {{item.maxAge}}</span>
+                </el-form-item>
+                <el-form-item label="璐圭敤" v-if="item">
+                    <span>{{item.price}}鍏�</span>
+                    <span v-if="item.timeUnit === 0">/澶�</span>
+                    <span v-if="item.timeUnit === 1">/鍗婃湀</span>
+                    <span v-if="item.timeUnit === 2">/鏈�</span>
+                    <span v-if="item.timeUnit === 3">/骞�</span>
+                    <span>/浜�</span>
+                </el-form-item>
+            </el-form>
+        </div>
+        <div class="desc_item_from">
+            <el-table
+                    :data="list"
+                    border
+                    style="width: 100%">
+                <el-table-column
+                        prop="code"
+                        align="center"
+                        label="鍏宠仈淇濆崟鍙�">
+                </el-table-column>
+                <el-table-column
+                        prop="solutionsName"
+                        label="淇濋櫓鏂规"
+                        align="center"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        prop="startTime"
+                        align="center"
+                        label="淇濋櫓鐢熸晥璧锋湡">
+                </el-table-column>
+                <el-table-column
+                        prop="endTime"
+                        align="center"
+                        label="淇濋櫓鐢熸晥姝㈡湡">
+                </el-table-column>
+                <el-table-column
+                        prop="insureNum"
+                        align="center"
+                        label="鎶曚繚浜烘暟">
+                </el-table-column>
+                <el-table-column
+                        prop="serviceDays"
+                        align="center"
+                        label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�">
+                </el-table-column>
+                <el-table-column
+                        prop="currentFee"
+                        align="center"
+                        label="褰撳墠璐圭敤(鍏�)">
+                </el-table-column>
+                <el-table-column
+                        prop="fee"
+                        align="center"
+                        label="鎬昏垂鐢�(鍏�)">
+                </el-table-column>
+            </el-table>
+        </div>
+        <div class="btns">
+            <div class="btns_item">
+                <el-button type="primary" @click="seleUser">閫夊彇鍛樺伐</el-button>
+                <el-button type="danger" @click="deleItem">鍒犻櫎</el-button>
+            </div>
+            <div class="btns_item">
+                <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
+            </div>
+        </div>
+        <el-table
+                :data="form.factory"
+                border
+                ref="multipleTable"
+                @selection-change="handleSelectionChange"
+                style="width: 100%;margin-bottom: 15px;">
+            <el-table-column
+                    type="selection"
+                    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="memberName"
+                    label="濮撳悕">
+            </el-table-column>
+            <el-table-column
+                    prop="idCard"
+                    label="韬唤璇佸彿">
+            </el-table-column>
+            <el-table-column
+                    prop="oldDuName"
+                    label="鍘熸淳閬e崟浣�">
+            </el-table-column>
+            <el-table-column
+                    prop="oldWorkTypeName"
+                    label="鍘熸墍灞炲伐绉�">
+            </el-table-column>
+            <el-table-column
+                    prop="duName"
+                    label="鍙樻洿鍚庢淳閬e崟浣�">
+            </el-table-column>
+            <el-table-column
+                    prop="workTypeName"
+                    label="鍙樻洿鍚庢墍灞炲伐绉�">
+            </el-table-column>
+            <el-table-column
+                    label="鎿嶄綔">
+                <template slot-scope="scope">
+                    <el-button type="text" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="info" v-if="item">
+            <span v-if="item.specialAgreement">{{item.specialAgreement}}</span>
+            <span v-if="item.specialInfo">{{item.specialInfo}}</span>
+            <span v-if="item.ortherInfo">{{item.ortherInfo}}</span>
+        </div>
+        <!--    閫夋嫨鍛樺伐    -->
+        <selectEmployees ref="selectEmployees" @result="getValue" />
+        <!--    娣诲姞鍛樺伐    -->
+        <addEmployee ref="addEmployee" @result="getValue" />
+        <!--    瀵煎叆鍚嶅崟    -->
+        <importEmployees ref="importEmployees" @result="getValue" />
+        <!--    纭宸ョ    -->
+        <confirmJobType ref="confirmJobType" @result="getUser" />
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    import selectEmployees from '@/components/enterprise/selectEmployees'
+    import addEmployee from '@/components/enterprise/addEmployee'
+    import importEmployees from '@/components/enterprise/importEmployees'
+    import confirmJobType from '@/components/enterprise/confirmJobType'
+    import { all } from '@/api/business/solutions'
+    import { getDetail, findList } from '@/api/business/insuranceApply'
+    import { create, update, applyChagneDetailList } from '@/api/business/applyChange'
+    export default {
+        name: 'editFactoryChange',
+        extends: BaseOpera,
+        components: { GlobalWindow, selectEmployees, addEmployee, importEmployees, confirmJobType },
+        data () {
+            return {
+                form: {
+                    id: null,
+                    applyChangId: '',
+                    solutionId: '',
+                    solutionsName: '',
+                    applyStartTime: '',
+                    applyEndTime: '',
+                    factory: []
+                },
+                pickerOptions: {},
+                price: '',
+                endTime: '',    // 	瀹為檯淇濋櫓鐢熸晥姝㈡湡
+                company: [],
+                seleData: [],
+                item: null,
+                // 楠岃瘉瑙勫垯
+                rules: {
+                    applyStartTime: [
+                        { required: true, message: '璇烽�夋嫨鎵瑰崟鐢熸晥璧锋湡' }
+                    ]
+                },
+                list: []
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/insuranceApply',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+            open (title, target) {
+                this.title = title
+                this.form.addDetailList = []
+                this.form.delDetailList = []
+                this.list = []
+                this.form.id = null
+                this.item = null
+                this.form.solutionId = ''
+                this.form.solutionsName = ''
+                this.form.applyStartTime = ''
+                this.form.applyEndTime = ''
+                if (target && target.id) {
+                    this.$nextTick(() => {
+                        this.$refs.form.resetFields()
+                        this.form.id = target.id
+                        this.form.applyChangId = target.applyChangId
+                        this.getDetails()
+                        this.getapplyChagneDetailList()
+                    })
+                } else {
+                    this.$nextTick(() => {
+                        this.$refs.form.resetFields()
+                        this.form[this.configData['field.id']] = null
+                    })
+                }
+                this.getCompany()
+                this.visible = true
+                // this.updatePickerOptions()
+            },
+            // 鑾峰彇鎹㈠巶浜哄憳
+            getapplyChagneDetailList() {
+                applyChagneDetailList({
+                    applyChangId: this.form.applyChangId,
+                    types: [2]
+                }).then(res => {
+                    res.forEach(item => {
+                        item.idCard = item.memberIdcardNo
+                        item.oldDuId = item.duId
+                        item.oldDuName = item.duName
+                        item.oldWorkTypeName = item.workTypeName
+                        item.oldWorktypeId = item.worktypeId
+                        item.workTypeName = ''
+                        item.worktypeId = ''
+                        item.duId = ''
+                        item.duName = ''
+                    })
+                    this.form.factory = res
+                })
+            },
+            // 鑾峰彇鎶曚繚璇︽儏
+            getDetails() {
+                findList({ applyId: this.form.id })
+                    .then(res => {
+                        res.forEach(item => {
+                            item.idCard = item.idcardNo
+                            item.fee = ''
+                        })
+                        res.forEach(item => {
+                            item.oldDuId = item.duId
+                            item.oldDuName = item.duName
+                            item.oldWorkTypeName = item.workTypeName
+                            item.oldWorktypeId = item.worktypeId
+                            item.workTypeName = ''
+                            item.worktypeId = ''
+                            item.duId = ''
+                            item.duName = ''
+                        })
+                        // this.form.factory = res
+                    })
+                getDetail(this.form.id)
+                    .then(res => {
+                        this.list.push(res)
+                        this.endTime = res.endTime
+                        this.form.solutionId = res.solutionId
+                        this.form.solutionsName = res.solutionsName
+                        this.pickerOptions = {
+                            disabledDate(time) {
+                                // - 8.64e7
+                                return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date().getTime()
+                            }
+                        };
+                        this.changeSolution1(res.solutionId)
+                    })
+            },
+            deleItem() {
+                if (this.seleData.length === 0) {
+                    this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
+                    return
+                }
+                this.seleData.forEach(item => {
+                    this.form.factory.forEach((row, index) => {
+                        if (item === row.memberName) {
+                            this.form.factory.splice(index, 1)
+                        }
+                    })
+                })
+            },
+            confirm() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        // if (this.form.addDetailList.length === 0) {
+                        //     this.$message.warning('鑷冲皯娣诲姞涓�椤瑰憳宸�')
+                        //     return
+                        // }
+                        for (let i = 0; i < this.form.factory.length; i++) {
+                            if (!this.form.factory[i].worktypeId || !this.form.factory[i].duId) {
+                                this.$message.warning('璇峰畬鍠勬淳閬e崟浣嶅拰宸ョ淇℃伅')
+                                return
+                            }
+                        }
+                        this.form.factory.forEach(item => {
+                            item.idcardNo = item.idCard
+                        })
+                        // let arr = JSON.parse(JSON.stringify(this.form.factory))
+                        // arr.forEach(item => {
+                        //     item.idcardNo = item.idCard
+                        // })
+                        this.isWorking = true
+                        update({
+                            id: this.form.applyChangId,
+                            applyId: this.form.id,
+                            changeDetailList: this.form.factory,
+                            validTime: this.form.applyStartTime,
+                            type: 1
+                        }).then(() => {
+                            this.visible = false
+                            this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+                            this.$emit('success')
+                        }).catch(e => {
+                            this.$tip.apiFailed(e)
+                        }).finally(() => {
+                            this.isWorking = false
+                        })
+                    }
+                })
+            },
+            seleUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.form.delDetailList, price: this.price, insuranceApplyId: this.form.id })
+            },
+            addUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.form.factory, price: this.price })
+            },
+            uploadUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.form.factory, price: this.price })
+            },
+            // 鍒囨崲鏂规
+            changeSolution1(e) {
+                this.company.forEach(item => {
+                    if (item.id === e) {
+                        this.item = item
+                    }
+                })
+                // this.tableData.forEach(item => {
+                //     item.fee = this.price
+                // })
+            },
+            dele(index) {
+                this.form.factory.splice(index, 1)
+            },
+            getUser(obj) {
+                console.log(obj)
+                this.seleData.forEach(item => {
+                    this.form.factory.forEach(row => {
+                        if (item === row.memberName) {
+                            row.workTypeName = obj.workTypeName
+                            row.worktypeId = obj.worktypeId
+                            row.duName = obj.duName
+                            row.duId = obj.duId
+                        }
+                    })
+                })
+                this.seleData = []
+                this.$refs.multipleTable.clearSelection();
+            },
+            // 閫夋嫨鍛樺伐
+            sele() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇烽�夋嫨淇濋櫓鏂规')
+                    return
+                }
+                if (this.seleData.length === 0) {
+                    this.$message.warning('璇烽�夋嫨鍛樺伐')
+                    return
+                }
+                this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.form.solutionId })
+            },
+            // 鏌ヨ鍏ㄩ儴鏂规
+            getCompany() {
+                all({})
+                    .then(res => {
+                        this.company = res
+                    })
+            },
+            getAgeByIdCard(idCard){
+                const sexAndAge = {}
+                //鑾峰彇鐢ㄦ埛韬唤璇佸彿鐮�
+                const userCard = idCard
+                //濡傛灉鐢ㄦ埛韬唤璇佸彿鐮佷负undefined鍒欒繑鍥炵┖
+                if (!userCard) {
+                    return sexAndAge
+                }
+                // 鑾峰彇鍑虹敓鏃ユ湡
+                const yearBirth = userCard.substring(6, 10)
+                const monthBirth = userCard.substring(10, 12)
+                const dayBirth = userCard.substring(12, 14)
+                // 鑾峰彇褰撳墠骞存湀鏃ュ苟璁$畻骞撮緞
+                const myDate = new Date()
+                const monthNow = myDate.getMonth() + 1
+                const dayNow = myDate.getDate()
+                let age = myDate.getFullYear() - yearBirth
+                if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) {
+                    age--
+                }
+                // 寰楀埌骞撮緞
+                sexAndAge.age = age
+                return sexAndAge.age
+            },
+            handleSelectionChange (e) {
+                this.seleData = e.map(item => item.memberName)
+            },
+            getValue(list) {
+                let arr = JSON.parse(JSON.stringify(list))
+
+                arr.forEach(item => {
+                    item.oldDuId = item.duId
+                    item.oldDuName = item.duName
+                    item.oldWorkTypeName = item.workTypeName
+                    item.oldWorktypeId = item.worktypeId
+
+                    item.duId = ''
+                    item.duName = ''
+                    item.workTypeName = ''
+                    item.worktypeId = ''
+                })
+                this.form.factory.push(...arr)
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .list {
+        width: 100%;
+    }
+    .btns {
+        width: 100%;
+        margin-bottom: 15px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        .btns_item {
+            display: flex;
+            align-items: center;
+        }
+    }
+    .submit {
+        width: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        margin-bottom: 15px;
+    }
+    .desc_item_from {
+        width: 100%;
+        margin-bottom: 10px;
+        .desc_item_from_page {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: end;
+            margin-top: 10px;
+        }
+    }
+    .desc_item_cate {
+        width: 100%;
+        margin-bottom: 10px;
+    }
+    .info {
+        width: 100%;
+        font-size: 14px;
+        color: black;
+    }
+</style>
diff --git a/company/src/components/enterprise/factoryChange.vue b/company/src/components/enterprise/factoryChange.vue
index b2fe3b0..cf2bfb7 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="date"
+                            type="datetime"
                             :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/reinsurance.vue b/company/src/components/enterprise/reinsurance.vue
new file mode 100644
index 0000000..cd566c5
--- /dev/null
+++ b/company/src/components/enterprise/reinsurance.vue
@@ -0,0 +1,594 @@
+<template>
+    <GlobalWindow
+        :title="title"
+        width="100%"
+        text="鎶曚繚鐢宠"
+        :visible.sync="visible"
+        :confirm-working="isWorking"
+        @confirm="confirm"
+    >
+        <div class="list">
+            <el-form :inline="true" ref="form" :model="form" :rules="rules" class="demo-form-inline">
+                <el-form-item label="淇濋櫓鏂规">
+                    <span>{{form.solutionsName}}</span>
+                </el-form-item>
+                <el-form-item label="鎵瑰崟鐢熸晥璧锋湡" prop="applyStartTime">
+                    <div style="display: flex; flex-direction: column;">
+                        <el-date-picker
+                                @change="changeApplyStartTime"
+                                v-model="form.applyStartTime"
+                                type="date"
+                                :picker-options="pickerOptions"
+                                value-format="yyyy-MM-dd"
+                                format="yyyy 骞� MM 鏈� dd 鏃�"
+                                placeholder="閫夋嫨鏃ユ湡">
+                        </el-date-picker>
+                        <span style="color: #F95601; font-size: 14px;">锛堟鏃ョ敓鏁堟姇淇濊浜�17:30鍓嶆彁浜わ紝瓒呮椂鎻愪氦浠ヤ繚闄╁崟涓哄噯锛�</span>
+                    </div>
+                </el-form-item>
+                <el-form-item label="鎶曚繚骞撮緞" v-if="item">
+                    <span>{{item.minAge}} 鑷� {{item.maxAge}}</span>
+                </el-form-item>
+                <el-form-item label="璐圭敤" v-if="item">
+                    <span>{{item.price}}鍏�</span>
+                    <span v-if="item.timeUnit === 0">/澶�</span>
+                    <span v-if="item.timeUnit === 1">/鍗婃湀</span>
+                    <span v-if="item.timeUnit === 2">/鏈�</span>
+                    <span v-if="item.timeUnit === 3">/骞�</span>
+                    <span>/浜�</span>
+                </el-form-item>
+            </el-form>
+        </div>
+        <div class="desc_item_from">
+            <el-table
+                    :data="list"
+                    border
+                    style="width: 100%">
+                <el-table-column
+                        prop="code"
+                        align="center"
+                        label="鍏宠仈淇濆崟鍙�">
+                </el-table-column>
+                <el-table-column
+                        prop="solutionsName"
+                        label="淇濋櫓鏂规"
+                        align="center"
+                        width="180">
+                </el-table-column>
+                <el-table-column
+                        prop="startTime"
+                        align="center"
+                        label="淇濋櫓鐢熸晥璧锋湡">
+                </el-table-column>
+                <el-table-column
+                        prop="endTime"
+                        align="center"
+                        label="淇濋櫓鐢熸晥姝㈡湡">
+                </el-table-column>
+                <el-table-column
+                        prop="insureNum"
+                        align="center"
+                        label="鎶曚繚浜烘暟">
+                </el-table-column>
+                <el-table-column
+                        prop="serviceDays"
+                        align="center"
+                        label="鍦ㄤ繚鏃堕暱锛堝ぉ锛�">
+                </el-table-column>
+                <el-table-column
+                        prop="currentFee"
+                        align="center"
+                        label="褰撳墠璐圭敤(鍏�)">
+                </el-table-column>
+                <el-table-column
+                        prop="fee"
+                        align="center"
+                        label="鎬昏垂鐢�(鍏�)">
+                </el-table-column>
+            </el-table>
+        </div>
+        <div class="desc_item_cate">
+            <el-tabs v-model="activeName" @tab-click="handleClick">
+                <el-tab-pane label="鍔犱繚鍛樺伐" name="0"></el-tab-pane>
+                <el-tab-pane label="鍑忎繚鍛樺伐" name="1"></el-tab-pane>
+            </el-tabs>
+        </div>
+        <div class="btns">
+            <div class="btns_item">
+                <el-button type="primary" @click="seleUser">閫夊彇鍛樺伐</el-button>
+                <el-button type="primary" @click="uploadUser" v-if="activeName !== '1'">瀵煎叆鍛樺伐</el-button>
+                <el-button type="primary" @click="addUser" v-if="activeName !== '1'">娣诲姞鍛樺伐</el-button>
+                <el-button type="danger" @click="deleItem">鍒犻櫎</el-button>
+            </div>
+            <div class="btns_item" v-if="activeName !== '1'">
+                <el-button type="primary" @click="sele">閫夊彇娲鹃仯鍗曚綅</el-button>
+            </div>
+        </div>
+        <el-table
+                :data="activeName === '0' ? form.addDetailList : form.delDetailList"
+                border
+                show-summary
+                :summary-method="getSummaries"
+                ref="multipleTable"
+                @selection-change="handleSelectionChange"
+                style="width: 100%;margin-bottom: 15px;">
+            <el-table-column
+                type="selection"
+                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="memberName"
+                label="濮撳悕">
+            </el-table-column>
+            <el-table-column
+                prop="idCard"
+                label="韬唤璇佸彿">
+            </el-table-column>
+            <el-table-column
+                label="骞撮緞">
+                <template slot-scope="{row}">
+                    <template v-if="item">
+                        <span style="color: red;" v-if="(getAgeByIdCard(row.idCard) < item.minAge) || (getAgeByIdCard(row.idCard) > item.maxAge)">{{getAgeByIdCard(row.idCard)}}</span>
+                        <span v-else>{{ getAgeByIdCard(row.idCard) }}</span>
+                    </template>
+                </template>
+            </el-table-column>
+            <el-table-column
+                prop="duName"
+                label="娲鹃仯鍗曚綅">
+            </el-table-column>
+            <el-table-column
+                prop="workTypeName"
+                label="鎵�灞炲伐绉�">
+            </el-table-column>
+            <el-table-column
+                label="璐圭敤">
+                <template slot-scope="{row}">
+                    <span v-if="activeName === '0'">{{row.fee}}</span>
+                    <span v-else>-{{row.fee}}</span>
+                </template>
+            </el-table-column>
+            <el-table-column
+                    label="鎿嶄綔">
+                <template slot-scope="scope">
+                    <el-button type="text" style="color: red;" @click="dele(scope.$index)">鍒犻櫎</el-button>
+                </template>
+            </el-table-column>
+        </el-table>
+        <div class="info" v-if="item">
+            <span v-if="item.specialAgreement">{{item.specialAgreement}}</span>
+            <span v-if="item.specialInfo">{{item.specialInfo}}</span>
+            <span v-if="item.ortherInfo">{{item.ortherInfo}}</span>
+        </div>
+        <!--    閫夋嫨鍛樺伐    -->
+        <selectEmployees ref="selectEmployees" @result="getValue" />
+        <!--    娣诲姞鍛樺伐    -->
+        <addEmployee ref="addEmployee" @result="getValue" />
+        <!--    瀵煎叆鍚嶅崟    -->
+        <importEmployees ref="importEmployees" @result="getValue" />
+        <!--    纭宸ョ    -->
+        <confirmJobType ref="confirmJobType" @result="getUser" />
+    </GlobalWindow>
+</template>
+
+<script>
+    import BaseOpera from '@/components/base/BaseOpera'
+    import GlobalWindow from '@/components/common/GlobalWindow'
+    import selectEmployees from '@/components/enterprise/selectEmployees'
+    import addEmployee from '@/components/enterprise/addEmployee'
+    import importEmployees from '@/components/enterprise/importEmployees'
+    import confirmJobType from '@/components/enterprise/confirmJobType'
+    import { all } from '@/api/business/solutions'
+    import { getDetail } from '@/api/business/insuranceApply'
+    import { update, getChangeCountCyclePriceVO, applyChagneDetailList } from '@/api/business/applyChange'
+    export default {
+        name: 'reinsurance',
+        extends: BaseOpera,
+        components: { GlobalWindow, selectEmployees, addEmployee, importEmployees, confirmJobType },
+        data () {
+            return {
+                form: {
+                    id: null,
+                    applyChangId: '',
+                    solutionId: '',
+                    solutionsName: '',
+                    applyStartTime: '',
+                    applyEndTime: '',
+                    addDetailList: [],
+                    delDetailList: [],
+                },
+                activeName: '0',
+                pickerOptions: {},
+                price: '',
+                endTime: '',    // 	瀹為檯淇濋櫓鐢熸晥姝㈡湡
+                company: [],
+                seleData: [],
+                item: null,
+                // 楠岃瘉瑙勫垯
+                rules: {
+                    applyStartTime: [
+                        { required: true, message: '璇烽�夋嫨鎵瑰崟鐢熸晥璧锋湡' }
+                    ]
+                },
+                list: []
+            }
+        },
+        created () {
+            this.config({
+                api: '/business/insuranceApply',
+                'field.id': 'id'
+            })
+        },
+        methods: {
+            open (title, target) {
+                this.title = title
+                this.form.addDetailList = []
+                this.form.delDetailList = []
+                this.list = []
+                this.form.id = null
+                this.item = null
+                this.form.solutionId = ''
+                this.form.solutionsName = ''
+                this.form.applyStartTime = ''
+                this.form.applyEndTime = ''
+                if (target && target.id) {
+                    this.$nextTick(() => {
+                        this.$refs.form.resetFields()
+                        this.form.id = target.id
+                        this.form.applyChangId = target.applyChangId
+                        this.getDetails()
+                    })
+                } else {
+                    this.$nextTick(() => {
+                        this.$refs.form.resetFields()
+                        this.form[this.configData['field.id']] = null
+                    })
+                }
+                this.getCompany()
+                this.visible = true
+                // this.updatePickerOptions()
+            },
+            changeApplyStartTime(e) {
+                getChangeCountCyclePriceVO({
+                    applyId: this.form.id,
+                    validTime: e
+                }).then(res => {
+                    this.price = res.cyclePrice
+                    this.form.addDetailList.forEach(item => {
+                        item.fee = res.cyclePrice
+                    })
+                    this.form.delDetailList.forEach(item => {
+                        item.fee = res.cyclePrice
+                    })
+                })
+            },
+            handleClick(e) {
+                this.activeName = e.index
+            },
+            // 鑾峰彇鎶曚繚璇︽儏
+            getDetails() {
+                applyChagneDetailList({
+                    applyChangId: this.form.applyChangId,
+                    types: [0]
+                }).then(res => {
+                    res.forEach(item => {
+                        item.fee = ''
+                        item.idCard = item.memberIdcardNo
+                        item.workTypeName = ''
+                        item.worktypeId = ''
+                        item.duName = ''
+                        item.duId = ''
+                    })
+                    this.form.addDetailList = res
+                })
+                applyChagneDetailList({
+                    applyChangId: this.form.applyChangId,
+                    types: [1]
+                }).then(res => {
+                    res.forEach(item => {
+                        item.fee = ''
+                        item.idCard = item.memberIdcardNo
+                        item.workTypeName = ''
+                        item.worktypeId = ''
+                        item.duName = ''
+                        item.duId = ''
+                    })
+                    this.form.delDetailList = res
+                })
+                getDetail(this.form.id)
+                    .then(res => {
+                        this.list.push(res)
+                        this.endTime = res.endTime
+                        this.form.solutionId = res.solutionId
+                        this.form.solutionsName = res.solutionsName
+                        this.pickerOptions = {
+                            disabledDate(time) {
+                                // - 8.64e7
+                                return time.getTime() > new Date(res.endTime).getTime() || time.getTime() < new Date().getTime()
+                            }
+                        };
+                        this.changeSolution1(res.solutionId)
+                    })
+            },
+            getSummaries(param) {
+                const { columns, data } = param
+                const sums = []
+                columns.forEach((column, index) => {
+                    if (index === 0) {
+                        sums[index] = '鎬讳环'
+                        return
+                    } else if (index === 7) {
+                        let total = 0
+                        if (this.activeName === '0') {
+                            this.form.addDetailList.forEach(item => {
+                                total += item.fee
+                            })
+                            sums[index] = total
+                            return
+                        } else {
+                            this.form.delDetailList.forEach(item => {
+                                total += item.fee
+                            })
+                            sums[index] = '-' + total
+                            return
+                        }
+                        sums[index] = ''
+                    }
+                })
+                return sums
+            },
+            deleItem() {
+                if (this.seleData.length === 0) {
+                    this.$message.warning('鑷冲皯閫夋嫨涓�椤瑰唴瀹�')
+                    return
+                }
+                if (this.activeName === '0') {
+                    this.seleData.forEach(item => {
+                        this.form.addDetailList.forEach((row, index) => {
+                            if (item === row.name) {
+                                this.form.addDetailList.splice(index, 1)
+                            }
+                        })
+                    })
+                } else {
+                    this.seleData.forEach(item => {
+                        this.form.delDetailList.forEach((row, index) => {
+                            if (item === row.name) {
+                                this.form.delDetailList.splice(index, 1)
+                            }
+                        })
+                    })
+                }
+            },
+            confirm() {
+                this.$refs.form.validate((valid) => {
+                    if (valid) {
+                        // if (this.form.addDetailList.length === 0) {
+                        //     this.$message.warning('鑷冲皯娣诲姞涓�椤瑰憳宸�')
+                        //     return
+                        // }
+                        for (let i = 0; i < this.form.addDetailList.length; i++) {
+                            if (!this.form.addDetailList[i].worktypeId || !this.form.addDetailList[i].duId) {
+                                this.$message.warning('璇峰畬鍠勫姞淇濇淳閬e崟浣嶅拰宸ョ淇℃伅')
+                                return
+                            }
+                        }
+                        for (let i = 0; i < this.form.delDetailList.length; i++) {
+                            if (!this.form.delDetailList[i].worktypeId || !this.form.delDetailList[i].duId) {
+                                this.$message.warning('璇峰畬鍠勫噺淇濇淳閬e崟浣嶅拰宸ョ淇℃伅')
+                                return
+                            }
+                        }
+                        this.form.addDetailList.forEach(item => {
+                            item.idcardNo = item.idCard
+                        })
+                        this.form.delDetailList.forEach(item => {
+                            item.idcardNo = item.idCard
+                        })
+                        // let arr = JSON.parse(JSON.stringify(this.form.addDetailList))
+                        // arr.forEach(item => {
+                        //     item.idcardNo = item.idCard
+                        // })
+                        this.isWorking = true
+                        update({
+                            id: this.form.applyChangId,
+                            applyId: this.form.id,
+                            addDetailList: this.form.addDetailList,
+                            delDetailList: this.form.delDetailList,
+                            validTime: this.form.applyStartTime,
+                            type: 0
+                        }).then(() => {
+                            this.visible = false
+                            this.$tip.apiSuccess('鎿嶄綔鎴愬姛')
+                            this.$emit('success')
+                        }).catch(e => {
+                            this.$tip.apiFailed(e)
+                        }).finally(() => {
+                            this.isWorking = false
+                        })
+                    }
+                })
+            },
+            seleUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                if (this.activeName === '0') {
+                    this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.form.addDetailList, price: this.price, notInInsuranceApplyId: this.form.id })
+                } else {
+                    this.$refs.selectEmployees.open('閫夊彇鍛樺伐', { arr: this.form.delDetailList, price: this.price, insuranceApplyId: this.form.id })
+                }
+            },
+            addUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                if (this.activeName === '0') {
+                    this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.form.addDetailList, price: this.price })
+                } else {
+                    this.$refs.addEmployee.open('娣诲姞鍛樺伐', { arr: this.form.delDetailList, price: this.price })
+                }
+            },
+            uploadUser() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+                    return
+                }
+                if (this.activeName === '0') {
+                    this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.form.addDetailList, price: this.price })
+                } else {
+                    this.$refs.importEmployees.open('涓婁紶鍚嶅崟', { arr: this.form.delDetailList, price: this.price })
+                }
+            },
+            // 鍒囨崲鏂规
+            changeSolution1(e) {
+                this.company.forEach(item => {
+                    if (item.id === e) {
+                        this.item = item
+                    }
+                })
+                // this.tableData.forEach(item => {
+                //     item.fee = this.price
+                // })
+            },
+            dele(index) {
+                if (this.activeName === '0') {
+                    this.form.addDetailList.splice(index, 1)
+                } else {
+                    this.form.delDetailList.splice(index, 1)
+                }
+            },
+            getUser(obj) {
+                this.seleData.forEach(item => {
+                    if (this.activeName === '0') {
+                        this.form.addDetailList.forEach(row => {
+                            if (item === row.name) {
+                                row.workTypeName = obj.workTypeName
+                                row.worktypeId = obj.worktypeId
+                                row.duName = obj.duName
+                                row.duId = obj.duId
+                            }
+                        })
+                    } else {
+                        this.form.delDetailList.forEach(row => {
+                            if (item === row.name) {
+                                row.workTypeName = obj.workTypeName
+                                row.worktypeId = obj.worktypeId
+                                row.duName = obj.duName
+                                row.duId = obj.duId
+                            }
+                        })
+                    }
+                })
+                this.seleData = []
+                this.$refs.multipleTable.clearSelection();
+            },
+            // 閫夋嫨鍛樺伐
+            sele() {
+                if (!this.form.solutionId) {
+                    this.$message.warning('璇烽�夋嫨淇濋櫓鏂规')
+                    return
+                }
+                if (this.seleData.length === 0) {
+                    this.$message.warning('璇烽�夋嫨鍛樺伐')
+                    return
+                }
+                this.$refs.confirmJobType.open('纭宸ョ', { solutionId: this.form.solutionId })
+            },
+            // 鏌ヨ鍏ㄩ儴鏂规
+            getCompany() {
+                all({})
+                    .then(res => {
+                        this.company = res
+                    })
+            },
+            getAgeByIdCard(idCard){
+                if (!idCard) return ''
+                const sexAndAge = {}
+                //鑾峰彇鐢ㄦ埛韬唤璇佸彿鐮�
+                const userCard = idCard
+                //濡傛灉鐢ㄦ埛韬唤璇佸彿鐮佷负undefined鍒欒繑鍥炵┖
+                if (!userCard) {
+                    return sexAndAge
+                }
+                // 鑾峰彇鍑虹敓鏃ユ湡
+                const yearBirth = userCard.substring(6, 10)
+                const monthBirth = userCard.substring(10, 12)
+                const dayBirth = userCard.substring(12, 14)
+                // 鑾峰彇褰撳墠骞存湀鏃ュ苟璁$畻骞撮緞
+                const myDate = new Date()
+                const monthNow = myDate.getMonth() + 1
+                const dayNow = myDate.getDate()
+                let age = myDate.getFullYear() - yearBirth
+                if (monthNow < monthBirth || (monthNow == monthBirth && dayNow < dayBirth)) {
+                    age--
+                }
+                // 寰楀埌骞撮緞
+                sexAndAge.age = age
+                return sexAndAge.age
+            },
+            handleSelectionChange (e) {
+                this.seleData = e.map(item => item.name)
+            },
+            getValue(list) {
+                console.log(list)
+                if (this.activeName === '0') {
+                    this.form.addDetailList.push(...list)
+                } else {
+                    this.form.delDetailList.push(...list)
+                }
+            }
+        }
+    }
+</script>
+
+<style lang="scss" scoped>
+    .list {
+        width: 100%;
+    }
+    .btns {
+        width: 100%;
+        margin-bottom: 15px;
+        display: flex;
+        align-items: center;
+        justify-content: space-between;
+        .btns_item {
+            display: flex;
+            align-items: center;
+        }
+    }
+    .submit {
+        width: 100%;
+        display: flex;
+        align-items: center;
+        justify-content: center;
+        margin-bottom: 15px;
+    }
+    .desc_item_from {
+        width: 100%;
+        margin-bottom: 10px;
+        .desc_item_from_page {
+            width: 100%;
+            display: flex;
+            align-items: center;
+            justify-content: end;
+            margin-top: 10px;
+        }
+    }
+    .desc_item_cate {
+        width: 100%;
+        margin-bottom: 10px;
+    }
+    .info {
+        width: 100%;
+        font-size: 14px;
+        color: black;
+    }
+</style>
diff --git a/company/src/views/business/switchCourt.vue b/company/src/views/business/switchCourt.vue
index 9fece68..5bf3682 100644
--- a/company/src/views/business/switchCourt.vue
+++ b/company/src/views/business/switchCourt.vue
@@ -109,7 +109,7 @@
 import {all as solutionAll, all} from '@/api/business/solutions'
 import {pageAll as companyAll} from "@/api/business/company";
 export default {
-  name: 'add_subtract',
+  name: 'switchCourt',
   extends: BaseTable,
   components: { TableLayout, Pagination, OperaApplyChangeUnitDetailWindow },
   data () {
diff --git a/company/src/views/enterprise/add_subtract.vue b/company/src/views/enterprise/add_subtract.vue
index 80bf584..6fcd255 100644
--- a/company/src/views/enterprise/add_subtract.vue
+++ b/company/src/views/enterprise/add_subtract.vue
@@ -55,9 +55,10 @@
                 <el-table-column prop="status" label="淇濆崟鐘舵��" min-width="100px">
                     <template slot-scope="{row}">
                         <span v-if="row.status === 0">寰呯缃�</span>
-                        <span v-if="row.status === 1">宸茬绔�</span>
-                        <span v-if="row.status === 2">宸蹭笂浼犳壒鍗�</span>
-                        <span v-if="row.status === 3">閫�鍥炵敵璇�</span>
+                        <span v-if="row.status === 1">寰呭鏍�</span>
+                        <span v-if="row.status === 2">宸茬敓鏁�</span>
+                        <span v-if="row.status === 3 || row.status === 4">鐢宠閫�鍥�</span>
+                        <span v-if="row.status === 5 || row.status === 8">宸查��鍥�</span>
                     </template>
                 </el-table-column>
                 <el-table-column prop="applyCode" label="鍏宠仈淇濆崟鍙�" min-width="100px"></el-table-column>
diff --git a/company/src/views/enterprise/switchCourt.vue b/company/src/views/enterprise/switchCourt.vue
index 6ca0b5a..b967cef 100644
--- a/company/src/views/enterprise/switchCourt.vue
+++ b/company/src/views/enterprise/switchCourt.vue
@@ -2,38 +2,34 @@
     <TableLayout :permissions="['business:applychange:query']">
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
-            <el-form-item label="淇濆崟鐘舵��" prop="status">
+            <el-form-item label="鐘舵��" prop="status">
                 <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @change="search">
+                    <el-option label="鍏ㄩ儴" value=""></el-option>
                     <el-option label="寰呯缃�" value="0"></el-option>
-                    <el-option label="宸茬绔� " value="1"></el-option>
-                    <el-option label="宸蹭笂浼犳壒鍗�" value="2"></el-option>
-                    <el-option label="閫�鍥炵敵璇�" value="3"></el-option>
+                    <el-option label="寰呭鏍�" value="1"></el-option>
+                    <el-option label="宸茬敓鏁�" value="2"></el-option>
+                    <el-option label="鐢宠閫�鍥�" value="3"></el-option>
+                    <!--                    3 4 閮芥槸閫�鍥炵敵璇蜂腑-->
+                    <el-option label="宸查��鍥�" value="5"></el-option>
+                    <el-option label="宸插叧闂�" value="6"></el-option>
                 </el-select>
             </el-form-item>
-            <el-form-item label="鎶曚繚浼佷笟" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
+            <el-form-item label="淇濋櫓鏂规" prop="baseSolutionsId">
+                <el-select v-model="searchForm.baseSolutionsId" placeholder="璇烽�夋嫨" @change="search">
                     <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
-                    </el-option>
-                </el-select>
-            </el-form-item>
-            <el-form-item label="淇濋櫓鏂规" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨">
-                    <el-option
-                        v-for="item in options"
-                        :key="item.value"
-                        :label="item.label"
-                        :value="item.value">
+                        v-for="item in solutionList"
+                        :key="item.baseId"
+                        :label="item.name"
+                        :value="item.baseId">
                     </el-option>
                 </el-select>
             </el-form-item>
             <el-form-item label="鎻愪氦鏃ユ湡" prop="status">
                 <el-date-picker
-                    v-model="searchForm.status"
+                    @change="changeTime"
+                    v-model="searchForm.time"
                     type="daterange"
+                    value-format="yyyy-MM-dd"
                     range-separator="鑷�"
                     start-placeholder="寮�濮嬫棩鏈�"
                     end-placeholder="缁撴潫鏃ユ湡">
@@ -56,21 +52,21 @@
                         <span>{{scope.$index + 1}}</span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="status" label="淇濆崟鐘舵��" min-width="100px">
+                <el-table-column prop="status" label="鐘舵��" min-width="100px">
                     <template slot-scope="{row}">
                         <span v-if="row.status === 0">寰呯缃�</span>
-                        <span v-if="row.status === 1">宸茬绔�</span>
-                        <span v-if="row.status === 2">宸蹭笂浼犳壒鍗�</span>
-                        <span v-if="row.status === 3">閫�鍥炵敵璇�</span>
+                        <span v-if="row.status === 1">寰呭鏍�</span>
+                        <span v-if="row.status === 2">宸茬敓鏁�</span>
+                        <span v-if="row.status === 3 || row.status === 4">鐢宠閫�鍥�</span>
+                        <span v-if="row.status === 5 || row.status === 8">宸查��鍥�</span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="code" label="鎶曚繚浼佷笟" min-width="100px"></el-table-column>
+                <el-table-column prop="validCode" label="鎵瑰崟鍙�" min-width="100px"></el-table-column>
                 <el-table-column prop="code" label="鍏宠仈淇濆崟鍙�" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="鍔犱繚浜烘暟锛堜汉锛�" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="鍑忎繚浜烘暟锛堜汉锛�" min-width="100px"></el-table-column>
-                <el-table-column prop="code" label="璐圭敤鍙樻洿" min-width="100px"></el-table-column>
+                <el-table-column prop="solutionsName" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
+                <el-table-column prop="changeNum" label="鎹㈠巶浜烘暟锛堜汉锛�" min-width="100px"></el-table-column>
                 <el-table-column prop="createDate" label="鎻愪氦鏃堕棿" min-width="100px"></el-table-column>
+                <el-table-column prop="startTime" label="鎵瑰崟鐢熸晥璧锋湡" min-width="100px"></el-table-column>
                 <el-table-column
                     label="鎿嶄綔"
                     min-width="120"
@@ -98,7 +94,7 @@
     import TableLayout from '@/layouts/TableLayout'
     import Pagination from '@/components/common/Pagination'
     import OperaApplyChangeUnitDetailWindow from '@/components/business/OperaApplyChangeUnitDetailWindow'
-    import {all as solutionAll} from "@/api/business/solutions";
+    import {all as solutionAll, all} from '@/api/business/solutions'
     import {pageAll as companyAll} from "@/api/business/company";
     export default {
         name: 'switchCourt',
@@ -109,9 +105,14 @@
                 // 鎼滅储
                 searchForm: {
                     status: '',
-                    type: ''
+                    type: '1',
+                    solutionsId: '',
+                    createDateE: '',
+                    createDateS: '',
+                    time: []
                 },
-                options: []
+                solutionList:[],
+                companyList:[]
             }
         },
         created () {
@@ -122,22 +123,36 @@
                 'field.main': 'id'
             })
             this.search()
+            this.loadSelectList()
         },
-      methods:{
-        // handlePageChange() {
-        //   this.search()
-        // },
-        loadSelectList() {
-          solutionAll({dataType:2}).then(res => {
-            this.solutionList = res
-          }).catch(err => {
-          })
-          companyAll({}).then(res => {
-            this.companyList = res
-          }).catch(err => {
-          })
+        methods: {
+            loadSelectList() {
+                solutionAll({dataType:2}).then(res => {
+                    this.solutionList = res
+                }).catch(err => {
+                })
+                companyAll({}).then(res => {
+                    this.companyList = res
+                }).catch(err => {
+                })
+            },
+            changeTime(e) {
+                if (e.length > 0) {
+                    this.searchForm.createDateS = e[0]
+                    this.searchForm.createDateE = e[1]
+                } else {
+                    this.searchForm.createDateS = ''
+                    this.searchForm.createDateE = ''
+                }
+                this.search()
+            },
+            reset() {
+                this.searchForm.createDateS = ''
+                this.searchForm.createDateE = ''
+                this.searchForm.time = []
+                this.$refs.searchForm.resetFields();
+                this.search()
+            }
         }
-
-      }
     }
 </script>
diff --git a/server/company/src/main/java/com/doumee/api/business/ApplyChagneDetailController.java b/server/company/src/main/java/com/doumee/api/business/ApplyChagneDetailController.java
index 951ea62..5acdfe1 100644
--- a/server/company/src/main/java/com/doumee/api/business/ApplyChagneDetailController.java
+++ b/server/company/src/main/java/com/doumee/api/business/ApplyChagneDetailController.java
@@ -75,6 +75,13 @@
         return ApiResponse.success(applyChagneDetailService.findPageForCompany(pageWrap));
     }
 
+    @ApiOperation("鍒楄〃鏌ヨ")
+    @PostMapping("/list")
+    @RequiresPermissions("business:applychagnedetail:query")
+    public ApiResponse<List<ApplyChagneDetail>> findList (@RequestBody ApplyDetailPageDTO applyDetailPageDTO) {
+        return ApiResponse.success(applyChagneDetailService.findListForCompany(applyDetailPageDTO));
+    }
+
     @ApiOperation("瀵煎嚭Excel")
     @PostMapping("/exportExcel")
     @RequiresPermissions("business:applychagnedetail:exportExcel")
diff --git a/server/company/src/main/java/com/doumee/api/business/DispatchUnitController.java b/server/company/src/main/java/com/doumee/api/business/DispatchUnitController.java
index 201fd18..e5af4b1 100644
--- a/server/company/src/main/java/com/doumee/api/business/DispatchUnitController.java
+++ b/server/company/src/main/java/com/doumee/api/business/DispatchUnitController.java
@@ -43,7 +43,7 @@
     }
 
     @PreventRepeat
-    @ApiOperation("娣诲姞宸ョ")
+    @ApiOperation("娣诲姞鏂规宸ョ")
     @PostMapping("/createSolution")
     @RequiresPermissions("business:dispatchunit:create")
     public ApiResponse createSolution(@RequestBody SaveDispatchUnitDTO saveDispatchUnitDTO) {
diff --git a/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java b/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
index be8ece9..ef55325 100644
--- a/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
+++ b/server/company/src/main/java/com/doumee/api/business/InsuranceApplyController.java
@@ -113,7 +113,7 @@
     public ApiResponse<InsuranceApply> findById(@PathVariable Integer id) {
         return ApiResponse.success(insuranceApplyService.findDetail(id));
     }
-    @ApiOperation("鏍规嵁ID鏌ヨ")
+    @ApiOperation("浼佷笟绛剧讲淇濆崟")
     @GetMapping("/getSignLink/{id}")
     @RequiresPermissions("business:insuranceapply:query")
     public ApiResponse<String> getSignLink(@PathVariable Integer id) {
@@ -127,7 +127,6 @@
         insuranceApplyService.applyOpt(insuranceApplyOptDTO);
         return ApiResponse.success("鎿嶄綔鎴愬姛");
     }
-
 
     @ApiOperation("鑾峰彇淇濆崟姝㈡湡涓庡垵濮嬮噾棰�")
     @PostMapping("/getCountCyclePriceVO")
diff --git a/server/company/src/main/java/com/doumee/api/business/NoticesController.java b/server/company/src/main/java/com/doumee/api/business/NoticesController.java
index 5cd022a..42f845b 100644
--- a/server/company/src/main/java/com/doumee/api/business/NoticesController.java
+++ b/server/company/src/main/java/com/doumee/api/business/NoticesController.java
@@ -4,13 +4,16 @@
 import com.doumee.core.annotation.excel.ExcelExporter;
 import com.doumee.core.annotation.pr.PreventRepeat;
 import com.doumee.core.model.ApiResponse;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
+import com.doumee.core.utils.Constants;
 import com.doumee.dao.business.model.Notices;
 import com.doumee.service.business.NoticesService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.RequiresPermissions;    
+import org.apache.shiro.SecurityUtils;
+import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import javax.servlet.http.HttpServletResponse;
@@ -71,6 +74,9 @@
     @PostMapping("/page")
     @RequiresPermissions("business:notices:query")
     public ApiResponse<PageData<Notices>> findPage (@RequestBody PageWrap<Notices> pageWrap) {
+        LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        pageWrap.getModel().setCompanyId(loginUserInfo.getCompanyId());
+        pageWrap.getModel().setPalt(Constants.ONE);
         return ApiResponse.success(noticesService.findPage(pageWrap));
     }
 
diff --git a/server/platform/src/main/java/com/doumee/api/business/NoticesController.java b/server/platform/src/main/java/com/doumee/api/business/NoticesController.java
index 5cd022a..d3110c5 100644
--- a/server/platform/src/main/java/com/doumee/api/business/NoticesController.java
+++ b/server/platform/src/main/java/com/doumee/api/business/NoticesController.java
@@ -6,6 +6,7 @@
 import com.doumee.core.model.ApiResponse;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.model.PageData;
+import com.doumee.core.utils.Constants;
 import com.doumee.dao.business.model.Notices;
 import com.doumee.service.business.NoticesService;
 import io.swagger.annotations.Api;
@@ -71,6 +72,7 @@
     @PostMapping("/page")
     @RequiresPermissions("business:notices:query")
     public ApiResponse<PageData<Notices>> findPage (@RequestBody PageWrap<Notices> pageWrap) {
+        pageWrap.getModel().setPalt(Constants.ZERO);
         return ApiResponse.success(noticesService.findPage(pageWrap));
     }
 
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 14fe22d..c6be2c9 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
@@ -910,6 +910,181 @@
         }
     }
 
+
+    public  enum NoticeObjectType {
+        INSURANCE_APPLY(0, "鎶曚繚鐢宠","淇濋櫓鏂规"),
+        APPLY_CHANGE(1, "鍔犲噺淇濈敵璇�","淇濋櫓鏂规"),
+        CHANGE_FACTORY(2, "鍛樺伐鎹㈠巶鐢宠","淇濋櫓鏂规"),
+        DISPATCH_UNIT(3, "娲鹃仯鍗曚綅鐢宠","娲鹃仯鍗曚綅"),
+        TAXES(4, "寮�绁ㄧ敵璇�","寮�绁ㄩ噾棰�"),
+        SETTLE_CLAIMS(5, "鎶ユ鐞嗚禂","鎶ユ浜�")
+        ;
+        // 鎴愬憳鍙橀噺
+        private int key;
+        private String name;
+        private String info;
+
+        // 鏋勯�犳柟娉�
+        NoticeObjectType(int key, String name,String info) {
+            this.name = name;
+            this.key = key;
+            this.info = info;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getName(int index) {
+            for (NoticeObjectType c : NoticeObjectType.values()) {
+                if (c.getKey() == index) {
+                    return c.name;
+                }
+            }
+            return null;
+        }
+
+
+        // get set 鏂规硶
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public int getKey() {
+            return key;
+        }
+
+        public void setKey(int key) {
+            this.key = key;
+        }
+
+        public String getInfo() {
+            return info;
+        }
+
+        public void setInfo(String info) {
+            this.info = info;
+        }
+
+    }
+
+
+    public  enum NoticeType {
+
+        ZERO(0, "寰呭鎵�","","","寰呭鏍�","宸茬敵璇�","寰呭彈鐞�"),
+        ONE(1, "浼佷笟寰呯缃�","","","宸ョ寰呭鏍�","","瀹屾垚鍙楃悊"),
+        TWO(2, "寰呭嚭鍗�","寰呭鎵�","寰呭鎵�","","",""),
+        THREE(3, "鐢宠閫�鍥�","鐢宠閫�鍥�","鐢宠閫�鍥�","","",""),
+        FOUR(4, "宸查��鍥�","宸查��鍥�","宸查��鍥�","","",""),
+        FIVE(5, "鐢宠椹冲洖","鐢宠椹冲洖","鐢宠椹冲洖","","","")
+        ;
+
+        // 鎴愬憳鍙橀噺
+        private int status;
+        private String insuranceApplyDetail;
+        private String applyChangeDetail;
+        private String changeFactoryDetail;
+        private String dispatchUnitDetail;
+        private String taxesDetail;
+        private String settleClaimsDetail;
+
+        // 鏋勯�犳柟娉�
+        NoticeType(int status, String insuranceApplyDetail,String applyChangeDetail
+                , String changeFactoryDetail,String dispatchUnitDetail
+                , String taxesDetail,String settleClaimsDetail) {
+            this.status = status;
+            this.insuranceApplyDetail = insuranceApplyDetail;
+            this.applyChangeDetail = applyChangeDetail;
+            this.changeFactoryDetail = changeFactoryDetail;
+            this.dispatchUnitDetail = dispatchUnitDetail;
+            this.taxesDetail = taxesDetail;
+            this.settleClaimsDetail = settleClaimsDetail;
+        }
+
+        // 鏅�氭柟娉�
+        public static String getDetail(int status,int type) {
+            for (NoticeType c : NoticeType.values()) {
+                if (c.getStatus() == status) {
+                    if(type==NoticeObjectType.INSURANCE_APPLY.getKey() ){
+                        return c.getInsuranceApplyDetail();
+                    }else if(type == NoticeObjectType.APPLY_CHANGE.getKey()){
+                        return c.getApplyChangeDetail();
+                    }else if(type == NoticeObjectType.CHANGE_FACTORY.getKey()){
+                        return c.getChangeFactoryDetail();
+                    }else if(type == NoticeObjectType.DISPATCH_UNIT.getKey()){
+                        return c.getDispatchUnitDetail();
+                    }else if(type == NoticeObjectType.TAXES.getKey()){
+                        return c.getTaxesDetail();
+                    }else if(type == NoticeObjectType.SETTLE_CLAIMS.getKey()){
+                        return c.getSettleClaimsDetail();
+                    }
+                }
+            }
+            return null;
+        }
+
+        // get set 鏂规硶
+        public int getStatus() {
+            return status;
+        }
+
+        public void setStatus(int status) {
+            this.status = status;
+        }
+
+        public String getInsuranceApplyDetail() {
+            return insuranceApplyDetail;
+        }
+
+        public void setInsuranceApplyDetail(String name) {
+            this.insuranceApplyDetail = insuranceApplyDetail;
+        }
+
+        public String getApplyChangeDetail() {
+            return applyChangeDetail;
+        }
+
+        public void setApplyChangeDetail(String info) {
+            this.applyChangeDetail = applyChangeDetail;
+        }
+
+        public String getChangeFactoryDetail() {
+            return changeFactoryDetail;
+        }
+
+        public void setChangeFactoryDetail(String info) {
+            this.changeFactoryDetail = changeFactoryDetail;
+        }
+
+        public String getDispatchUnitDetail() {
+            return dispatchUnitDetail;
+        }
+
+        public void setDispatchUnitDetail(String info) {
+            this.dispatchUnitDetail = dispatchUnitDetail;
+        }
+
+        public String getTaxesDetail() {
+            return taxesDetail;
+        }
+
+        public void setTaxesDetail(String info) {
+            this.taxesDetail = taxesDetail;
+        }
+
+        public String getSettleClaimsDetail() {
+            return settleClaimsDetail;
+        }
+
+        public void setSettleClaimsDetail(String info) {
+            this.settleClaimsDetail = settleClaimsDetail;
+        }
+
+
+    }
+
+
     public static BigDecimal countDetailFee(Solutions solutions,Date startDate, Date endDate){
         //鏌ヨ淇濋櫓瀹為檯鍛ㄦ湡
         Integer cycle = DateUtil.calculateBetween(endDate,startDate,solutions.getTimeUnit());
diff --git a/server/service/src/main/java/com/doumee/dao/business/join/NoticesJoinMapper.java b/server/service/src/main/java/com/doumee/dao/business/join/NoticesJoinMapper.java
new file mode 100644
index 0000000..22f760a
--- /dev/null
+++ b/server/service/src/main/java/com/doumee/dao/business/join/NoticesJoinMapper.java
@@ -0,0 +1,13 @@
+package com.doumee.dao.business.join;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.doumee.dao.business.model.Notices;
+import com.github.yulichang.base.mapper.MPJJoinMapper;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2024/01/16 10:03
+ */
+public interface NoticesJoinMapper extends MPJJoinMapper<Notices> {
+
+}
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/Member.java b/server/service/src/main/java/com/doumee/dao/business/model/Member.java
index 3d0d6fd..3952cdc 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/Member.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -104,4 +104,13 @@
     @TableField(exist = false)
     private String workTypeName;
 
+    @ApiModelProperty(value = "浼佷笟鍚嶇О")
+    @TableField(exist = false)
+    private String companyName;
+
+    @ApiModelProperty(value = "淇濋櫓鐘舵��:1=淇濋殰涓�;2=涓嶅湪淇�")
+    @TableField(exist = false)
+    private Integer solutionsStatus;
+
+
 }
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/MemberInsurance.java b/server/service/src/main/java/com/doumee/dao/business/model/MemberInsurance.java
index 0ce8b72..6ff0df0 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/MemberInsurance.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/MemberInsurance.java
@@ -78,111 +78,91 @@
 
     @TableId(type = IdType.AUTO)
     @ApiModelProperty(value = "涓婚敭", example = "1")
-    @ExcelColumn(name="涓婚敭")
     private Integer id;
 
     @ApiModelProperty(value = "鍒涘缓浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鍒涘缓浜虹紪鐮�")
     private Integer creator;
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
-    @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
-    @ExcelColumn(name="鏇存柊浜虹紪鐮�")
     private Integer editor;
 
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
-    @ExcelColumn(name="鏇存柊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date editDate;
 
     @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
-    @ExcelColumn(name="鏄惁鍒犻櫎0鍚� 1鏄�")
     private Integer isdeleted;
 
     @ApiModelProperty(value = "澶囨敞")
-    @ExcelColumn(name="澶囨敞")
     private String remark;
 
     @ApiModelProperty(value = "鎺掑簭鐮�", example = "1")
-    @ExcelColumn(name="鎺掑簭鐮�")
     private Integer sortnum;
 
     @ApiModelProperty(value = "鎶曚繚鐢宠缂栫爜锛堝叧鑱攊nsurance_apply", example = "1")
-    @ExcelColumn(name="鎶曚繚鐢宠缂栫爜锛堝叧鑱攊nsurance_apply")
     private Integer applyId;
 
     @ApiModelProperty(value = "浜哄憳缂栫爜锛堝叧鑱攎emeber锛�", example = "1")
-    @ExcelColumn(name="浜哄憳缂栫爜锛堝叧鑱攎emeber锛�")
     private Integer memberId;
 
     @ApiModelProperty(value = "瀹為檯淇濋櫓鐢熸晥姝㈡湡")
-    @ExcelColumn(name="瀹為檯淇濋櫓鐢熸晥姝㈡湡")
+    @ExcelColumn(name="淇濋櫓鐢熸晥姝㈡湡",index = 7)
     private Date endTime;
 
     @ApiModelProperty(value = "瀹為檯淇濋櫓鐢熸晥璧锋湡")
-    @ExcelColumn(name="瀹為檯淇濋櫓鐢熸晥璧锋湡")
+    @ExcelColumn(name="淇濋櫓鐢熸晥璧锋湡",index = 6)
     private Date startTime;
 
     @ApiModelProperty(value = "韬唤璇佸彿鐮�")
-    @ExcelColumn(name="韬唤璇佸彿鐮�")
     private String idcardNo;
 
 
     @ApiModelProperty(value = "鏂规涓婚敭", example = "1")
-    @ExcelColumn(name="鏂规涓婚敭")
     private Integer solutionId;
 
 
     @ApiModelProperty(value = "娲鹃仯鍗曚綅缂栫爜锛堝叧鑱攄ispatch_unit)", example = "1")
-    @ExcelColumn(name="娲鹃仯鍗曚綅缂栫爜锛堝叧鑱攄ispatch_unit)")
     private Integer duId;
 
     @ApiModelProperty(value = "宸ョ缂栫爜(鍏宠仈worktype)", example = "1")
-    @ExcelColumn(name="宸ョ缂栫爜(鍏宠仈worktype)")
     private Integer worktypeId;
 
     @ApiModelProperty(value = "褰撳墠浜х敓璐圭敤", example = "1")
-    @ExcelColumn(name="褰撳墠浜х敓璐圭敤")
     private BigDecimal currentFee;
 
     @ApiModelProperty(value = "璐圭敤", example = "1")
-    @ExcelColumn(name="璐圭敤")
     private BigDecimal fee;
 
     @ApiModelProperty(value = "鎬у埆 0鐢� 1濂�", example = "1")
-    @ExcelColumn(name="鎬у埆 0鐢� 1濂�")
+//    @ExcelColumn(name="鎬у埆",valueMapping = "0=鐢�;1=濂�;")
     private Integer sex;
 
     @ApiModelProperty(value = "淇濆崟鍙�")
-    @ExcelColumn(name="淇濆崟鍙�")
+    @ExcelColumn(name="淇濆崟鍙�",index = 2)
     private String bdCode;
 
     @ApiModelProperty(value = "鎵瑰崟鍙�")
-    @ExcelColumn(name="鎵瑰崟鍙�")
+    @ExcelColumn(name="鎵瑰崟鍙�",index = 3)
     private String pdCode;
 
     @ApiModelProperty(value = "淇濋櫓鏂规鍚嶇О")
-    @ExcelColumn(name="淇濋櫓鏂规鍚嶇О")
+    @ExcelColumn(name="淇濋櫓鏂规",index = 1)
     private String solutionName;
 
     @ApiModelProperty(value = "鎵瑰崟鐢宠缂栫爜", example = "1")
-    @ExcelColumn(name="鎵瑰崟鐢宠缂栫爜")
     private Integer applyChangeId;
 
     @ApiModelProperty(value = "宸ョ鍚嶇О")
-    @ExcelColumn(name="宸ョ鍚嶇О")
+    @ExcelColumn(name="宸ョ鍚嶇О",index = 5)
     private String worktypeName;
 
     @ApiModelProperty(value = "娲鹃仯鍗曚綅鍚嶇О")
-    @ExcelColumn(name="娲鹃仯鍗曚綅鍚嶇О")
+    @ExcelColumn(name="娲鹃仯鍗曚綅",index = 4)
     private String duName;
 
     @ApiModelProperty(value = "鍏宠仈鏄庣粏涓婚敭", example = "1")
-    @ExcelColumn(name="鍏宠仈鏄庣粏涓婚敭")
     private Integer relationId;
 
 //    @ApiModelProperty(value = "鍏宠仈鏄庣粏绫诲瀷锛�0=鎶曚繚鐢宠锛�1=鍔犲噺淇�/鎹㈠巶", example = "1")
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/Notices.java b/server/service/src/main/java/com/doumee/dao/business/model/Notices.java
index c9dc43f..f19bab1 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/Notices.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/Notices.java
@@ -1,6 +1,9 @@
 package com.doumee.dao.business.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.doumee.core.annotation.excel.ExcelColumn;
+import com.doumee.core.model.LoginUserInfo;
+import com.doumee.core.utils.Constants;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import com.baomidou.mybatisplus.annotation.IdType;
@@ -69,15 +72,20 @@
 
     @ApiModelProperty(value = "鍏宠仈瀵硅薄绫诲瀷")
     @ExcelColumn(name="鍏宠仈瀵硅薄绫诲瀷")
-    private String objType;
+    private Integer objType;
 
     @ApiModelProperty(value = "鍏宠仈瀵硅薄鍚嶇О")
     @ExcelColumn(name="鍏宠仈瀵硅薄鍚嶇О")
     private String objName;
 
-    @ApiModelProperty(value = "绫诲瀷 0骞冲彴娑堟伅 1浼佷笟娑堟伅")
-    @ExcelColumn(name="绫诲瀷 0骞冲彴娑堟伅 1浼佷笟娑堟伅")
-    private String type;
+    @ApiModelProperty(value = "绫诲瀷")
+    @ExcelColumn(name="绫诲瀷")
+    private Integer type;
+
+    @ApiModelProperty(value = "绫诲瀷鎻忚堪")
+    @TableField(exist = false)
+    private String typeDetail;
+
 
     @ApiModelProperty(value = "鍏宠仈鍙傛暟1")
     @ExcelColumn(name="鍏宠仈鍙傛暟1")
@@ -107,6 +115,10 @@
     @ExcelColumn(name="鍏宠仈浼佷笟缂栫爜(鍏宠仈company锛�")
     private Integer companyId;
 
+    @ApiModelProperty(value = "鍏宠仈浼佷笟鍚嶇О")
+    @TableField(exist = false)
+    private String companyName;
+
     @ApiModelProperty(value = "骞冲彴 0骞冲彴娑堟伅 1浼佷笟娑堟伅", example = "1")
     @ExcelColumn(name="骞冲彴 0骞冲彴娑堟伅 1浼佷笟娑堟伅")
     private Integer palt;
@@ -119,4 +131,35 @@
     @ExcelColumn(name="鏄惁宸茶 0鏈 1宸茶")
     private Integer readed;
 
+    public Notices(){
+
+    }
+
+    /**
+     *
+     * @param noticeType 娑堟伅绫诲瀷
+     * @param palt 鏁版嵁骞冲彴 0骞冲彴娑堟伅 1浼佷笟娑堟伅
+     * @param objId 鍏宠仈瀵硅薄涓婚敭
+     * @param content   鏂规鍚嶇О/鍗曚綅鍚嶇О/寮�绁ㄩ噾棰�/鎶ユ浜�
+     * @param companyId 浼佷笟涓婚敭
+     */
+    public Notices(Constants.NoticeObjectType noticeObjectType,Integer palt, Integer objId, String content, Integer companyId,Constants.NoticeType noticeType){
+        this.createDate = new Date();
+        this.creator = userId ;
+        this.isdeleted = Constants.ZERO ;
+        this.title = noticeObjectType.getName();
+        this.objType = noticeObjectType.getKey();
+        this.objId = objId;
+        this.info = noticeObjectType.getInfo();
+        this.content = content;
+        this.status = Constants.ZERO;
+        this.readed = Constants.ZERO;
+        this.type = noticeType.getStatus();
+        this.companyId = companyId;
+        this.palt = palt ;
+    }
+
+
+
+
 }
diff --git a/server/service/src/main/java/com/doumee/service/business/ApplyChagneDetailService.java b/server/service/src/main/java/com/doumee/service/business/ApplyChagneDetailService.java
index fd5eb99..5c2f247 100644
--- a/server/service/src/main/java/com/doumee/service/business/ApplyChagneDetailService.java
+++ b/server/service/src/main/java/com/doumee/service/business/ApplyChagneDetailService.java
@@ -90,7 +90,7 @@
 
     PageData<ApplyChagneDetail> findPageForCompany(PageWrap<ApplyDetailPageDTO> pageWrap);
 
-
+    List<ApplyChagneDetail> findListForCompany(ApplyDetailPageDTO applyDetailPageDTO);
     /**
      * 鏉′欢缁熻
      *
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChagneDetailServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChagneDetailServiceImpl.java
index a6e53bc..ef23ee2 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/ApplyChagneDetailServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/ApplyChagneDetailServiceImpl.java
@@ -232,6 +232,29 @@
         return pageData;
     }
 
+
+    @Override
+    public List<ApplyChagneDetail> findListForCompany(ApplyDetailPageDTO applyDetailPageDTO) {
+        MPJLambdaWrapper<ApplyChagneDetail> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(ApplyChagneDetail.class);
+        queryWrapper.select("t2.name",ApplyChagneDetail::getWorkTypeName);
+        queryWrapper.select("t3.name",ApplyChagneDetail::getDuName);
+        queryWrapper.select("t4.name",ApplyChagneDetail::getOldWorkTypeName);
+        queryWrapper.select("t5.name",ApplyChagneDetail::getOldDuName);
+        queryWrapper.selectAs(Member::getName,ApplyChagneDetail::getMemberName);
+        queryWrapper.selectAs(Member::getSex,ApplyChagneDetail::getSex);
+        queryWrapper.selectAs(Member::getIdcardNo,ApplyChagneDetail::getMemberIdcardNo);
+        queryWrapper.leftJoin(Member.class,Member::getId,ApplyChagneDetail::getMemberId);
+        queryWrapper.leftJoin(Worktype.class,Worktype::getId,ApplyChagneDetail::getWorktypeId);
+        queryWrapper.leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyChagneDetail::getDuId);
+        queryWrapper.leftJoin(Worktype.class,Worktype::getId,ApplyChagneDetail::getOldWorktypeId);
+        queryWrapper.leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyChagneDetail::getOldDuId);
+        queryWrapper.in(CollectionUtils.isNotEmpty(applyDetailPageDTO.getTypes()),ApplyChagneDetail::getType,applyDetailPageDTO.getTypes());
+        queryWrapper.eq(!Objects.isNull(applyDetailPageDTO.getApplyChangId()),ApplyChagneDetail::getApplyChangeId,applyDetailPageDTO.getApplyChangId());
+        return applyChangeDetailJoinMapper.selectJoinList(ApplyChagneDetail.class, queryWrapper);
+    }
+
+
     @Override
     public long count(ApplyChagneDetail applyChagneDetail) {
         QueryWrapper<ApplyChagneDetail> wrapper = new QueryWrapper<>(applyChagneDetail);
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 0d06fbd..2a99876 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
@@ -101,6 +101,8 @@
     @Autowired
     private SolutionsMapper solutionsMapper;
 
+    @Autowired
+    private NoticesMapper noticesMapper;
     /**
      * 骞冲彴閫�鍥炴姇淇�
      * @param param
@@ -126,7 +128,7 @@
         ApplyChange update = new ApplyChange();
         update.setEditDate(new Date());
         update.setEditor(user.getId());
-        update.setStatus(Constants.ApplyChangeStatus.PALTFORM_CHECK_PASS_NO.getKey());
+        update.setStatus(Constants.ApplyChangeStatus.PLATFORM_AGREE.getKey());
         update.setCheckDate(update.getEditDate());
         update.setCheckInfo(param.getCheckInfo());
         update.setCheckUserId(user.getId());
@@ -510,10 +512,23 @@
             throw  new BusinessException(ResponseStatus.DATA_EMPTY);
         }
 
+        InsuranceApply insuranceApply = insuranceApplyMapper.selectById(model.getApplyId());
+        if(Objects.isNull(insuranceApply)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
+        }
+        if(insuranceApply.getIsdeleted().equals(Constants.ONE)){
+            throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"鏁版嵁宸插垹闄�,鏃犳硶杩涜璇ユ搷浣�");
+        }
+        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌鏂规淇℃伅");
+        }
+
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         Constants.ApplyLogType applyLogType = null;
         String info = "";
         ApplyChange update = new ApplyChange();
+        Constants.NoticeType noticeType = Constants.NoticeType.FOUR;
         if(param.getDealBackApply() ==1){
             //濡傛灉鏄┏鍥�,鍙兘鍙┏鍥炲凡绛剧珷鐘舵�佷笅鐨勯��鍥炵敵璇风姸鎬佽繘琛屾搷浣�
             if(!Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_SIGNATURE.getKey())){
@@ -522,12 +537,8 @@
             applyLogType = Constants.ApplyLogType.CA_PALTFORM_REFUSE_APPLY;
             info = applyLogType.getInfo();
             info = info.replace("${param}", param.getCheckInfo());
-//
-            if( Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_SIGNATURE.getKey())){
-                update.setStatus(Constants.ApplyChangeStatus.SIGNATURE.getKey());
-            }else if( Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_UPLOAD.getKey())){
-                update.setStatus(Constants.ApplyChangeStatus.UPLOAD.getKey());
-            }
+            update.setStatus(Constants.ApplyChangeStatus.SIGNATURE.getKey());
+            noticeType = Constants.NoticeType.FIVE;
         }else{
             //濡傛灉鏄悓鎰�,涓ょ鐢宠閫�鍥炵姸鎬侀兘鍙搷浣�
             if(!(Constants.equalsInteger(model.getStatus(),Constants.ApplyChangeStatus.RETURN_APPLY_SIGNATURE.getKey())
@@ -537,6 +548,7 @@
             update.setStatus(Constants.ApplyChangeStatus.PLATFORM_AGREE.getKey());
             applyLogType = Constants.ApplyLogType.CA_PLATFORM_AGREE_BACK_APPLY;
         }
+
         update.setEditDate(new Date());
         update.setEditor(user.getId());
         //鍚屾剰閫�鍥烇紝鐩存帴鍥炲埌鏈�鍒濈姸鎬侊紝濡傛灉椹冲洖閫�鍥炵敵璇凤紝鍒欎繚鍗曠姸鎬佸洖鍒板緟涓婁紶淇濋櫓鍗�
@@ -545,6 +557,18 @@
         update.setCheckUserId(user.getId());
         update.setId(model.getId());
         applyChangeMapper.updateById(update);
+
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.APPLY_CHANGE;
+        if(model.getType().equals(Constants.ONE)){
+            noticeObjectType = Constants.NoticeObjectType.CHANGE_FACTORY;
+        }
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,model.getId(),solutions.getName(),
+                model.getCompanyId(), noticeType);
+        noticesMapper.insert(notices);
 
         ApplyLog log = new ApplyLog(update,applyLogType.getName(),info,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
         applyLogMapper.insert(log);
@@ -568,7 +592,6 @@
         if (!loginUserInfo.getType().equals(Constants.ONE)) {
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鐢ㄦ埛绫诲瀷閿欒锛氶潪浼佷笟鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
         }
-        BigDecimal fee = BigDecimal.ZERO;
 
         InsuranceApply insuranceApply = insuranceApplyMapper.selectById(applyChange.getApplyId());
         if (Objects.isNull(insuranceApply)) {
@@ -606,12 +629,13 @@
         applyChange.setStatus(Constants.ZERO);
         applyChangeMapper.insert(applyChange);
 
-        this.dealApplyChangeData(applyChange,insuranceApply,companySolution,solutions,loginUserInfo,fee);
+        BigDecimal fee  = this.dealApplyChangeData(applyChange,insuranceApply,companySolution,solutions,loginUserInfo,BigDecimal.ZERO);
 
         ApplyChange applyChangeFee = new ApplyChange();
         applyChangeFee.setId(applyChange.getId());
         applyChangeFee.setFee(fee);
         applyChangeMapper.updateById(applyChangeFee);
+
 
         this.saveApplyLog(applyChange,Constants.ApplyChangeLogStatus.UPLOAD,null);
         return applyChange.getId();
@@ -640,7 +664,9 @@
         if(Objects.isNull(dbApplyChange)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-        if(!dbApplyChange.getStatus().equals(Constants.ApplyChangeStatus.PLATFORM_AGREE.getKey())){
+        if(! (dbApplyChange.getStatus().equals(Constants.ApplyChangeStatus.PLATFORM_AGREE.getKey())
+        || dbApplyChange.getStatus().equals(Constants.ApplyChangeStatus.PALTFORM_CHECK_PASS_NO.getKey()) )
+        ){
             throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(), "涓氬姟淇濈敵璇峰崟鐘舵�侀敊璇�");
         }
 
@@ -676,12 +702,12 @@
 
         applyChange.setEditDate(new Date());
         applyChange.setEditor(loginUserInfo.getId());
+        applyChange.setApplyStartTime(applyChange.getValidTime());
         applyChange.setStatus(Constants.ZERO);
-        BigDecimal fee = BigDecimal.ZERO;
         //鍒犻櫎鍘嗗彶鏁版嵁
         applyChagneDetailJoinMapper.delete(new QueryWrapper<ApplyChagneDetail>().lambda().eq(ApplyChagneDetail::getApplyChangeId,applyChange.getId()));
 
-        this.dealApplyChangeData(applyChange,insuranceApply,companySolution,solutions,loginUserInfo,fee);
+        BigDecimal fee = this.dealApplyChangeData(applyChange,insuranceApply,companySolution,solutions,loginUserInfo,BigDecimal.ZERO);
         applyChange.setFee(fee);
         applyChangeMapper.updateById(applyChange);
         this.saveApplyLog(applyChange,Constants.ApplyChangeLogStatus.UPLOAD,null);
@@ -689,7 +715,7 @@
     }
 
 
-    public void dealApplyChangeData(ApplyChange applyChange,InsuranceApply insuranceApply,CompanySolution companySolution,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal fee){
+    public BigDecimal dealApplyChangeData(ApplyChange applyChange,InsuranceApply insuranceApply,CompanySolution companySolution,Solutions solutions,LoginUserInfo loginUserInfo,BigDecimal fee){
 
 
         //鏌ヨ淇濋櫓鏂规涓嬬殑鎵�鏈夋淳閬e崟浣�
@@ -725,7 +751,7 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽姞淇�");
             }
             //鍔犱繚鏄庣粏鏁版嵁 璁$畻閲戦  鏍规嵁鎵瑰崟鏃堕棿 璁$畻
-            applyChangeCyclePriceDTO.setValidTime(DateUtil.getMontageDate(insuranceApply.getStartTime(),1));
+            applyChangeCyclePriceDTO.setValidTime(DateUtil.getMontageDate(applyChange.getValidTime(),1));
             CountCyclePriceVO countCyclePriceVO =  this.getChangeCountCyclePriceVO(applyChangeCyclePriceDTO);
             BigDecimal detailFee = countCyclePriceVO.getCyclePrice();
 
@@ -741,7 +767,7 @@
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "璇ヤ紒涓氬垎閰嶄繚闄╂柟妗堟棤娉曡繘琛屽噺淇�");
             }
             //鍑忎繚鏄庣粏鏁版嵁 璁$畻閲戦  鏍规嵁鎵瑰崟鏃堕棿 鍓嶄竴澶� 璁$畻
-            applyChangeCyclePriceDTO.setValidTime(DateUtil.getMontageDate(insuranceApply.getStartTime(),3));
+            applyChangeCyclePriceDTO.setValidTime(DateUtil.getMontageDate(applyChange.getValidTime(),3));
             CountCyclePriceVO countCyclePriceVO =  this.getChangeCountCyclePriceVO(applyChangeCyclePriceDTO);
             BigDecimal detailFee = countCyclePriceVO.getCyclePrice();
             this.delChangeDetail(applyChange,delDetailList,insuranceApply,solutions,loginUserInfo,detailFee);
@@ -753,6 +779,7 @@
         if (CollectionUtils.isNotEmpty(changeDetailList)) {
             this.changeDetail(applyChange,changeDetailList,duWorktypeList,duSolutionList,loginUserInfo);
         }
+        return fee;
     }
 
 
@@ -798,6 +825,7 @@
             if (applyChagneDetailJoinMapper.selectJoinCount(
                     new MPJLambdaWrapper<ApplyChagneDetail>()
                             .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId)
+                            .eq(ApplyChange::getApplyId,applyChange.getApplyId())
                             .eq(ApplyChagneDetail::getMemberId, applyChagneDetail.getMemberId())
                             .in(ApplyChange::getStatus, Constants.ZERO, Constants.ONE)
             ) > Constants.ZERO) {
@@ -822,7 +850,7 @@
             applyChagneDetail.setType(Constants.ONE);
 
             applyChagneDetail.setStartTime(DateUtil.getMontageDate(applyDetail.getStartTime(),1));
-            applyChagneDetail.setEndTime(DateUtil.getMontageDate(applyChange.getStartTime(),3));
+            applyChagneDetail.setEndTime(DateUtil.getMontageDate(applyChange.getApplyStartTime(),3));
 
             applyChagneDetail.setFee( detailFee.multiply(new BigDecimal(-1)));
             applyChagneDetailJoinMapper.insert(applyChagneDetail);
@@ -891,6 +919,7 @@
                     new MPJLambdaWrapper<ApplyChagneDetail>()
                             .leftJoin(ApplyChange.class, ApplyChange::getId, ApplyChagneDetail::getApplyChangeId)
                             .eq(ApplyChagneDetail::getMemberId, applyChagneDetail.getMemberId())
+                            .eq(ApplyChange::getApplyId,applyChange.getApplyId())
                             .in(ApplyChange::getStatus, Constants.ZERO, Constants.ONE)
             ) > Constants.ZERO) {
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鍔犱繚浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戝瓨鍦ㄧ敵璇蜂腑鐨勫姞鍑忎繚/鎹㈠巶鍗曟嵁");
@@ -963,10 +992,11 @@
             List<ApplyDetail>  applyDetailList = applyDetailJoinMapper.selectList(new QueryWrapper<ApplyDetail>().lambda()
                     .eq(ApplyDetail::getApplyId, applyChange.getApplyId())
                     .eq(ApplyDetail::getMemberId, applyChagneDetail.getMemberId())
-                    .le(ApplyDetail::getStartTime, DateUtil.getDate(new Date(),"yyyy-MM-dd HH:mm:ss"))
-                    .ge(ApplyDetail::getEndTime, DateUtil.getDate(new Date(),"yyyy-MM-dd HH:mm:ss")));
+                    .ge(ApplyDetail::getEndTime, new Date()));
             if(applyDetailList.size()>Constants.ONE){
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戜繚鍗曚俊鎭紓甯革紝瀛樺湪澶氭潯鏁版嵁");
+            }else if(applyDetailList.size()==Constants.ZERO){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "鎹㈠巶浜哄憳銆�" + applyChagneDetail.getMemberName() + "銆戞湭鏌ヨ鍒版姇淇濊褰�");
             }
             ApplyDetail applyDetail = applyDetailList.get(Constants.ZERO);
             if(applyChange.getValidTime().compareTo( applyDetail.getEndTime())>0){
@@ -1128,7 +1158,7 @@
     public void changeOpt(ApplyChangeOptDTO applyChangeOptDTO){
         if(Objects.isNull(applyChangeOptDTO)
                 ||Objects.isNull(applyChangeOptDTO.getApplyId())
-                ||StringUtils.isBlank(applyChangeOptDTO.getOptIllustration())){
+        ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
@@ -1144,11 +1174,20 @@
         if(applyChange.getIsdeleted().equals(Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"鏁版嵁宸插垹闄�,鏃犳硶杩涜璇ユ搷浣�");
         }
+        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�");
+        }
+
         Constants.ApplyChangeLogStatus applyChangeLogStatus = Constants.ApplyChangeLogStatus.RETURN_APPLY;
 
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.APPLY_CHANGE;
+        if(applyChange.getType().equals(Constants.ONE)){
+            noticeObjectType = Constants.NoticeObjectType.CHANGE_FACTORY;
+        }
         if(applyChangeOptDTO.getOptType().equals(3)){
             //鍙戣捣閫�鍥炵敵璇�
-            if(loginUserInfo.getType().equals(Constants.ONE)){
+            if(!loginUserInfo.getType().equals(Constants.ONE)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氱鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
             }
             if(!(applyChange.getStatus().equals(Constants.ApplyChangeStatus.UPLOAD.getKey())
@@ -1161,6 +1200,14 @@
             }else{
                 applyChange.setStatus(Constants.ApplyChangeStatus.RETURN_APPLY_SIGNATURE.getKey());
             }
+
+            //瀛樺偍寰呭姙淇℃伅
+            //鍒犻櫎鍏朵粬寰呭姙
+            noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,applyChange.getId()));
+            Notices notices = new Notices(noticeObjectType,Constants.ZERO,applyChange.getId(),solutions.getName(),
+                    applyChange.getCompanyId(), Constants.NoticeType.THREE);
+            noticesMapper.insert(notices);
+
 
         }else if(applyChangeOptDTO.getOptType().equals(4)){
             applyChangeLogStatus = Constants.ApplyChangeLogStatus.PLATFORM_AGREE;
@@ -1192,13 +1239,19 @@
         }else if(applyChangeOptDTO.getOptType().equals(6)){
             //浼佷笟鍏抽棴
             applyChangeLogStatus = Constants.ApplyChangeLogStatus.CLOSE;
-            if(loginUserInfo.getType().equals(Constants.ONE)){
+            if(!loginUserInfo.getType().equals(Constants.ONE)){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炰紒涓氱鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
             }
             if(!applyChange.getStatus().equals(Constants.ApplyChangeStatus.PLATFORM_AGREE.getKey())){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�侀敊璇棤娉曡繘琛岃鎿嶄綔!");
             }
             applyChange.setStatus(Constants.ApplyChangeStatus.CLOSE.getKey());
+
+
+            //瀛樺偍寰呭姙淇℃伅
+            //鍒犻櫎鍏朵粬寰呭姙
+            noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,applyChange.getId()));
+
         }else{
             throw new BusinessException(ResponseStatus.BAD_REQUEST  );
         }
@@ -1326,6 +1379,14 @@
         if(company== null || StringUtils.isBlank( company.getEmail()) || !Constants.equalsInteger(company.getSignStatus(),Constants.THREE)){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝浼佷笟灏氭湭鍏峰鍦ㄧ嚎绛剧珷鏉′欢锛岃鑱旂郴骞冲彴绠$悊鍛樼‘璁");
         }
+        InsuranceApply insuranceApply = insuranceApplyMapper.selectById(model.getApplyId());
+        if(Objects.isNull(insuranceApply)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇繚鍗曚俊鎭�");
+        }
+        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�");
+        }
         String fileUrl = null;
         if(Constants.equalsObject(model.getType(), Constants.ONE)){
               fileUrl = ExcelExporter.build(ApplyChange.class).exportChangeUnitExcelToPdf(model,"鎹㈠巶鐢宠琛�");
@@ -1349,6 +1410,8 @@
         update.setSignApplyNo(applyNo);
         applyChangeMapper.updateById(update);
 
+
+
         return  link;
     }
 
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
index 078c04e..bc2c5db 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/DispatchUnitServiceImpl.java
@@ -8,10 +8,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.DispatchUnitMapper;
-import com.doumee.dao.business.DuLogMapper;
-import com.doumee.dao.business.DuSolutionMapper;
-import com.doumee.dao.business.DuWorktypeMapper;
+import com.doumee.dao.business.*;
 import com.doumee.dao.business.dto.*;
 import com.doumee.dao.business.join.DispatchUnitJoinMapper;
 import com.doumee.dao.business.join.DuLogJoinMapper;
@@ -71,6 +68,9 @@
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
+    @Autowired
+    private NoticesMapper noticesMapper;
+
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public Integer checkWorktype(DispatchUnit param) {
@@ -126,6 +126,13 @@
             //瀛樺偍鎿嶄綔鍘嗗彶
             this.saveDuLog(update,Constants.DispatchUnitLogType.WORK_TYPE_AUDIT_UN_PASS,update.getCheckInfo());
         }
+
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
+
         return  1;
     }
 
@@ -263,6 +270,13 @@
             //瀛樺偍鎿嶄綔鍘嗗彶
             this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.AUDIT_UN_PASS,update.getCheckInfo());
         }
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,dispatchUnit.getId()));
+
+
         return  1;
     }
     @Override
@@ -356,6 +370,16 @@
                 duWorktypeMapper.insert(duWorktype);
             }
         }
+
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,dispatchUnit.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,dispatchUnit.getId(),dispatchUnit.getName(),
+                dispatchUnit.getCompanyId(), Constants.NoticeType.ZERO);
+        noticesMapper.insert(notices);
+
         return dispatchUnit.getId();
     }
 
@@ -402,6 +426,15 @@
 
 //        this.dealDuData(saveDispatchUnitDTO,loginUserInfo);
 
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,dispatchUnit.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,dispatchUnit.getId(),dispatchUnit.getName(),
+                dispatchUnit.getCompanyId(), Constants.NoticeType.ZERO);
+        noticesMapper.insert(notices);
+
         return dispatchUnit.getId();
     }
 
@@ -433,6 +466,15 @@
         //瀛樺偍鎿嶄綔鍘嗗彶
         this.saveDuLog(dispatchUnit,Constants.DispatchUnitLogType.ADD_WORK_TYPE,null);
         this.dealDuData(saveDispatchUnitDTO,loginUserInfo);
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.DISPATCH_UNIT;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,dispatchUnit.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,dispatchUnit.getId(),dispatchUnit.getName(),
+                dispatchUnit.getCompanyId(), Constants.NoticeType.ONE);
+        noticesMapper.insert(notices);
+
         return dispatchUnit.getId();
     }
 
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 c3e08a2..9da93db 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
@@ -96,6 +96,9 @@
     @Autowired
     private DuWorktypeMapper duWorktypeMapper;
 
+    @Autowired
+    private NoticesMapper noticesMapper;
+
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public Integer back(InsuranceApply insuranceApply) {
@@ -110,6 +113,12 @@
         if(Constants.equalsInteger(model.getStatus(),Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())){
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风姸鎬佸凡娴佽浆锛屽綋鍓嶄笉鏀寔璇ユ搷浣渵");
         }
+
+        Solutions solutions = solutionsMapper.selectById(model.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�");
+        }
+
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         InsuranceApply update = new InsuranceApply();
         update.setEditDate(new Date());
@@ -120,6 +129,15 @@
         update.setCheckUserId(user.getId());
         update.setId(model.getId());
         insuranceApplyMapper.updateById(update);
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.INSURANCE_APPLY;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,insuranceApply.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ONE,insuranceApply.getId(),solutions.getName(),
+                model.getCompanyId(), Constants.NoticeType.FOUR);
+        noticesMapper.insert(notices);
+
 
         Constants.ApplyLogType applyLogType = Constants.ApplyLogType.PLATFORM_RETURN;
         String info =applyLogType.getInfo();
@@ -344,7 +362,10 @@
         if(model == null ||!Constants.equalsInteger(model.getIsdeleted(),Constants.ZERO)){
             throw  new BusinessException(ResponseStatus.DATA_EMPTY);
         }
-
+        Solutions solutions = solutionsMapper.selectById(model.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�");
+        }
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         Constants.ApplyLogType applyLogType = null;
         String info = "";
@@ -384,6 +405,7 @@
         update.setEditDate(new Date());
         update.setSignApplyNo(applyNo);
         insuranceApplyMapper.updateById(update);
+
         return  link;
     }
     public String uploadSignFile(String link){
@@ -418,6 +440,13 @@
         update.setId(model.getId());
         insuranceApplyMapper.updateById(update);
 
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.INSURANCE_APPLY;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,model.getId(),model.getSolutionsName(),model.getCompanyId(),Constants.NoticeType.TWO);
+        noticesMapper.insert(notices);
+
         Multifile f = new Multifile();
         f.setIsdeleted(Constants.ZERO);
         f.setCreator(model.getCreator());
@@ -448,6 +477,17 @@
         update.setCheckUserId(model.getCreator());
         update.setId(model.getId());
         applyChangeMapper.updateById(update);
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.APPLY_CHANGE;
+        if(model.getType().equals(Constants.ONE)){
+            noticeObjectType = Constants.NoticeObjectType.CHANGE_FACTORY;
+        }
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ONE,model.getId(),model.getSolutionsName(),
+                model.getCompanyId(), Constants.NoticeType.TWO);
+        noticesMapper.insert(notices);
 
         Multifile f = new Multifile();
         f.setIsdeleted(Constants.ZERO);
@@ -651,6 +691,11 @@
 //        info = info.replace("${param}", update.getCheckInfo());
         ApplyLog log = new ApplyLog(update,applyLogType.getName(),StringUtils.isNotBlank(update.getCheckInfo())?info:"",update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
         applyLogMapper.insert(log);
+
+        //鍒犻櫎鍏朵粬寰呭姙
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.INSURANCE_APPLY;
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,insuranceApply.getId()));
+
         return  1;
 
     }
@@ -675,6 +720,11 @@
             throw  new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝璇ョ敵璇风姸鎬佸凡娴佽浆锛屽綋鍓嶄笉鏀寔璇ユ搷浣渵");
         }
 
+        Solutions solutions = solutionsMapper.selectById(model.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈡柟妗堜俊鎭�");
+        }
+
         Constants.ApplyLogType applyLogType = null;
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         InsuranceApply update = new InsuranceApply();
@@ -684,15 +734,26 @@
         update.setCheckInfo(insuranceApply.getCheckInfo());
         update.setCheckUserId(user.getId());
         update.setId(model.getId());
+        Constants.NoticeType noticeType = Constants.NoticeType.ONE;
         if(insuranceApply.getDealBackApply() ==1){
             //濡傛灉鏄笉閫氳繃
             applyLogType = Constants.ApplyLogType.PLATFORM_RETURN ;
             update.setStatus(Constants.InsuranceApplyStatus.PLATFORM_RETURN.getKey());
+
+            noticeType = Constants.NoticeType.FOUR;
         }else{
             applyLogType = Constants.ApplyLogType.PLATFORM_CHECK_PASS;
             update.setStatus(Constants.InsuranceApplyStatus.PLATFORM_CHECK_PASS.getKey());
         }
         insuranceApplyMapper.updateById(update);
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.INSURANCE_APPLY;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ONE,model.getId(),solutions.getName(),model.getCompanyId(),noticeType);
+        noticesMapper.insert(notices);
+
         String info =applyLogType.getInfo();
         info = info.replace("${param}", update.getCheckInfo());
         ApplyLog log = new ApplyLog(update,applyLogType.getName(),info,update.getId(),applyLogType.getKey(),JSONObject.toJSONString(model), JSONObject.toJSONString(update));
@@ -716,6 +777,10 @@
         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         if(!loginUserInfo.getType().equals(Constants.ONE)){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鐢ㄦ埛绫诲瀷閿欒锛氶潪浼佷笟鐢ㄦ埛鏃犳硶杩涜璇ユ搷浣�");
+        }
+        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌鏂规淇℃伅");
         }
         List<ApplyDetail> applyDetailList = insuranceApply.getApplyDetailList();
         //鍒ゆ柇鏄惁瀛樺湪閲嶅淇℃伅
@@ -746,13 +811,22 @@
 
 
         //澶勭悊涓嬬骇鏁版嵁
-        this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo,countCyclePriceVO);
+        this.dealApplyDetailData(insuranceApply,solutions,applyDetailList,loginUserInfo,countCyclePriceVO);
         InsuranceApply updBean = new InsuranceApply();
         updBean.setId(insuranceApply.getId());
         updBean.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
         insuranceApplyMapper.updateById(updBean);
         //瀛樺偍鏃ュ織鏁版嵁
         this.saveApplyLog(insuranceApply,insuranceApplyStatus,null);
+        //鍙戦�佸緟鍔炰笟鍔�
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.INSURANCE_APPLY;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,insuranceApply.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,insuranceApply.getId(),solutions.getName(),insuranceApply.getCompanyId(),Constants.NoticeType.ZERO);
+        noticesMapper.insert(notices);
+
         return insuranceApply.getId();
     }
 
@@ -811,22 +885,33 @@
         insuranceApply.setEndTime(countCyclePriceVO.getEndDate());
 
         applyDetailMapper.delete(new QueryWrapper<ApplyDetail>().lambda().eq(ApplyDetail::getApplyId,insuranceApply.getId()));
+
+        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌鏂规淇℃伅");
+        }
+
         //澶勭悊涓嬬骇鏁版嵁
-        this.dealApplyDetailData(insuranceApply,applyDetailList,loginUserInfo,countCyclePriceVO);
+        this.dealApplyDetailData(insuranceApply,solutions,applyDetailList,loginUserInfo,countCyclePriceVO);
         insuranceApply.setFee(applyDetailList.stream().map(ApplyDetail::getFee).reduce(BigDecimal.ZERO,BigDecimal::add));
         insuranceApplyMapper.updateById(insuranceApply);
         //瀛樺偍鏃ュ織鏁版嵁
         this.saveApplyLog(insuranceApply,insuranceApplyStatus,null);
+
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.INSURANCE_APPLY;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,insuranceApply.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,insuranceApply.getId(),solutions.getName(),insuranceApply.getCompanyId(),Constants.NoticeType.ZERO);
+        noticesMapper.insert(notices);
+
         return insuranceApply.getId();
     }
 
 
 
-    public void dealApplyDetailData(InsuranceApply insuranceApply,List<ApplyDetail> applyDetailList,LoginUserInfo loginUserInfo,CountCyclePriceVO  countCyclePriceVO){
-        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
-        if(Objects.isNull(solutions)){
-            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌鏂规淇℃伅");
-        }
+    public void dealApplyDetailData(InsuranceApply insuranceApply,Solutions solutions,List<ApplyDetail> applyDetailList,LoginUserInfo loginUserInfo,CountCyclePriceVO  countCyclePriceVO){
         //鏌ヨ淇濋櫓鏂规涓嬬殑鎵�鏈夋淳閬e崟浣�
         List<DuSolution>  duSolutionList = duSolutionJoinMapper.selectJoinList(DuSolution.class,new MPJLambdaWrapper<DuSolution>()
                 .selectAll(DuSolution.class)
@@ -1331,8 +1416,14 @@
         if(insuranceApply.getIsdeleted().equals(Constants.ONE)){
             throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"鏁版嵁宸插垹闄�,鏃犳硶杩涜璇ユ搷浣�");
         }
+        Solutions solutions = solutionsMapper.selectById(insuranceApply.getSolutionId());
+        if(Objects.isNull(solutions)){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"鏈煡璇㈠埌鏂规淇℃伅");
+        }
+
         //-----TODU-------RJ-------瀹屽杽閫�鍥炵姸鎬佸垎寮�鏍囪------------------
         Constants.InsuranceApplyStatus insuranceApplyStatus =  Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_SIGNATURE;
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.INSURANCE_APPLY;
         if(insuranceApplyOptDTO.getOptType().equals(Constants.ONE)){
             if(!(insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.UPLOAD.getKey())
                     ||insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.WAIT_SIGNATURE.getKey())
@@ -1346,6 +1437,15 @@
             }else  if(insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.SIGNATURE.getKey())){
                 insuranceApplyStatus =  Constants.InsuranceApplyStatus.COMPANY_BACK_APPLY_SIGNATURE;
             }
+
+            //瀛樺偍寰呭姙淇℃伅
+            //鍒犻櫎鍏朵粬寰呭姙
+            noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,insuranceApply.getId()));
+            Notices notices = new Notices(noticeObjectType,Constants.ONE,insuranceApply.getId(),solutions.getName(),
+                    insuranceApply.getCompanyId(), Constants.NoticeType.THREE);
+            noticesMapper.insert(notices);
+
+
         }else if(insuranceApplyOptDTO.getOptType().equals(Constants.TWO)){
             insuranceApplyStatus =  Constants.InsuranceApplyStatus.CLOSE;
             if(insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.CLOSE.getKey())){
@@ -1356,6 +1456,8 @@
                     ||insuranceApply.getStatus().equals(Constants.InsuranceApplyStatus.PLATFORM_CHECK_PASS.getKey()))){
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏁版嵁鐘舵�侀潪鍙敵璇烽��鍥�!");
             }
+            //鍒犻櫎鍏朵粬寰呭姙
+            noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,insuranceApply.getId()));
         }
         insuranceApply.setStatus(insuranceApplyStatus.getKey());
         insuranceApply.setCheckDate(new Date());
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
index a81f8fe..5f1c94c 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -181,6 +181,7 @@
                 .selectAs(DispatchUnit::getName,Member::getDuName)
                 .selectAs(Worktype::getName,Member::getWorkTypeName)
                 .selectAs(Solutions::getName,Member::getSolutionName)
+                .select(" case when  now() between t.start_time and t.end_time then 1  else 0 end solutionsStatus ")
                 .leftJoin(InsuranceApply.class,InsuranceApply::getId,Member::getApplyId)
                 .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                 .leftJoin(DispatchUnit.class,DispatchUnit::getId,Member::getDuId)
@@ -191,15 +192,9 @@
                 .like(StringUtils.isNotBlank(memberQueryDTO.getIdCard()),Member::getIdcardNo, memberQueryDTO.getIdCard())
                 .eq(!Objects.isNull(memberQueryDTO.getDuId()),Member::getDuId, memberQueryDTO.getDuId())
                 .eq(!Objects.isNull(memberQueryDTO.getSolutionsId()),Solutions::getId, memberQueryDTO.getSolutionsId())
-                .ge(!Objects.isNull(memberQueryDTO.getSolutionsStatus())&&!memberQueryDTO.getSolutionsStatus().equals(Constants.ZERO),
-                        Member::getStartTime, DateUtil.getDate(new Date(),"yyyy-MM-dd")+" 00:00:00")
-                .le(!Objects.isNull(memberQueryDTO.getSolutionsStatus())&&memberQueryDTO.getSolutionsStatus().equals(Constants.ONE),
-                        Member::getEndTime, DateUtil.getDate(new Date(),"yyyy-MM-dd")+" 23:59:59")
-                .ge(!Objects.isNull(memberQueryDTO.getSolutionsStatus())&&memberQueryDTO.getSolutionsStatus().equals(Constants.TWO),
-                        Member::getEndTime, DateUtil.getDate(new Date(),"yyyy-MM-dd")+" 23:59:59")
+                .apply(!Objects.isNull(memberQueryDTO.getSolutionsStatus())&&memberQueryDTO.getSolutionsStatus().equals(Constants.ONE),"now() between t.start_time and t.end_time")
+                .apply(!Objects.isNull(memberQueryDTO.getSolutionsStatus())&&memberQueryDTO.getSolutionsStatus().equals(Constants.TWO),"now()  >  t.end_time")
         ;
-
-
         for(PageWrap.SortData sortData: pageWrap.getSorts()) {
             if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                 queryWrapper.orderByDesc(sortData.getProperty());
@@ -220,15 +215,20 @@
     @Override
     public List<Member> findListByDTO(MemberQueryDTO memberQueryDTO) {
 
-        MPJLambdaWrapper<Member> lambdaWrapper = new MPJLambdaWrapper<Member>()
-                .selectAll(Member.class)
+        MPJLambdaWrapper<Member> lambdaWrapper = new MPJLambdaWrapper<Member>();
+        lambdaWrapper.selectAll(Member.class)
                 .selectAs(DispatchUnit::getName,Member::getDuName)
                 .selectAs(Worktype::getName,Member::getWorkTypeName)
+                .selectAs(Company::getName,Member::getCompanyName)
+                .select(" case when  now() between t.start_time and t.end_time then 1  else 2 end solutionsStatus ")
                 .leftJoin(DispatchUnit.class,DispatchUnit::getId,Member::getDuId)
                 .leftJoin(Worktype.class,Worktype::getId,Member::getWorktypeId)
+                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                 .notIn(CollectionUtils.isNotEmpty(memberQueryDTO.getMemberIds()),Member::getId,memberQueryDTO.getMemberIds())
                 .eq(!Objects.isNull(memberQueryDTO.getCompanyId()),Member::getCompanyId,memberQueryDTO.getCompanyId())
                 .eq(Member::getIsdeleted, Constants.ZERO)
+                .apply(!Objects.isNull(memberQueryDTO.getSolutionsStatus())&&memberQueryDTO.getSolutionsStatus().equals(Constants.ONE),"now() between t.start_time and t.end_time")
+                .apply(!Objects.isNull(memberQueryDTO.getSolutionsStatus())&&memberQueryDTO.getSolutionsStatus().equals(Constants.TWO),"now()  >  t.end_time")
                 .like(StringUtils.isNotBlank(memberQueryDTO.getName()),Member::getName, memberQueryDTO.getName())
                 .notExists(!Objects.isNull(memberQueryDTO.getNotInInsuranceApplyId()),
                         " select 1 from apply_detail ad where ad.apply_id = "+memberQueryDTO.getNotInInsuranceApplyId()+" and ad.END_TIME > now() and ad.isdeleted = 0 " +
@@ -238,6 +238,7 @@
                     .selectAll(Member.class)
                     .selectAs(DispatchUnit::getName,Member::getDuName)
                     .selectAs(Worktype::getName,Member::getWorkTypeName)
+                    .selectAs(Company::getName,Member::getCompanyName)
                     .leftJoin(ApplyDetail.class,ApplyDetail::getMemberId,Member::getId)
                     .leftJoin(InsuranceApply.class,InsuranceApply::getId,ApplyDetail::getApplyId)
                     .leftJoin(DispatchUnit.class,DispatchUnit::getId,ApplyDetail::getDuId)
@@ -248,8 +249,7 @@
                             " select 1 from apply_detail ad where ad.apply_id = "+memberQueryDTO.getInsuranceApplyId()+" and ad.END_TIME > now() and ad.isdeleted = 0 " +
                                     " and ad.member_id = t.id ");
         }
-        List<Member> memberList = memberJoinMapper.selectJoinList(Member.class,lambdaWrapper
-        );
+        List<Member> memberList = memberJoinMapper.selectJoinList(Member.class,lambdaWrapper);
         return memberList;
     }
 
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/NoticesServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/NoticesServiceImpl.java
index 56982c7..23965eb 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/NoticesServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/NoticesServiceImpl.java
@@ -2,18 +2,23 @@
 
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
+import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.NoticesMapper;
+import com.doumee.dao.business.join.NoticesJoinMapper;
+import com.doumee.dao.business.model.ApplyChagneDetail;
+import com.doumee.dao.business.model.Company;
+import com.doumee.dao.business.model.InsuranceApply;
 import com.doumee.dao.business.model.Notices;
 import com.doumee.service.business.NoticesService;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-
 import java.util.List;
 
 /**
@@ -25,7 +30,7 @@
 public class NoticesServiceImpl implements NoticesService {
 
     @Autowired
-    private NoticesMapper noticesMapper;
+    private NoticesJoinMapper noticesMapper;
 
     @Override
     public Integer create(Notices notices) {
@@ -87,90 +92,51 @@
     @Override
     public PageData<Notices> findPage(PageWrap<Notices> pageWrap) {
         IPage<Notices> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<Notices> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<Notices> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(Notices::getId, pageWrap.getModel().getId());
-        }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(Notices::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(Notices::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(Notices::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(Notices::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(Notices::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(Notices::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
+        queryWrapper.selectAll(Notices.class);
+        queryWrapper.selectAs(Company::getName,Notices::getCompanyName);
+        queryWrapper.leftJoin(Company.class,Company::getId,Notices::getCompanyId);
         if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(Notices::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getRemark() != null) {
-            queryWrapper.lambda().eq(Notices::getRemark, pageWrap.getModel().getRemark());
-        }
-        if (pageWrap.getModel().getTitle() != null) {
-            queryWrapper.lambda().eq(Notices::getTitle, pageWrap.getModel().getTitle());
-        }
-        if (pageWrap.getModel().getInfo() != null) {
-            queryWrapper.lambda().eq(Notices::getInfo, pageWrap.getModel().getInfo());
-        }
-        if (pageWrap.getModel().getContent() != null) {
-            queryWrapper.lambda().eq(Notices::getContent, pageWrap.getModel().getContent());
-        }
-        if (pageWrap.getModel().getObjId() != null) {
-            queryWrapper.lambda().eq(Notices::getObjId, pageWrap.getModel().getObjId());
+            queryWrapper.eq(Notices::getIsdeleted, pageWrap.getModel().getIsdeleted());
         }
         if (pageWrap.getModel().getObjType() != null) {
-            queryWrapper.lambda().eq(Notices::getObjType, pageWrap.getModel().getObjType());
-        }
-        if (pageWrap.getModel().getObjName() != null) {
-            queryWrapper.lambda().eq(Notices::getObjName, pageWrap.getModel().getObjName());
+            queryWrapper.eq(Notices::getObjType, pageWrap.getModel().getObjType());
         }
         if (pageWrap.getModel().getType() != null) {
-            queryWrapper.lambda().eq(Notices::getType, pageWrap.getModel().getType());
-        }
-        if (pageWrap.getModel().getParam1() != null) {
-            queryWrapper.lambda().eq(Notices::getParam1, pageWrap.getModel().getParam1());
-        }
-        if (pageWrap.getModel().getParam2() != null) {
-            queryWrapper.lambda().eq(Notices::getParam2, pageWrap.getModel().getParam2());
-        }
-        if (pageWrap.getModel().getParam3() != null) {
-            queryWrapper.lambda().eq(Notices::getParam3, pageWrap.getModel().getParam3());
-        }
-        if (pageWrap.getModel().getParam4() != null) {
-            queryWrapper.lambda().eq(Notices::getParam4, pageWrap.getModel().getParam4());
-        }
-        if (pageWrap.getModel().getParam5() != null) {
-            queryWrapper.lambda().eq(Notices::getParam5, pageWrap.getModel().getParam5());
-        }
-        if (pageWrap.getModel().getUserId() != null) {
-            queryWrapper.lambda().eq(Notices::getUserId, pageWrap.getModel().getUserId());
+            queryWrapper.eq(Notices::getType, pageWrap.getModel().getType());
         }
         if (pageWrap.getModel().getCompanyId() != null) {
-            queryWrapper.lambda().eq(Notices::getCompanyId, pageWrap.getModel().getCompanyId());
+            queryWrapper.eq(Notices::getCompanyId, pageWrap.getModel().getCompanyId());
         }
         if (pageWrap.getModel().getPalt() != null) {
-            queryWrapper.lambda().eq(Notices::getPalt, pageWrap.getModel().getPalt());
+            queryWrapper.eq(Notices::getPalt, pageWrap.getModel().getPalt());
         }
         if (pageWrap.getModel().getStatus() != null) {
-            queryWrapper.lambda().eq(Notices::getStatus, pageWrap.getModel().getStatus());
+            queryWrapper.eq(Notices::getStatus, pageWrap.getModel().getStatus());
         }
         if (pageWrap.getModel().getReaded() != null) {
-            queryWrapper.lambda().eq(Notices::getReaded, pageWrap.getModel().getReaded());
+            queryWrapper.eq(Notices::getReaded, pageWrap.getModel().getReaded());
         }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
+        if(CollectionUtils.isNotEmpty(pageWrap.getSorts())){
+            for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+                if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                    queryWrapper.orderByDesc(sortData.getProperty());
+                } else {
+                    queryWrapper.orderByAsc(sortData.getProperty());
+                }
             }
+        }else{
+            queryWrapper.orderByDesc(Notices::getCreateDate);
         }
-        return PageData.from(noticesMapper.selectPage(page, queryWrapper));
+
+        PageData<Notices> pageData = PageData.from(noticesMapper.selectJoinPage(page,Notices.class, queryWrapper));
+        pageData.getRecords().forEach(i->{
+            i.setTypeDetail(
+                    Constants.NoticeType.getDetail(i.getObjType(),i.getType())
+            );
+        });
+        return pageData;
     }
 
     @Override
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
index d9e8421..5a501ce 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/SettleClaimsServiceImpl.java
@@ -10,6 +10,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
+import com.doumee.dao.business.NoticesMapper;
 import com.doumee.dao.business.SettleClaimsLogMapper;
 import com.doumee.dao.business.SettleClaimsMapper;
 import com.doumee.dao.business.dto.SCSupplementDTO;
@@ -67,6 +68,8 @@
     @Autowired
     private SettleClaimsLogJoinMapper settleClaimsLogJoinMapper;
 
+    @Autowired
+    private NoticesMapper noticesMapper;
     /**
      * 鍒犻櫎闄勪欢
      * @return
@@ -117,6 +120,12 @@
         update.setStatus(Constants.SettleClaimsStatus.RETURN_ACCEPTANCE.getKey());
         settleClaimsMapper.updateById(update);
 
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
+
         Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_RETURN;
         String info =applyLogType.getInfo();
         info = info.replace("${param}", update.getCheckInfo());
@@ -155,6 +164,12 @@
         update.setId(model.getId());
         update.setStatus(Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey());
         settleClaimsMapper.updateById(update);
+
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
 
         Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_CONFIRM_INFORMATION;
         String info =applyLogType.getInfo();
@@ -239,6 +254,14 @@
         update.setScClaimAccount(Constants.formatBigdecimal(param.getScClaimAccount()));
         update.setClaimAccount(update.getYlClaimAccount().add(update.getSwClaimAccount()).add(update.getScClaimAccount()).add(update.getWgClaimAccount()));
         settleClaimsMapper.updateById(update);
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ONE,model.getId(),model.getInformantName(),
+                model.getCompanyId(), Constants.NoticeType.ONE);
+        noticesMapper.insert(notices);
 
         Constants.SettleClaimsLogType applyLogType = Constants.SettleClaimsLogType.PLATFORM_FINISH;
         String info =applyLogType.getInfo();
@@ -385,6 +408,17 @@
         }
         //璁板綍鏃ュ織
         this.saveSettleClaimsLog(settleClaims,Constants.SettleClaimsLogType.UPLOAD,null);
+
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.SETTLE_CLAIMS;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,settleClaims.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,settleClaims.getId(),settleClaims.getInformantName(),
+                settleClaims.getCompanyId(), Constants.NoticeType.ZERO);
+        noticesMapper.insert(notices);
+
+
         return settleClaims.getId();
     }
 
@@ -555,6 +589,7 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犳硶淇敼鏂规淇℃伅");
         }
         if(!(oldSettleClaims.getStatus().equals(Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())
+                || oldSettleClaims.getStatus().equals(Constants.SettleClaimsStatus.DEAL_ING.getKey())
                 || oldSettleClaims.getStatus().equals(Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()))){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐘舵�佹棤娉曡繘琛岃鎿嶄綔");
         }
@@ -593,6 +628,7 @@
         }
         SettleClaims settleClaims  = settleClaimsMapper.selectById(scSupplementDTO.getId());
         if(!(settleClaims.getStatus().equals(Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())
+                || settleClaims.getStatus().equals(Constants.SettleClaimsStatus.DEAL_ING.getKey())
                 || settleClaims.getStatus().equals(Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()))){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐘舵�佹棤娉曡繘琛岃鎿嶄綔");
         }
@@ -624,6 +660,7 @@
 
         SettleClaims settleClaims  = settleClaimsMapper.selectById(scSupplementDTO.getId());
         if(!(settleClaims.getStatus().equals(Constants.SettleClaimsStatus.WAIT_ACCEPTANCE.getKey())
+                || settleClaims.getStatus().equals(Constants.SettleClaimsStatus.DEAL_ING.getKey())
                 || settleClaims.getStatus().equals(Constants.SettleClaimsStatus.CONFIRM_INFORMATION.getKey()))){
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠鐘舵�佹棤娉曡繘琛岃鎿嶄綔");
         }
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 b81bc0a..c744882 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
@@ -8,10 +8,7 @@
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.Utils;
-import com.doumee.dao.business.CompanyMapper;
-import com.doumee.dao.business.SolutionsMapper;
-import com.doumee.dao.business.TaxDetialMapper;
-import com.doumee.dao.business.TaxesMapper;
+import com.doumee.dao.business.*;
 import com.doumee.dao.business.dto.DirectInvoicingDTO;
 import com.doumee.dao.business.dto.DirectInvoicingDetailDTO;
 import com.doumee.dao.business.dto.EntrustInvoicingDTO;
@@ -67,7 +64,8 @@
     private ApplyChangeJoinMapper applyChangeJoinMapper;
     @Autowired
     private SolutionsMapper solutionsMapper;
-
+    @Autowired
+    private NoticesMapper noticesMapper;
     @Override
     public Integer create(Taxes taxes) {
         taxesMapper.insert(taxes);
@@ -118,6 +116,10 @@
                 }
             }
         }
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.TAXES;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,model.getId()));
     }
 
     private List<TaxDetial> getDetailListById(Integer id) {
@@ -150,6 +152,8 @@
         queryWrapper.leftJoin(Taxes.class,Taxes::getId,TaxDetial::getDelTaxId);
         queryWrapper.eq(  TaxDetial::getTaxId,id);
         List<TaxDetial> detialList =  taxDetailJoinMapper.selectJoinList(TaxDetial.class,queryWrapper.orderByAsc(TaxDetial::getType));
+
+
         return detialList;
     }
 
@@ -184,6 +188,12 @@
         update.setDoneDate(update.getEditDate());
         update.setImgurl(taxes.getImgurl());
         taxesMapper.updateById(update);
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.TAXES;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,taxes.getId()));
+
     }
 
     @Override
@@ -430,6 +440,17 @@
             taxDetial.setType(Constants.ZERO);
         }
         taxDetailJoinMapper.insertBatchSomeColumn(taxDetialList);
+
+
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.TAXES;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,taxes.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,taxes.getId(),taxes.getPrice().toString(),
+                taxes.getCompanyId(), Constants.NoticeType.ZERO);
+        noticesMapper.insert(notices);
+
+
     }
 
 
@@ -622,43 +643,14 @@
             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏃犲彲寮�绁ㄦ暟鎹紝鎿嶄綔澶辫触");
         }
 
+        //瀛樺偍寰呭姙淇℃伅
+        Constants.NoticeObjectType noticeObjectType = Constants.NoticeObjectType.TAXES;
+        //鍒犻櫎鍏朵粬寰呭姙
+        noticesMapper.delete(new QueryWrapper<Notices>().lambda().eq(Notices::getObjType,noticeObjectType.getKey()).eq(Notices::getObjId,taxes.getId()));
+        Notices notices = new Notices(noticeObjectType,Constants.ZERO,taxes.getId(),taxes.getPrice().toString(),
+                taxes.getCompanyId(), Constants.NoticeType.ZERO);
+        noticesMapper.insert(notices);
 
-//        List<DirectInvoicingDetailDTO> directInvoicingDetailDTOList = directInvoicingDTO.getDirectInvoicingDetailDTOList();
-//        for (DirectInvoicingDetailDTO directInvoicingDetailDTO:directInvoicingDetailDTOList) {
-//            if(Objects.isNull(directInvoicingDetailDTO)
-//                    || Objects.isNull(directInvoicingDetailDTO.getId())
-//                    || Objects.isNull(directInvoicingDetailDTO.getType())
-//                    || Objects.isNull(directInvoicingDetailDTO.getFee())
-//            ){
-//                throw new BusinessException(ResponseStatus.BAD_REQUEST);
-//            }
-//
-//            if(directInvoicingDetailDTO.getType().equals(Constants.ZERO)){
-//                //淇濆崟
-//                InsuranceApply insuranceApply =  insuranceApplyJoinMapper.selectJoinOne(InsuranceApply.class,
-//                        new MPJLambdaWrapper<InsuranceApply>()
-//                                .selectAll(InsuranceApply.class)
-//                                .selectAs(Solutions::getName,InsuranceApply::getSolutionsName)
-//                                .select(" ( select count(1) from apply_detail ad  where ad.apply_id = t.id ) as insureNum")
-//                                .notExists(" select 1 from taxes t1 inner join tax_detial t2 on t1.id  = t2.tax_id where t2.type = 0 and t1.status != 2 and t.id = t2.INSURANCE_APPLY_ID  ")
-//                                .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.UPLOAD_INSURANCE.getKey())
-//                                .eq(InsuranceApply::getId,directInvoicingDetailDTO.getId())
-//                );
-//                if(Objects.isNull(insuranceApply)){
-//                    throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"淇濆崟鍙枫��"+insuranceApply.getCode()+"銆戞湭鏌ヨ鍒颁繚鍗曚俊鎭�");
-//                }
-//
-//
-//
-//            }else if(directInvoicingDetailDTO.getType().equals(Constants.ZERO)){
-//                //鍔犲噺淇�
-//            }else{
-//                //鍐茬孩鍗�
-//            }
-//
-//
-//        }
-//        taxDetailJoinMapper.insertBatchSomeColumn(taxDetialList);
     }
 
 

--
Gitblit v1.9.3