番外-Easyui批量添加

1、JS与HTML页面
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>叶片管理</title>
    <link rel="stylesheet" type="text/css" href="/static/jquery-easyui-1.3.3/themes/default/easyui.css"></link>
    <link rel="stylesheet" type="text/css" href="/static/jquery-easyui-1.3.3/themes/icon.css"></link>
    <script type="text/javascript" src="/static/jquery-easyui-1.3.3/jquery.min.js"></script>
    <script type="text/javascript" src="/static/jquery-easyui-1.3.3/jquery.easyui.min.js"></script>
    <script type="text/javascript" src="/static/jquery-easyui-1.3.3/locale/easyui-lang-zh_CN.js"></script>
    <script type="text/javascript" src="/static/js/date.js"></script>
    <script type="text/javascript">

        var url;

        function closeProductDialog() {
            $("#dlg").dialog("close");
            resetValue();
        }

        /**
         * 弃用
         */
        function saveProduct() {

            $("#dg1").form("submit", {
                url: url,
                onSubmit: function () {
                    return $(this).form("validate");
                },
                success: function (result) {
                    var result = eval("(" + result + ")");
                    if (result.success == 1) {
                        $.messager.alert("系统提示", "保存成功!");
                        resetValue();
                        $("#dlg").dialog("close");
                        $("#dg").datagrid("reload");
                    } else {
                        $.messager.alert("系统提示", result.errorInfo);
                    }
                }
            });
        }


        <!----------------------------打开新增框-------------------------------------->
        function openProductAddDialog() {
            $("#dlg").dialog("open").dialog("setTitle", "添加叶片信息");
            url = "/bas/ye/save";
        }


        <!----------------------------打开修改框除-------------------------------------->
        function openProductModifyDialog() {
            var selectedRows = $("#dg").datagrid("getSelections");
            if (selectedRows.length != 1) {
                $.messager.alert("系统提示", "请选择一条要修改的数据!");
                return;
            }
            //修改后保存
            var row = selectedRows[0];
            $("#dlg").dialog("open").dialog("setTitle", "修改物品信息");
            $("#fm").form("load", row);
            $('#product_id').textbox('textbox').attr('readonly',true);
            url = "/bas/product/update";
            $("#dg").datagrid("reload");
        }

        <!----------------------------删除-------------------------------------->

        function deleteProduct() {

            var selectedRows = $("#dg").datagrid("getSelections");
            if (selectedRows.length != 1) {
                $.messager.alert("系统提示", "请选择一条要删除的数据!");
                return;
            }
            var guid = selectedRows[0].product_guid;
            $.messager.confirm("系统提示", "您确定要删除这条数据吗?", function (r) {
                if (r) {
                    $.post("/bas/product/delete?product_guid="+guid, function (result) {//删除
                        if (result.success) {
                            $.messager.alert("系统提示", "数据已成功删除!");
                            $("#dg").datagrid("reload");
                        } else {
                            $("#dg").datagrid("reload")
                        }
                    }, "json");
                }
            });
        }

        <!----------------------------双击单行数据打开修改框-------------------------------------->

        $(document).ready(function () {

            $("#dg").datagrid({
                onDblClickRow: function (index, row) {
                    $("#dlg").dialog("open").dialog("setTitle", "修改物资信息");
                    $("#fm").form("load", row);
                    $('#product_id').textbox('textbox').attr('readonly',true);
                    url = "/bas/product/update";
                }
            });

        });

        <!----------------------------查询物资信息-------------------------------------->
        function searchProduct() {
            var a = $("#s_product_id").val();
            var opts = $("#dg").datagrid("options");
            opts.url = "/bas/ye/all?yeGroupId=" + a;
            $('#dg').datagrid('reload');
        }

        function resetValue() {
            $("#yeGroupId").textbox('setValue', "");
            $("#productId").textbox('setValue', "");
            $("#theOrder").textbox('setValue', "");
            $("#quantity").textbox('setValue', "");
        }


        //<!--------------------------------------批量添加------------------------------------------>
        //编辑的行
        var editIndex = undefined;
        function endEditing() {
            if (editIndex == undefined){return true}
            $('#dg1').datagrid('endEdit', editIndex);
            editIndex = undefined;
            return true;
        }

        function onClickCell(index, field){
            if (editIndex != index) {
                if (endEditing()) {
                    $('#dg1').datagrid('selectRow', index)
                        .datagrid('beginEdit', index);
                    var ed = $('#dg1').datagrid('getEditor', { index: index, field: field });
                    if (ed) {
                        ($(ed.target).data('textbox') ? $(ed.target).textbox('textbox') : $(ed.target)).focus();
                    }
                    editIndex = index;
                } else {
                    setTimeout(function () {
                        $('#dg1').datagrid('selectRow', editIndex);
                    }, 0);
                }
            }
        }
        function onEndEdit(index, row){
            var ed = $(this).datagrid('getEditor', {
                index: index,
                field: 'productId'
            });
        }
        //批量添加按钮
        function append(){
            var index = $('#dg1').datagrid('getRowIndex', $('#dg').datagrid('getSelected'));
            if (index == -1)
                index = 0;
            $("#dg1").datagrid("insertRow", {
                index: index+1,
                row: {oper: "<a href='javascript:append()'>+<a> <a href='javascript:removeit()'>-<a>",status:'P'}
            });
        }
        //删除
        function removeit(){
            if (editIndex == undefined){return}
            $('#dg1').datagrid('selectRow', editIndex);

            $('#dg1').datagrid('cancelEdit', editIndex)
                .datagrid('deleteRow', editIndex);
            editIndex = undefined;
        }
        //批量添加数据,Ajax提交
        function accept(){
            if (endEditing()){
                var $dg = $('#dg1');
                var rows = $dg.datagrid('getChanges');
                if (rows.length) {
                    var inserted = $dg.datagrid('getChanges', "inserted");
                    var deleted = $dg.datagrid('getChanges', "deleted");
                    var updated = $dg.datagrid('getChanges', "updated");
                    var effectRow = new Object();
                    if (inserted.length) {
                        effectRow["inserted"] = JSON.stringify(inserted);
                    }
                    if (deleted.length) {
                        effectRow["deleted"] = JSON.stringify(deleted);

                    }
                    if (updated.length) {
                        effectRow["updated"] = JSON.stringify(updated);
                    }
                }
            }
            $.ajax({
                url: '/bas/ye/save',
                type: "post",
                async: true,
                dataType: 'text',
                data: { 'sper':effectRow["inserted"]},
                success: function (data) {
                    if(data.message=='ok'){
                        alert(data.message);
                    }else{
                        alert(data.message);
                        return;
                    }
                    //重新加载表格数据
                    $('#dg').datagrid('reload');
                }
            });
        }
        //其他设置
        function reject(){
            $('#dg').datagrid('rejectChanges');
            editIndex = undefined;
        }
        function getChanges(){
            var rows = $('#dg').datagrid('getChanges');
            alert(rows.length+' rows are changed!');
        }
        function contains(arr, obj) {
            var i = arr.length;
            while (i--) {
                if (arr[i] === obj) {
                    return true;
                }
            }
            return false;
        }
        //<!--------------------------------------批量添加到此打住------------------------------------------>

    </script>
