# HtDelete 删除说明

Delete 删除案例;
Author wangdongyang@expservice.com.cn

# 前端示例

多选删除
<!-- 注解:multi设置多选表格 -->
<template>
  <div>
    <ht-table ref="tableList" ref-table="tableList" 
      :table-head="tableHead" 
      :table-data="tableData" 
      :multi="true"
      :table-cb="handleSearchCb" 
      @selection-change="handleSelectionChange">
      <ht-button @click="handleMultiDelete">多选删除</ht-button>
    </ht-table>
  </div>
</template>
<script>
// import { sleep } from '@/utils';
// 注解:删除方法跳转js
// import {deleteFunction} from '@/api/oem/oms/';
// 注解:多选删除方法跳转js
// import {deleteMultiFunction} from '@/api/oem/oms/';
export default {
  data() {
    return {
      // 注解:多选记录
      multiSelects: [],
      // 注解:多选记录对象
      multiNextSelects: {},
       tableHead: [
        {
          type: 'action',
          label: '操作',
          content: ['删除'],
          action: [
            (row, index) => this.handleDelete(row, index)
          ]
        },
        {
          label: '用户ID',
          prop: 'id',
          align: 'left',
          width: '130px',
          query: true
        },
        {
          label: '姓名',
          prop: 'name',
          align: 'left',
          width: '130px'
        },
        {
          label: '手机号',
          prop: 'phone',
          width: 'auto',
          query: true
        },
        {
          label: '地址',
          prop: 'address',
          width: 'right'
        }
      ],
      tableData:{}
    }
  },
  mounted() {
    this.handleSearch();
  },
  
  methods:{
    async handleSearch(event) {
      try {
        /**
         * @todo: 拼接查询条件---数据
         * @author:  wangdongyang@expservice.com.cn
         * @Date: 2023-05-25 15:33:35
         */        
        this.tableData = { 'current': 1, 'pages': 2, 'size': 3, 'total': 5, 
                           'hitCount': true, 'searchCount': true, 'orders': [],
                           'optimizeCountSql': true,'records':
         [{ 'transHash': {}},
           { 'id': '1011', 'name': '王先生', 'phone': '10086', 'address': '吉林省长春市朝阳区533号', 'rownums': 1 },
           { 'id': '1012', 'name': '李先生', 'phone': '10010', 'address': '北京省北京市123号','rownums': 2 },
           { 'id': '1013', 'name': '朱先生', 'phone': '13560', 'address': '上海市','rownums': 3 }
         ] };
      } catch (e) {
        this.$notify.message(e, 'error');
      }
    },
    /**
     * @todo: 删除方法
     * @author:  wangdongyang@expservice.com.cn
     * @Date: 2023-05-25 15:29:18
     */     
    async handleDelete(row, index) {
      try {
        if (row.id){
          // 注解:实际开发没有this.$notify.message('主键ID:' + row.id + '删除成功');
          this.$notify.message('主键ID:' + row.id + '删除成功');
          // 注解:1.deleteFunction删除方法  2.row.id获取主键
          await this.$crud.submit(deleteFunction, {'id': row.id });
        }
      } catch (e) {
        this.$notify.message(e, 'error');
      }
    },
    /**
     * @todo: 多选删除方法
     * @author:  wangdongyang@expservice.com.cn
     * @Date: 2023-05-25 15:28:58
     */    
    async handleMultiDelete() {
      // 注解:this.multiSelects.length判断是否选择数据,判断数组长度
      if (this.multiSelects.length === 0)
        this.$notify.message('请至少选择一条数据!');
      else 
      {
        const idList = [];
        this.multiSelects.forEach((res) => {
          // 注解:res.id获取主键放到idList集合里
          idList.push(res.id);
        });
        this.$notify.confirm('您确认批量删除?').then(async() => {
          try {
            // 注解:实际开发没有this.$notify.message('主键ID:' + idList + '多选删除成功')
            this.$notify.message('主键ID:' + idList + '多选删除成功');
            // 注解:1.deleteMultiFunction多选删除方法  2.idList.join(',')获取主键信息并用','拼接
            await this.$crud.submit(deleteMultiFunction, { 'idList': idList.join(',') });
            this.handleSearch();
            this.multiNextSelects = {};
            this.multiSelects = [];
          } catch (e) {
            this.$notify.message(e, 'error');
          }
        });
      }
    },
    /**
     * @todo: 翻页复选回调方法
     * @author:  wangdongyang@expservice.com.cn
     * @Date: 2023-05-25 15:28:36
     */    
    async handleSearchCb() {
      // 注解:this.$refs['tableList'].pageInfo.current获取当前页
      const multiSelect = this.multiNextSelects[this.$refs['tableList'].pageInfo.current];
      // 注解:sleep休眠必须加,如果不加可能获取不到值
      await sleep(1);
      if (multiSelect && multiSelect.length > 0)
        if (this.$refs['tableList'].recordsList && this.$refs['tableList'].recordsList.length > 0) {
          // this.$refs['tableList'].recordsList.forEach((val)循环获取当前页面的数据
          this.$refs['tableList'].recordsList.forEach((val) => {
            if (val.id) {
              const multiArr = multiSelect.filter((item) => {
                return item.id === val.id;
              });
              if (multiArr.length > 0) {
                val.count = multiArr[0].count;
                this.$refs['tableList'].toggleRowSelection(val, true);
              }
            }
          });
        }
    },
    /**
     * @todo: 勾选方法
     * @author:  wangdongyang@expservice.com.cn
     * @Date: 2023-05-25 15:28:09
     */    
    handleSelectionChange(val) {
      this.multiSelects = val;
      this.multiNextSelects[this.$refs['tableList'].pageInfo.current] = this.multiSelects;
      const keys = Object.keys(this.multiNextSelects);
      this.multiSelects = [];
      if (keys && keys.length > 0)
        keys.forEach((key) => {
          const valList = this.multiNextSelects[key];
          if (valList && valList.length > 0)
            valList.forEach((val) => {
              this.multiSelects.push(val);
            });
        });
    }
  }
};
</script>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
Expand Copy

