From 18b05b40f7b62962e05250e6a07abca27b5adf67 Mon Sep 17 00:00:00 2001
From: nidapeng <jp@doumee.com>
Date: 星期一, 01 四月 2024 15:02:24 +0800
Subject: [PATCH] 提交一把

---
 company/src/views/business/unionApply.vue                                                |   31 ++-
 server/service/src/main/java/com/doumee/core/utils/Constants.java                        |   14 +-
 company/src/assets/style/style.scss                                                      |   12 +
 server/service/src/main/java/com/doumee/dao/business/model/UnionApply.java               |    5 
 server/service/src/main/java/com/doumee/service/business/impl/SolutionsServiceImpl.java  |    6 
 company/src/api/business/unionApply.js                                                   |    3 
 company/src/components/business/OpearaUnionApply.vue                                     |  291 +++++++++++++++++++++++++----------------
 server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java |   58 +++++--
 8 files changed, 261 insertions(+), 159 deletions(-)

diff --git a/company/src/api/business/unionApply.js b/company/src/api/business/unionApply.js
index cb10f1a..7655b62 100644
--- a/company/src/api/business/unionApply.js
+++ b/company/src/api/business/unionApply.js
@@ -11,6 +11,9 @@
 export function create (data) {
     return request.post('/business/unionApply/create', data)
 }