</head>
<body style="margin: 1px">
<table id="dg" class="easyui-datagrid" rownumbers="false"
       fitColumns="true" pagination="true" singleSelect="true"
       fit="true" toolbar="#tb" firstload="false">
    <thead>
    <th field="yeGroupGuid" width="100" align="center" hidden="hidden"></th>
    <th field="yeGroupId" width="100" align="center">叶片组型号</th>
    <th field="productId" width="100" align="center">叶片型号</th>
    <th field="theOrder" width="150" align="center">序号</th>
    <th field="quantity" width="50" align="center" >数量</th>
    </thead>
</table>

<div id="tb">
    <fieldset style="border-color: #E7F0FF">
        <div>
            <a href="javascript:openProductAddDialog()" class="easyui-linkbutton" iconCls="icon-add"
               plain="true">添加</a>
            <a href="javascript:openProductModifyDialog()" class="easyui-linkbutton" iconCls="icon-edit"
               plain="true">修改</a>
            <a href="javascript:deleteProduct()" class="easyui-linkbutton" iconCls="icon-remove" plain="true">删除</a>
        </div>
        <div>
            &nbsp;叶片组编号:&nbsp;<input type="text" id="s_product_id" size="20"
                                    onkeydown="if(event.keyCode==13) searchProduct()"/>
            <a href="javascript:searchProduct()" class="easyui-linkbutton" iconCls="icon-search" plain="true">搜索</a>
        </div>
    </fieldset>
