场景

SpringBoot+My BatisPlus+DataTables实现企业车间退货管理(学习企业级开发思想):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/93190690

在上面实现退货管理的基础上,详解编辑时的逻辑控制和编辑时的回显checkbox选中。

效果

实现

实体类的扩展类新增IsSelected属性,标识不良品货位是否被选中。

package com.ws.bus.sys.vo.BusGoodsLocationVO;import com.ws.bus.sys.entity.BusGoodsLocation;
import lombok.Data;import java.util.Date;@Data
public class BusGoodsLocationVO extends BusGoodsLocation {private String locationTypeName;private String shelveName;private String materielStatus;private String materielStatusName;private Integer materielNum;//是否是编辑操作private Integer editFlag;//选中要查询的车间仓库private String selected;private Integer tdNum;private Integer trNum;//当前不良品货位是否被选中private Integer isSelected = 0;private Date productDate;private String trayNumber;private Integer maxTrayAmount;private Integer refundOrderFlag;
}

分析编辑时的mapper.xml文件

<select id="getPageRejectsLocations" resultMap="busGoodsLocationVOMap"parameterType="com.ws.bus.sys.vo.BusGoodsLocationVO.BusGoodsLocationVO">SELECT location.id,location.goods_location_number, code.code_name location_type_name,shelve.shelves_nameshelve_name,tm.materiel_name save_material_type_name ,sc.code_name materiel_status_name,lt.refund_order_flagFROM bus_location_tray ltLEFT JOIN bus_goods_location location on location.id = lt.location_idLEFT JOIN sys_code code on code.code_type = 'location_type' and code.code_value = location.goods_location_typeLEFT JOIN bus_goods_shelves shelve on shelve.id = location.wh_shelves_idLEFT JOIN sys_code sc on sc.code_type = 'materielCheckStatus' and sc.code_value = lt.materiel_check_statusLEFT JOIN (SELECT DISTINCT tray_id,materiel_nameFROM bus_tray_materielWHERE deleted_flag = '0') tm on tm.tray_id = lt.tray_idWHERE lt.materiel_check_status = 3 and lt.deleted_flag = 0<if test="locationVO != null and locationVO.editFlag == 0">and lt.refund_order_flag = 0</if><if test="locationVO != null and locationVO.selected != null">and location.goods_location_number like  CONCAT(#{locationVO.selected},'%')</if></select>

注:

1.层级关系为:

仓库--库区--货架--货位--托盘--物料

2.bus_goods_location
货位表  的id等于 bus_location_tray 的location_id  关联码表 货位表类型分为正常货位和不良品货位

3.bus_location_tray
货位-托盘绑定关系表

4.bus_goods_shelves
货架表

货架表的Id 等于 货位表的 wh_shelves_id 归属货架字段

关联码表 货位表的物料检验状态 为1正常 2不良品暂估 3不良品4待检
查询物料检验状态为3即不良品的

5.关联
bus_tray_materiel
托盘-物料绑定关系表,去重查一条

托盘的id 等于货位表的tray_id

6.条件
货位表的编号是不是以传递过来的A B C D 开头

如果是新增则 货位-托盘绑定关系表 的 refund_order_flag 是否已生成退货单(1-是 0 -否) 为0

新增与编辑判断逻辑

1.新增时要查询相应仓库的下的所有不良品货位,且没有生成出库单的。

所以在mapper中

<if test="locationVO != null and locationVO.editFlag == 0">and lt.refund_order_flag = 0</if>

来控制实现。

2.编辑时需要查询相应仓库的所有不良品货位下的,当前退货单对应的不良品以及 当前仓库下对应的不良品货位。目的是

为了实现修改退货单的不良品货位。

后台判断逻辑实现

 //当编辑操作id存在时,表明是编辑操作if (vo.getEditActionId() != null && vo.getEditActionId() != 0) {page = locationService.pageRejectsLocations(refundOrderPage, vo, 1,wareNum);//查询出当前退货单下的所有明细QueryWrapper<WmsRefundOrderDetails> refundOrderDetailsQueryWrapper = new QueryWrapper<>();refundOrderDetailsQueryWrapper.eq("refund_id", vo.getEditActionId()).eq("deleted_flag", "0");List<WmsRefundOrderDetails> refundOrderDetails = refundOrderDetailsService.list(refundOrderDetailsQueryWrapper);for (BusGoodsLocationVO locationVO : page.getRecords()) {for (WmsRefundOrderDetails details : refundOrderDetails) {if (details.getGoodsLocationId().equals(locationVO.getId())) {locationVO.setIsSelected(1);break;}}}//删除非此退货单对应的货位Iterator<BusGoodsLocationVO> iterator = page.getRecords().iterator();while(iterator.hasNext()){BusGoodsLocationVO locationVO = iterator.next();if (locationVO.getRefundOrderFlag() == 1 && locationVO.getIsSelected() == 0) {iterator.remove();}}} else {page = locationService.pageRejectsLocations(refundOrderPage, vo, 0,wareNum);}

注:

1.在编辑时根据选中的退货单的id,查询到当前退货单对应的不良品货位,然后将其IsSelected属性设置为1。

2.然后通过上面的mapper语句在编辑时查询出所有的退货单的不良品,然后通过下面的迭代器删除已经生成出库单且isSelected属性为0的(即其它退货单对应的不良品货位删除掉),这样就能保证将当前退货单对应的选中的不良品以及当前仓库下的不良品在编辑时都能查询出来。

JS中控制DataTables选中回显

columns: [{ data: 'id' ,"orderable" : false},{ data: 'goodsLocationNumber' },{ data: 'locationTypeName' ,"orderable" : false},{ data: 'saveMaterialTypeName' ,"orderable" : false},{ data: 'materielStatusName',"orderable" : false},{ data: 'shelveName' ,"orderable" : false},{ data: 'remark',"orderable" : false }],columnDefs: [{//   指定第1列,从0开始,0表示第一列,1表示第二列……"targets": 0,"bSortable": false,"render": function(data, type, row, meta) {if (row.isSelected == 1){return '<input type="checkbox" class="checkchild" onclick="childClick(this)" checked="checked" value="' + row.id + '" />'}return '<input type="checkbox" class="checkchild" onclick="childClick(this)" value="' + row.id + '" />'}}],

SpringBoot+MyBatisPlus+DataTables实现退货管理的添加和编辑时控制checkbox的回显选中相关推荐

  1. DataTables中设置checkbox回显选中

    场景 在进行编辑时DataTables中第一列的checkbox回显默认选中. 效果 实现 dataTables赋值代码 columns: [{ data: 'id' ,"orderable ...

  2. SpringBoot中使用thymeleaf时ajax请求不能回显消息

    场景 在SpringBoot项目中使用thymeleaf模板时,在js文件中使用ajax提交表单 不能成功回显消息. 实现 修改为 html中: <button id="parseBt ...

  3. Springboot+MybatisPlus+layui简易账单管理项目

    1.项目整体效果如下: 2.数据库设计: 表一: 表二: 3.搭建项目 查询所有账单接口 查询所有账单的实现类 前段控制器 import java.util.HashMap; import java. ...

  4. 7-7 账号管理:添加和编辑账号

    启动虚拟机: 账号:root 密码:123456 用另外一个终端 访问 192.168.1.26 例如:用 Xshell 然后就可以 复制下面的命令运行了. source imooc/bin/acti ...

  5. springboot某高校绩效考核管理设计与实现毕业设计论文012208

    摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对某高校绩效考核管理等问 ...

  6. (附源码)springboot某高校绩效考核管理 毕业设计 012208

    springboot某高校绩效考核管理设计与实现 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是 ...

  7. springboot某高校绩效考核管理设计与实现毕业设计源码012208

    摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题.针对某高校绩效考核管理等问 ...

  8. Linux入门最终集! Vue SpringBoot Mybatis-Plus Linux 阿里云!

    Linux入门最终集! Vue & SpringBoot & Mybatis-Plus & Linux & 阿里云! 一.Xshell连接时出现警告 The remot ...

  9. MOSS字段编辑权限控制方案(2)-添加管理链接

    这系列的文章一直没完成,看到有些朋友还是对moss的字段权限控制非常感兴趣的,决定继续写下去. 没看过的朋友可以看一下以前的几篇: CodeArt WSS3.0(MOSS)字段编辑权限控制解决方案(v ...

最新文章

  1. PostgreSQL中的数据库实例、模式、用户(角色)、表空间
  2. 微型计算机原理及应用李干林,微机原理及接口技术李干林习题参考解答-20210415154329.docx-原创力文档...
  3. public void DeleteT(ListT EntityList) where T : class, new() 这是什么意思
  4. asp.net 利用多表联合查询进行汇总统计
  5. Java this 心得
  6. ES6的导入和导出模块
  7. php7过滤,PHP7过滤unserialize()
  8. 易流即时配送_即时大数据流处理=即时风暴
  9. 银行系统日终结算要多久_美股顽强翻红!两连跌终结,联储降息预期已超九成!制造业疲软消费者信心坚挺,三大股指又假摔?...
  10. 【转】Git Shell 基本命令(官网脱水版)
  11. 产品开发的生命周期管理
  12. 数据库之如何解决SQL Server 2008 R2连接不上服务器?
  13. 关于净推荐值(NPS)的理解
  14. SARscape之DInSAR处理(双轨法)
  15. C# WPF MVVM 实战 – 4 - 善用 IValueConverter
  16. PPT设置“只读模式”的两种方法
  17. 英语caement水泥
  18. 如何重置计算机服务到默认状态,电脑慢到让人抓狂?教你如何将Windows10还原到出厂设置...
  19. python请输入星期几的第一个字母来判断_【Python 实例】面向对象 | 请输入一周中某天的名称的第一个字母来判断以下是星期几,如果第一个字母一样则继续判断第二个字母...
  20. 又一智能汽车新赛道进入「量产期」,谁已率先分走这块蛋糕?

热门文章

  1. android 4.0.3固件,Vi30豪华版_Android4.0.3-1.0测试版固件刷机教程【MM刷机】
  2. server 2008 配置php mysql_Win2008 Server配置PHP环境
  3. 安装python环境与运行_专栏G|轻松学Python01:Python环境搭建与运行
  4. php怎么输出以前的时间,php输出指定时间以前时间格式的方法_PHP
  5. java日期类的计算问题_java日期计算(Calendar类)
  6. 电脑不读u盘怎么解决_电脑无法识别U盘解决方法
  7. java mysql语句_java mysql查询语句怎么写
  8. python递归函数特点_python中对递归函数的理解
  9. ubuntu idea桌面快捷方式无法启动_每个 Ubuntu 用户都应该知道的键盘快捷键
  10. 自动生成requirements.txt