+export function merge (data) {
+    return request.post('/business/unionApply/merge', data)
+}
 
 // 淇敼
 export function updateById (data) {
diff --git a/company/src/assets/style/style.scss b/company/src/assets/style/style.scss
index 1e51656..faf843f 100644
--- a/company/src/assets/style/style.scss
+++ b/company/src/assets/style/style.scss
@@ -77,22 +77,24 @@
 ::v-deep .el-table__cell {
   height: 100% !important;
 }
-.apply-status0, .apply-status28,.apply-status20,.apply-status21,.apply-status22,
-.apply-status25,.apply-status2 , .apply-status3, .apply-status10,
+.apply-status0, .apply-status26,.apply-status20,.apply-status21,.apply-status22,
+.apply-status23,.apply-status2 , .apply-status3, .apply-status10,
 .change-status0,.change-status1,.change-status2,
 .settle-status0,.settle-status2,.settle-status3,
 .tax-status0,
+.union-apply-status0,.union-apply-status1,.union-apply-status2
 .du-status0 {
   color: #216EEE  !important;
 }
-.apply-status1 ,.apply-status24,.apply-status23, .apply-status4, .apply-status6,
+.apply-status1 ,.apply-status24,.apply-status25, .apply-status4, .apply-status6,
 .apply-status7, .apply-status8, .apply-status11,
 .change-status3,.change-status4,.change-status5,.change-status8,
 .settle-status1,
-.tax-status2,
+.tax-status2,union-apply-status4
 .du-status2 {
   color: #F95601 !important;
 }
-  .apply-status5,.apply-status26,.change-status7,.settle-status7,.tax-status1,.du-status1,.settle-status4  {
+  .apply-status5,.apply-status27,.change-status7,.settle-status7,
+  .tax-status1,.du-status1,.settle-status4 .union-apply-status3 {
   color: #00BA92  !important;
 }
diff --git a/company/src/components/business/OpearaUnionApply.vue b/company/src/components/business/OpearaUnionApply.vue
index 915a281..d7726d3 100644
--- a/company/src/components/business/OpearaUnionApply.vue
+++ b/company/src/components/business/OpearaUnionApply.vue
@@ -9,8 +9,8 @@
     >
         <div class="list">
             <el-form :inline="true" ref="form" :model="form" :rules="rules" class="demo-form-inline">
-                <el-form-item label="淇濋櫓鏂规" prop="solutionsId">
-                    <el-select v-model="form.solutionsId" @change="selectSolutions" placeholder="璇烽�夋嫨">
+                <el-form-item label="淇濋櫓鏂规" prop="baseSolutionId">
+                    <el-select v-model="form.baseSolutionId" @change="selectSolutions" placeholder="璇烽�夋嫨">
                         <el-option
                             v-for="item in solutions"
                             :key="item.baseId"
@@ -19,14 +19,14 @@
                         </el-option>
                     </el-select>
                 </el-form-item>
-                <el-form-item label="淇濋櫓鐢熸晥璧锋鏈�" prop="applyStartTime">
+                <el-form-item label="淇濋櫓鐢熸晥璧锋鏈�" prop="startDate">
                     <div style="display: flex; flex-direction: column;">
                         <el-date-picker
                             @change="changeTime"
                             v-model="time"
                             type="daterange"
-                            value-format="yyyy-MM-dd HH:mm:ss"
-                            format="yyyy-MM-dd HH:mm:ss"
+                            format="yyyy 骞� MM 鏈� dd 鏃�"
+                            value-format="yyyy-MM-dd"
                             range-separator="鑷�"
                             start-placeholder="寮�濮嬫棩鏈�"
                             end-placeholder="缁撴潫鏃ユ湡" />
@@ -56,6 +56,7 @@
             :data="list"
             border
             ref="multipleTable"
+            @selection-change="handleSelectionChange"
             style="width: 100%;margin-bottom: 15px;">
             <el-table-column
                 type="selection"
@@ -67,23 +68,23 @@
                 </template>
             </el-table-column>
             <el-table-column
-                prop="memberName"
+                prop="companyName"
                 label="琚繚闄╀汉">
             </el-table-column>
             <el-table-column
-                prop="idCard"
+                prop="applyStartTime"
                 label="鏈熸湜淇濋櫓鐢熸晥璧锋湡">
             </el-table-column>
             <el-table-column
-                prop="oldDuName"
+                prop="applyEndTime"
                 label="鏈熸湜淇濋櫓鐢熸晥姝㈡湡">
             </el-table-column>
             <el-table-column
-                prop="oldWorkTypeName"
+                prop="insureNum"
                 label="鎶曚繚浜烘暟">
             </el-table-column>
             <el-table-column
-                prop="duName"
+                prop="fee"
                 label="鎬昏垂鐢�">
             </el-table-column>
             <el-table-column
@@ -107,112 +108,172 @@
 </template>
 
 <script>
-    import BaseOpera from '@/components/base/BaseOpera'
-    import GlobalWindow from '@/components/common/GlobalWindow'
-    import selectApplicationForm from '@/components/business/selectApplicationForm'
-    import employeeList from '@/components/business/employeeList'
-    import { all } from '@/api/business/solutions'
-    export default {
-        name: 'factoryChange',
-        extends: BaseOpera,
-        components: { GlobalWindow, selectApplicationForm, employeeList },
-        data () {
-            return {
-                form: {
-                    id: null,
-                    solutionsId: '',
-                    applyStartTime: '',
-                    applyEndTime: ''
-                },
-                solutions: [],
-                list: [],
-                endTime: '',
-                item: null,
-                time: [],
-                // 楠岃瘉瑙勫垯
-                rules: {
-                    applyStartTime: [
-                        { required: true, message: '璇烽�夋嫨淇濋櫓鐢熸晥璧锋湡' }
-                    ],
-                    solutionsName: [
-                        { required: true, message: '璇烽�夋嫨淇濋櫓鏂规' }
-                    ]
-                }
-            }
-        },
-        created () {
-            this.config({
-                api: '/business/insuranceApply',
-                'field.id': 'id'
-            })
-        },
-        methods: {
-            confirm() {
-                this.$confirm('纭鎻愪氦锛岃浠旂粏鏍稿淇℃伅銆�', '鎻愮ず', {
-                    confirmButtonText: '纭畾',
-                    cancelButtonText: '鍙栨秷',
-                    type: 'warning',
-                    center: true
-                }).then(() => {
-                    this.$message({
-                        type: 'success',
-                        message: '纭畾!'
-                    });
-                }).catch(() => {
-                    this.$message({
-                        type: 'info',
-                        message: '鍙栨秷'
-                    });
-                });
-            },
-            getValue(e) {
-                console.log(e)
-            },
-            selectApplicationForm() {
-                if (!this.form.solutionsId) return this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
-                this.$refs.selectApplicationForm.open('閫夋嫨鐢宠鍗�', this.form.solutionsId)
-            },
-            changeTime(e) {
-                if (e.length > 0) {
-                    this.form.applyStartTime = e[0]
-                    this.form.applyEndTime = e[1]
-                } else {
-                    this.form.applyStartTime = ''
-                    this.form.applyEndTime = ''
-                }
-            },
-            open (title, target) {
-                this.getSolutions()
-                this.title = title
-                if (target) {
-                    this.$nextTick(() => {
-                        this.$refs.form.resetFields()
-                    })
-                } else {
-                    this.$nextTick(() => {
-                        this.$refs.form.resetFields()
-                        this.form[this.configData['field.id']] = null
-                    })
-                }
-                this.visible = true
-            },
-            // 鏌ヨ鍏ㄩ儴鏂规
-            getSolutions() {
-                all({})
-                    .then(res => {
-                        this.solutions = res
-                    })
-            },
-            // 閫夋嫨淇濋櫓鍗�
-            selectSolutions(id) {
-                this.solutions.forEach(item => {
-                    if (item.id === id) {
-                        this.item = item
-                    }
-                })
-            }
-        }
+import BaseOpera from '@/components/base/BaseOpera'
+import GlobalWindow from '@/components/common/GlobalWindow'
+import selectApplicationForm from '@/components/business/selectApplicationForm'
+import employeeList from '@/components/business/employeeList'
+import { all } from '@/api/business/solutions'
+import { closeWtbForShop, fetchList } from '@/api/business/insuranceApply'
+import { merge } from '@/api/business/unionApply'
+export default {
+  name: 'factoryChange',
+  extends: BaseOpera,
+  components: { GlobalWindow, selectApplicationForm, employeeList },
+  data () {
+    return {
+      form: {
+        baseSolutionId: null,
+        applyIds: [],
+        startDate: null,
+        endDate: null
+      },
+      solutions: [],
+      list: [],
+      endTime: '',
+      item: null,
+      time: [],
+      // 楠岃瘉瑙勫垯
+      rules: {
+        baseSolutionId: [
+          { required: true, message: '璇烽�夋嫨淇濋櫓鏂规' }
+        ],
+        startDate: [
+          { required: true, message: '璇烽�夋嫨淇濋櫓鐢熸晥璧锋湡' }
+        ]
+      }
     }
+  },
+  created () {
+    this.config({
+      api: '/business/insuranceApply',
+      'field.id': 'id'
+    })
+  },
+  methods: {
+    handleSelectionChange (val) {
+      // this.multipleSelection = val;
+      this.form.applyIds = []
+      // 鍋囪鍙栧嚭 id 瀛楁
+      val.forEach(item => {
+        const id = item.id
+        if ( this.form.applyIds.indexOf(id) === -1) {
+          this.form.applyIds.push(id)
+        }
+      })
+    },
+    confirm () {
+      this.$refs.form.validate((valid) => {
+        // debugger
+        if (!valid) {
+          return
+        }
+        if(this.form.applyIds == null || this.form.applyIds.length ===0){
+          this.$tip.apiFailed({
+            type: 'error',
+            message: '璇烽�夋嫨鑷冲皯涓�鏉$敵璇疯褰曡繘琛屾姇淇濈敵璇凤紒!'
+          })
+          return;
+        }
+        this.$confirm('纭鎻愪氦锛岃浠旂粏鏍稿淇℃伅銆�', '鎻愮ず', {
+          confirmButtonText: '纭畾',
+          cancelButtonText: '鍙栨秷',
+          type: 'warning',
+          center: true
+        }).then(() => {
+          merge(this.form)
+            .then(response => {
+              this.$message({
+                type: 'success',
+                message: '鎻愪氦鎴愬姛!'
+              })
+              this.visible = false
+              this.$emit('success')
+            }).catch(err => {
+              this.$tip.apiFailed(err)
+            })
+        }).catch(() => {
+          this.$message({
+            type: 'info',
+            message: '鍙栨秷'
+          })
+        })
+      })
+    },
+    getValue (e) {
+      console.log(e)
+    },
+    selectApplicationForm () {
+      if (!this.form.solutionsId) return this.$message.warning('璇峰厛閫夋嫨淇濋櫓鏂规')
+      this.$refs.selectApplicationForm.open('閫夋嫨鐢宠鍗�', this.form.solutionsId)
+    },
+    changeTime (e) {
+      if (e.length > 0) {
+        this.form.startDate = e[0]
+        this.form.endDate = e[1]
+      } else {
+        this.form.startDate = ''
+        this.form.endDate = ''
+      }
+    },
+    open (title, target) {
+      this.getSolutions()
+      this.title = title
+      this.solutions= []
+      this.list= []
+      this.item= null
+      this.time= []
+      if (target) {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+        })
+      } else {
+        this.$nextTick(() => {
+          this.$refs.form.resetFields()
+          this.form[this.configData['field.id']] = null
+        })
+      }
+      this.visible = true
+    },
+    // 鏌ヨ鍏ㄩ儴鏂规
+    getSolutions () {
+      all({ dataType: 0, type: 1 })
+        .then(res => {
+          this.solutions = res
+        })
+    },
+    search () {
+      this.currentPage = 1
+      this.getList()
+    },
+    getList () {
+      fetchList({
+        capacity: 10,
+        page: this.currentPage,
+        model: {
+          solutionBaseId: this.form.solutionsId,
+          status: 23
+        }
+      }).then(res => {
+        this.list = res.records
+        this.total = res.total
+        this.$nextTick(() => {
+          if (this.$refs.table && this.$refs.table.doLayout) {
+            this.$refs.table.doLayout()
+          }
+        })
+      })
+    },
+    // 閫夋嫨淇濋櫓鍗�
+    selectSolutions (id) {
+      this.search()
+      this.solutions.forEach(item => {
+        if (item.baseId === id) {
+          this.item = item
+        }
+      })
+    }
+  }
+}
 </script>
 
 <style lang="scss" scoped>
diff --git a/company/src/views/business/unionApply.vue b/company/src/views/business/unionApply.vue
index 23a90fc..c60d53c 100644
--- a/company/src/views/business/unionApply.vue
+++ b/company/src/views/business/unionApply.vue
@@ -3,21 +3,21 @@
         <!-- 鎼滅储琛ㄥ崟 -->
         <el-form ref="searchForm" slot="search-form" :model="searchForm" label-width="100px" inline>
             <el-form-item label="淇濆崟鐘舵��" prop="status">
-                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨" @keypress.enter.native="search">
-                    <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="4"></el-option>
-                    <el-option label="宸查��鍥�" value="5"></el-option>
+                <el-select v-model="searchForm.status" placeholder="璇烽�夋嫨"  clearable   @keypress.enter.native="search">
+                    <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="4"></el-option>
                 </el-select>
             </el-form-item>
             <el-form-item label="淇濋櫓鏂规" prop="solutionId">
-                <el-select v-model="searchForm.solutionId" placeholder="璇烽�夋嫨" @change="search">
+                <el-select v-model="searchForm.solutionId" clearable  placeholder="璇烽�夋嫨" @change="search">
                     <el-option
                         v-for="item in solutionList"
-                        :key="item.baseId"
+                        :key="item.id"
                         :label="item.name"
-                        :value="item.baseId">
+                        :value="item.id">
                     </el-option>
                 </el-select>
             </el-form-item>
@@ -40,7 +40,7 @@
         <!-- 琛ㄦ牸鍜屽垎椤� -->
         <template v-slot:table-wrap>
             <ul class="toolbar" v-permissions="['business:insurance:create']">
-                <li><el-button type="primary" @click="$refs.OpearaUnionApply.open('鎶曚繚璇︽儏', row)" v-permissions="['business:insurance:create']">鎻愪氦鐢宠</el-button></li>
+                <li><el-button type="primary" @click="$refs.OpearaUnionApply.open('濮旀墭鎶曚繚鐢宠')" v-permissions="['business:insurance:create']">鎻愪氦鐢宠</el-button></li>
             </ul>
             <el-table
                 v-loading="isWorking.search"
@@ -54,10 +54,14 @@
                 </el-table-column>
                 <el-table-column prop="statusInfo" label="鐘舵��" min-width="100px">
                     <template slot-scope="{row}">
-                        <span :class="'apply-status'+row.status" >{{row.statusInfo}}</span>
+                        <span :class="'union-apply-status'+row.status" v-if="row.status==0">寰呭鏍� </span>
+                        <span :class="'union-apply-status'+row.status" v-if="row.status==1">寰呯缃� </span>
+                        <span :class="'union-apply-status'+row.status" v-if="row.status==2">寰呭嚭鍗� </span>
+                        <span :class="'union-apply-status'+row.status" v-if="row.status==3">淇濋殰涓� </span>
+                        <span :class="'union-apply-status'+row.status" v-if="row.status==4">宸查��鍥� </span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="solutionsName" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
+                <el-table-column prop="solutionName" label="淇濋櫓鏂规" min-width="100px"></el-table-column>
                 <el-table-column prop="insureNum" label="鎶曚繚浜烘暟" min-width="100px"></el-table-column>
                 <el-table-column prop="fee" label="鎬昏垂鐢紙鍏冿級" min-width="100px"></el-table-column>
                 <el-table-column prop="createDate" label="鎻愪氦鏃堕棿" min-width="100px"></el-table-column>
@@ -118,6 +122,7 @@
                 'field.main': 'id'
             })
             this.search()