</div>

<div id="dlg" class="easyui-dialog" style="width: 850px;height: 400px;padding: 10px 20px"
     closed="true" buttons="#dlg-buttons" data-options="onClose:function(){resetValue()}">

<!-----------------------------批量添加------------------------------->

    <table id="dg1" class="easyui-datagrid" title="批量添加" style="width:800px;height:auto"
           data-options="
    iconCls: 'icon-edit',
    singleSelect: true,
    toolbar: '#tb1',
    url: 'datagrid_data1.json',
    method: 'get',
    onClickCell: onClickCell,
    onEndEdit: onEndEdit
   ">
        <thead>
        <tr>
            <th data-options="field:'oper',width:80">操作</th>
            <th data-options="field:'itemid',width:80">Item ID</th>
            <!--<th data-options="field:'productid',width:100,
      formatter:function(value,row){
       return row.productname;
      },
      editor:{
       type:'combobox',
       options:{
        valueField:'productid',
        textField:'productname',
        method:'get',
        url:'products.json',

       }
      }">Product</th>-->
            <th data-options="field:'theOrder',width:80,align:'right',editor:'numberbox'">序号</th>
            <th data-options="field:'quantity',width:80,align:'right',editor:'numberbox'">数量</th>
            <th data-options="field:'productId',width:250,editor:'textbox'">叶片型号</th>
            <th data-options="field:'status',width:250,align:'center',editor:{type:'checkbox',options:{on:'P',off:''}}">状态为P-才能添加</th>
        </tr>
        </thead>
    </table>

    <div id="tb1" style="height:auto">
        <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-add',plain:true" onclick="append()">Append</a>
        <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-remove',plain:true" onclick="removeit()">Remove</a>
    </div>
</div>

<div id="dlg-buttons">
    <a href="javascript:accept()" class="easyui-linkbutton" iconCls="icon-ok">保存</a>
    <a href="javascript:closeProductDialog()" class="easyui-linkbutton" iconCls="icon-cancel">关闭</a>
</div>

</body>
</html>
2、controller层
package com.mf.controller.bas;
import com.mf.entity.bas.BasYeGroup;
import com.mf.service.bas_service.BasYeService;
import com.mf.util.GetIp;
import com.mf.util.ResponseResult;
import com.mf.util.StringUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

@RestController
@RequestMapping("/bas/ye")
public class BasYeController {

    @Autowired
    private BasYeService basYeService;

    @RequestMapping  ("/save")
    public ResponseResult<Void> yeAdd(HttpServletResponse response, HttpServletRequest request, String sper) throws Exception{
        String IP = GetIp.getip(request, response);
        //1、sper字符串接收数据
        System.out.println("数据"+sper);
        //2、首先把字符串转成 JSONArray 对象
        JSONArray backBodyJson = JSONArray.fromObject(sper);
        //3、遍历 jsonarray 数组,把每一个对象转成 json 对象
        BasYeGroup basYeGroup = new BasYeGroup();
        if (backBodyJson.size() > 0) {
            for (int i = 0; i < backBodyJson.size(); i++) {
                //4、开始拆分
                JSONObject job = backBodyJson.getJSONObject(i);
                //5、拿到叶片型号
                String productId=(String) job.get("productId");
                basYeGroup.setProductId(productId);
                //3-1、如果叶片型号为空,忽略不添加
                if(productId.equals("")){
                    continue;
                }
                //6、拿到序号
                Integer theOrder=Integer.parseInt((String) job.get("theOrder"));
                basYeGroup.setTheOrder(theOrder);
                //7、拿到数量
                Integer quantity=Integer.parseInt((String) job.get("quantity"));
                basYeGroup.setQuantity(quantity);
                //8、开始添加
                basYeService.addYe(basYeGroup,IP);
                System.out.println("所有数据:"+basYeGroup); // 得到 每个对象中的属性值
            }
        }
        return new ResponseResult<Void>(1,"添加成功!");
    }
 
}