# 后端示例

  • Controller
  /**
   * @remark: 批量删除Controller层
   * @param param
   * @return: java.util.Map<java.lang.String,java.lang.Object>
   * @author: wangdongyang
   * @date: 2023/5/30 16:01
   * @version: 1.0.1
   * Modification History:
   * Date       Author         Version        Description
   * -----------------------------------------------------------
   * 2023/5/30  wangdongyang   v1.0.1         init
   */
  @ApiOperation(value = "批量删除->主页删除", notes = "批量删除主页信息")
  @ApiImplicitParams({
      @ApiImplicitParam(name = "params", value = "批量删除", dataTypeClass = Map.class)
  })
  @PostMapping(value = "/deleteMultiFunction")
  public void deleteMultiFunction(@RequestBody Map<String, Object> param)
  {
    csOemSeBaPartMonthService.deleteMultiFunction(param);
  }

  /**
   * @remark: 删除Controller层
   * @param param
   * @return: java.util.Map<java.lang.String,java.lang.Object>
   * @author: wangdongyang
   * @date: 2023/5/30 16:01
   * @version: 1.0.1
   * Modification History:
   * Date       Author         Version        Description
   * -----------------------------------------------------------
   * 2023/5/30  wangdongyang   v1.0.1         init
   */
  @ApiOperation(value = "删除->主页删除", notes = "删除主页信息")
  @ApiImplicitParams({
      @ApiImplicitParam(name = "params", value = "删除", dataTypeClass = Map.class)
  })
  @PostMapping(value = "/deleteFunction")
  public void deleteFunction(@RequestBody Map<String, Object> param)
  {
    csOemSeBaPartMonthService.deleteFunction(param);
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  • Service
  /**
   * @remark: 批量删除Service层
   * @param param
   * @return: java.util.Map<java.lang.String,java.lang.Object>
   * @author: wangdongyang
   * @date: 2023/5/30 16:01
   * @version: 1.0.1
   * Modification History:
   * Date       Author         Version        Description
   * -----------------------------------------------------------
   * 2023/5/30  wangdongyang   v1.0.1         init
   */
  void deleteMultiFunction(Map<String, Object> param);

  /**
   * @remark: 删除Service层
   * @param param
   * @return: java.util.Map<java.lang.String,java.lang.Object>
   * @author: wangdongyang
   * @date: 2023/5/30 16:01
   * @version: 1.0.1
   * Modification History:
   * Date       Author         Version        Description
   * -----------------------------------------------------------
   * 2023/5/30  wangdongyang   v1.0.1         init
   */
  void deleteFunction(Map<String, Object> param);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  • Impl
  /**
   * @remark: 批量删除Impl层
   * @param param
   * @return: java.util.Map<java.lang.String,java.lang.Object>
   * @author: wangdongyang
   * @date: 2023/5/30 16:01
   * @version: 1.0.1
   * Modification History:
   * Date       Author         Version        Description
   * -----------------------------------------------------------
   * 2023/5/30  wangdongyang   v1.0.1         init
   */
  @Override
  public void deleteMultiFunction(Map<String, Object> param)
  {
    if (param.get("idList") != null)
    {
      String idList = MyUtil.getValue(param.get("idList"));
      // 注:删除主表
      csOemSeBaPartMonthMapper.deleteMultiFunction(idList);
    }
  }

  /**
   * @remark: 删除Impl层
   * @param param
   * @return: java.util.Map<java.lang.String,java.lang.Object>
   * @author: wangdongyang
   * @date: 2023/5/30 16:01
   * @version: 1.0.1
   * Modification History:
   * Date       Author         Version        Description
   * -----------------------------------------------------------
   * 2023/5/30  wangdongyang   v1.0.1         init
   */
  @Override
  public void deleteFunction(Map<String, Object> param)
  {
    // 注:获取主键
    String id = param.get("id").toString();
    // 注:判断主键不可为空
    AssertMyUtil.notNull(id, BizCode.METHOD_ARGS_NOTNULL, "id");
    CsOemSeBaPartMonthPO csOemSeBaPartMonthPO = csOemSeBaPartMonthMapper.selectById(id);
    // 注:状态修改无效
    csOemSeBaPartMonthPO.setStatus(Integer.parseInt(DicConstant.YXZT_02));
    // 注:保存数据
    csOemSeBaPartMonthMapper.updateById(csOemSeBaPartMonthPO);
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  • Mapper
  /**
   * @remark: 批量删除Mapper层
   * @param idList
   * @return: java.util.Map<java.lang.String,java.lang.Object>
   * @author: wangdongyang
   * @date: 2023/5/30 16:01
   * @version: 1.0.1
   * Modification History:
   * Date       Author         Version        Description
   * -----------------------------------------------------------
   * 2023/5/30  wangdongyang   v1.0.1         init
   */
  @DeleteProvider(CsOemSeBaPartMonthSqlProvider.class)
  void deleteMultiFunction(String idList);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  • Provide
  /**
   * @remark: T批量删除Provide层ODO
   * @param idList 
   * @return: java.lang.String 
   * @author: wangdongyang
   * @date: 2023/5/30 16:06
   * @version: 1.0.1 
   * Modification History:
   * Date       Author         Version        Description
   * -----------------------------------------------------------
   * 2023/5/30  wangdongyang   v1.0.1         init
   */
  public static String deleteMultiFunction(String idList)
  {
    StringBuffer sql = new StringBuffer();
    sql.append("DELETE FROM cs_oem_se_ba_part_month where id in(" + idList + ")\n ");
    return sql.toString();
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 版本

  • v1.0.0