+          this.loadSelectList()
         },
         methods:{
             // 鎼滅储妗嗛噸缃�
@@ -138,7 +143,7 @@
                 this.search()
             },
             loadSelectList() {
-                solutionAll({dataType:2}).then(res => {
+                solutionAll({dataType:0,type:1}).then(res => {
                     this.solutionList = res
                 }).catch(err => {
                 })
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 08a0aca..7403a7e 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
@@ -878,11 +878,11 @@
     }
 
     public  enum UnionApplyStatus {
-        MERGE(1, "寰呬笂浼犱繚鍗�","",0),
-        WAIT_SIGNATURE(2, "寰呯缃�","",0),
-        UPLOAD_INSURANCE_POLICY(3, "寰呬笂浼犱繚鍗�","",0),
-        FINISH(4, "淇濋殰涓�","",0),
-        CLOSE(5, "鍏抽棴","",0),
+        MERGE(0, "寰呬笂浼犱繚鍗�","",0),
+        WAIT_SIGNATURE(1, "寰呯缃�","",0),
+        UPLOAD_INSURANCE_POLICY(2, "寰呬笂浼犱繚鍗�","",0),
+        FINISH(3, "淇濋殰涓�","",0),
+        CLOSE(4, "鍏抽棴","",0),
         ;
         // 鎴愬憳鍙橀噺
         private String name;
@@ -1052,8 +1052,8 @@
 
 
         WTB_UPLOAD(20, "鎻愪氦鎶曚繚","",28),
-        WTB_COMPANY_APPLY_SIGNATURE(21, "濮旀墭淇�-浼佷笟宸茬缃叉姇淇濈‘璁や功","鎻愪氦鎰忚锛�${param}",28),
-        WTB_COMPANY_MEMBER_LIST_SIGNATURE(22, "濮旀墭淇�-浼佷笟宸茬缃蹭汉鍛樺悕鍗�","鎻愪氦鎰忚锛�${param}",22),
+        WTB_COMPANY_APPLY_SIGNATURE(21, "浼佷笟宸茬缃叉姇淇濈‘璁や功","鎻愪氦鎰忚锛�${param}",28),
+        WTB_COMPANY_MEMBER_LIST_SIGNATURE(22, "浼佷笟宸茬缃蹭汉鍛樺悕鍗�","鎻愪氦鎰忚锛�${param}",22),
         WTB_BUSINESS_CHECK_PASS(23,"鍟嗘埛鎶曚繚瀹℃牳閫氳繃","鎻愪氦鎰忚锛�${param}",23),
         WTB_RETURN(24, "宸查��鍥�","鎻愪氦鎰忚锛�${param}",24),
         WTB_CLOSED(25, "宸插叧闂�","鎻愪氦鎰忚锛�${param}",25),
diff --git a/server/service/src/main/java/com/doumee/dao/business/model/UnionApply.java b/server/service/src/main/java/com/doumee/dao/business/model/UnionApply.java
index 3d5f275..4bda0a5 100644
--- a/server/service/src/main/java/com/doumee/dao/business/model/UnionApply.java
+++ b/server/service/src/main/java/com/doumee/dao/business/model/UnionApply.java
@@ -33,7 +33,6 @@
 
     @ApiModelProperty(value = "鍒涘缓鏃堕棿")
     @ExcelColumn(name="鍒涘缓鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date createDate;
 
     @ApiModelProperty(value = "鏇存柊浜虹紪鐮�", example = "1")
@@ -42,7 +41,6 @@
 
     @ApiModelProperty(value = "鏇存柊鏃堕棿")
     @ExcelColumn(name="鏇存柊鏃堕棿")
-    @JsonFormat(pattern = "yyyy-MM-dd")
     private Date editDate;
 
     @ApiModelProperty(value = "鏄惁鍒犻櫎0鍚� 1鏄�", example = "1")
@@ -126,4 +124,7 @@
     @ApiModelProperty(value = "鏈嶅姟澶╂暟")
     @TableField(exist = false)
     private Integer serviceDays;
+    @ApiModelProperty(value = "鎶曚繚浜烘暟")
+    @TableField(exist = false)
+    private Integer insureNum;
 }
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/SolutionsServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/SolutionsServiceImpl.java
index 82c40bd..2b7c1ed 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/SolutionsServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/SolutionsServiceImpl.java
@@ -362,12 +362,18 @@
 
     @Override
     public List<Solutions> findList(Solutions solutions) {
+        LoginUserInfo user = (LoginUserInfo)SecurityUtils.getSubject().getPrincipal();
         solutions.setIsdeleted(Constants.ZERO);
         solutions.setStatus(Constants.ZERO);
         if(solutions.getDataType() == null){
             solutions.setDataType(Constants.TWO);
         }
+        if(Constants.equalsObject(user.getType(),Constants.TWO)){
+            //濡傛灉鏄垹闄�
+            solutions.setShopId(user.getCompanyId());
+        }
         QueryWrapper<Solutions> wrapper = new QueryWrapper<>(solutions);
+
         return solutionsMapper.selectList(wrapper);
     }
   
diff --git a/server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java b/server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java
index 04b339c..6f22a3c 100644
--- a/server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java
+++ b/server/service/src/main/java/com/doumee/service/business/impl/UnionApplyServiceImpl.java
@@ -147,13 +147,18 @@
         MPJLambdaWrapper<UnionApply> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
         queryWrapper.selectAll(UnionApply.class);
+        queryWrapper.selectAs(Solutions::getName,UnionApply::getSolutionName);
+        queryWrapper.select("(select count(b.id) from apply_detail b where b.isdeleted=0 and b.union_apply_id=t.id) as insureNum ");
         queryWrapper.leftJoin(Solutions.class,Solutions::getId,UnionApply::getSolutionId);
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-        if(user.getType().equals(Constants.TWO)){
-            queryWrapper.eq(UnionApply::getCompanyId, pageWrap.getModel().getCompanyId());
+        if(Constants.equalsInteger(user.getType(),Constants.TWO)){
+            queryWrapper.eq(UnionApply::getCompanyId, user.getCompanyId());
         }
         if (pageWrap.getModel().getId() != null) {
             queryWrapper.eq(UnionApply::getId, pageWrap.getModel().getId());
+        }
+        if (pageWrap.getModel().getSolutionId() != null) {
+            queryWrapper.eq(UnionApply::getSolutionId, pageWrap.getModel().getSolutionId());
         }
         if (pageWrap.getModel().getCreator() != null) {
             queryWrapper.eq(UnionApply::getCreator, pageWrap.getModel().getCreator());
@@ -219,14 +224,18 @@
         }
         if (pageWrap.getModel().getSignApplyNo() != null) {
             queryWrapper.eq(UnionApply::getSignApplyNo, pageWrap.getModel().getSignApplyNo());
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
+        }if(pageWrap.getSorts().size() == 0){
+            queryWrapper.orderByDesc(UnionApply::getCreateDate );
+        }else {
+            for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+                if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
+                    queryWrapper.orderByDesc(sortData.getProperty());
+                } else {
+                    queryWrapper.orderByAsc(sortData.getProperty());
+                }
             }
         }
+
         PageData<UnionApply> pageData = PageData.from(unionApplyJoinMapper.selectJoinPage(page,UnionApply.class, queryWrapper));
         return pageData;
     }
@@ -273,6 +282,7 @@
 
 
     @Override
+    @Transactional(rollbackFor ={BusinessException.class,Exception.class} )
     public Integer merge(SaveUnionApplyDTO saveUnionApplyDTO){
         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
         if(!user.getType().equals(Constants.TWO)){
@@ -280,16 +290,27 @@
         }
         if(Objects.isNull(saveUnionApplyDTO)
             || Objects.isNull(saveUnionApplyDTO.getApplyIds())
+            || saveUnionApplyDTO.getApplyIds().size() == 0
             || Objects.isNull(saveUnionApplyDTO.getStartDate())
             || Objects.isNull(saveUnionApplyDTO.getEndDate())
+            || saveUnionApplyDTO.getStartDate().getTime()>saveUnionApplyDTO.getEndDate().getTime()
             || Objects.isNull(saveUnionApplyDTO.getBaseSolutionId())
         ){
             throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+        Solutions solutions = solutionsMapper.selectOne(new QueryWrapper<Solutions>().lambda().
+                eq(Solutions::getType,Constants.ONE)
+                .eq(Solutions::getIsdeleted,Constants.ZERO)
+                .eq(Solutions::getDataType,Constants.ZERO)
+                .eq(Solutions::getBaseId,saveUnionApplyDTO.getBaseSolutionId()));
+        //鏌ヨ鏂规鏁版嵁
+        if(solutions == null){
+            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝鏂规淇℃伅鏈夎锛岃鍒锋柊椤甸潰閲嶈瘯");
+        }
         List<InsuranceApply> insuranceApplyList = insuranceApplyJoinMapper.selectJoinList(InsuranceApply.class,
                 new MPJLambdaWrapper<InsuranceApply>()
                         .selectAll(InsuranceApply.class)
-                        .selectAs(InsuranceApply::getSolutionBaseId,Solutions::getBaseId)
+                        .selectAs(Solutions::getBaseId,InsuranceApply::getSolutionBaseId)
                         .leftJoin(Solutions.class,Solutions::getId,InsuranceApply::getSolutionId)
                         .eq(InsuranceApply::getIsdeleted, Constants.ZERO)
                         .eq(InsuranceApply::getStatus,Constants.InsuranceApplyStatus.WTB_BUSINESS_CHECK_PASS.getKey())
@@ -312,11 +333,19 @@
         unionApply.setStatus(Constants.UnionApplyStatus.MERGE.getKey());
         unionApply.setCheckUserId(user.getId());
         unionApply.setCurrentFee(BigDecimal.ZERO);
+        unionApply.setIsdeleted(Constants.ZERO);
+        unionApply.setSolutionId(solutions.getId());
 
         Integer maxDays = DateUtil.calculateBetween(saveUnionApplyDTO.getStartDate(),saveUnionApplyDTO.getEndDate(),0);
-        List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectList(new QueryWrapper<ApplyDetail>().lambda().select(ApplyDetail::getPrice)
-                .in(ApplyDetail::getApplyId,saveUnionApplyDTO.getApplyIds()));
-        unionApply.setFee(applyDetailList.stream().map(i->i.getPrice().multiply(new BigDecimal(maxDays))).reduce(BigDecimal.ZERO,BigDecimal::add));
+
+        List<ApplyDetail> applyDetailList = applyDetailJoinMapper.selectList(new QueryWrapper<ApplyDetail>().lambda().select(ApplyDetail::getId,ApplyDetail::getPrice)
+                .in(ApplyDetail::getApplyId,saveUnionApplyDTO.getApplyIds())
+                .eq(ApplyDetail::getIsdeleted,Constants.ZERO));
+        if(applyDetailList.size()==0){
+            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瀵逛笉璧凤紝瀛樺湪濮旀墭鎶曚繚鐢宠璁板綍淇℃伅鏈夎锛岃杩斿洖鏌ョ湅鐢宠浜哄憳鏄惁涓虹┖锛�");
+        }
+        unionApply.setFee(applyDetailList.stream().map(i->Constants.formatBigdecimal(i.getPrice()).multiply(new BigDecimal(maxDays))).reduce(BigDecimal.ZERO,BigDecimal::add));
+
         unionApplyMapper.insert(unionApply);
 
         insuranceApplyJoinMapper.update(null,new UpdateWrapper<InsuranceApply>().lambda()
@@ -464,16 +493,11 @@
         multifile.setFileurl(uploadMultifileDTO.getFileurl());
         multifile.setName(uploadMultifileDTO.getName());
         multifileMapper.insert(multifile);
-
-
-
-
     }
 
 
     /**
      * 鍚堝苟鍗� - 鎶曚繚鐢宠绛剧讲
-     * @param id
      * @return
      */
     @Override

--
Gitblit v1.9.3