3、Service
package com.mf.service.bas_service;

import com.mf.entity.bas.BasProduct;
import com.mf.entity.bas.BasYeGroup;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface BasYeService {

    /**
     * 添加叶片
     * @param basYeGroup
     * @param ip
     */
    void addYe(BasYeGroup basYeGroup, String ip);
}
4、serviceImpl实现类
package com.mf.service.bas_impl;

import com.mf.entity.SysUserLog;
import com.mf.entity.bas.BasYeGroup;
import com.mf.repository.bas.BasYeRepository;
import com.mf.service.SysLogService;
import com.mf.service.bas_service.BasYeService;
import com.mf.util.StringUtil;
import com.mf.util.UtilId;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.domain.Sort.Order;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service;

import javax.persistence.criteria.*;
import java.util.ArrayList;
import java.util.List;

@Service
public class BasYeServiceImpl implements BasYeService {

    @Autowired
    BasYeRepository basYeRepository;

    @Autowired
    SysLogService sysLogService;

    /**
     * 叶片添加
     * @param basYeGroup
     * @param ip
     */
    @Override
    public void addYe(BasYeGroup basYeGroup, String ip) {
        basYeGroup.setYeGroupGuid(UtilId.uuids());
        basYeRepository.save(basYeGroup);
        sysLogService.save(new SysUserLog(SysUserLog.ADD_ACTION,"添加物资信息:"+basYeGroup.getYeGroupId(),ip));

    }
}
5、dao层
package com.mf.repository.bas;

import com.mf.entity.bas.BasYeGroup;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

public interface BasYeRepository extends JpaRepository<BasYeGroup,String>, JpaSpecificationExecutor<BasYeGroup> {
 
}

6、实体类
package com.mf.entity.bas;

import lombok.Data;
import org.springframework.data.domain.Sort;

import javax.persistence.*;
import java.io.Serializable;

/**
 * 叶片
 */
@Data
@Entity//实体
@Table(name = "bas_ye_group")
@NamedQuery(name = "BasYeGroup.findAll",query = "select b from BasYeGroup b")
public class BasYeGroup implements Serializable {

    @Id
    @Column(name = "ye_group_guid")
    public String  yeGroupGuid;

    @Column(name = "ye_group_id")
    public String  yeGroupId;

    @Column(name = "product_id")
    public String  productId;

    @Column(name = "the_order")
    public Integer  theOrder;

    @Column(name = "quantity")
    public Integer  quantity;

    public BasYeGroup(){}

    public String getYeGroupGuid() {
        return yeGroupGuid;
    }

    public void setYeGroupGuid(String yeGroupGuid) {
        this.yeGroupGuid = yeGroupGuid;
    }

    public String getYeGroupId() {
        return yeGroupId;
    }

    public void setYeGroupId(String yeGroupId) {
        this.yeGroupId = yeGroupId;
    }

    public String getProductId() {
        return productId;
    }

    public void setProductId(String productId) {
        this.productId = productId;
    }

    public Integer getTheOrder() {
        return theOrder;
    }

    public void setTheOrder(Integer theOrder) {
        this.theOrder = theOrder;
    }

    public Integer getQuantity() {
        return quantity;
    }

    public void setQuantity(Integer quantity) {
        this.quantity = quantity;
    }

    @Override
    public String toString() {
        return "BasYeGroup{" +
                "yeGroupGuid='" + yeGroupGuid + '\'' +
                ", yeGroupId='" + yeGroupId + '\'' +
                ", productId='" + productId + '\'' +
                ", theOrder=" + theOrder +
                ", quantity=" + quantity +
                '}';
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,311评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,339评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,671评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,252评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,253评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,031评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,340评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,973评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,466评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,937评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,039评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,701评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,254评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,259评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,497评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,786评论 2 345

推荐阅读更多精彩内容