ExtJS学习(四)EditorGrid可编辑表格

操作表格有一种需求,要操作表格需要动态的添加内容,删除内容以及双击的时候进入编辑状态。这个时候怎么办呢,看具体的实现吧。
双击点击的时候可以单元格的操作。
代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
<title>Hello Extjs4.2</title>  
<link href="../ExtJS4.2/resources/css/ext-all.css" rel="stylesheet">  
<script src="../ExtJS4.2/ext-all.js"></script> 
<script src="d1.js"></script> 
<script  src="../ExtJS4.2/locale/ext-lang-zh_CN.js"></script>
</head>
<body>
<h1>ExtJS4.2学习</h1>  
<hr />  
作者:springok  
<h2>ExtJS grid表格</h2>  
<div id="springokgrid"></div>
<div id="springok1"></div>
</body>
</html>
Ext.onReady(function(){  
    //定义列  
    var columns = [  
        {header:'编号',dataIndex:'id',width:50,  
            editor:{  
                allowBlank:true  
            }}, //sortable:true 可设置是否为该列进行排序  
        {header:'名称',dataIndex:'name',width:80},  
        {header:'描述',dataIndex:'descn',width:112}  
      ];  
    //定义数据  
    var data =[  
        ['1','小王','描述01'],  
        ['2','李四','描述02'],  
        ['3','张三','描述03'],  
        ['4','束洋洋','思考者日记网'],  
        ['5','高飞','描述05']  
    ];  
    //转换原始数据为EXT可以显示的数据  
    var store = new Ext.data.ArrayStore({  
        data:data,  
        fields:[  
           {name:'id'}, //mapping:0 这样的可以指定列显示的位置,0代表第1列,可以随意设置列显示的位置  
           {name:'name'},  
           {name:'descn'}  
        ]  
    });  
    //加载数据  
    store.load();  
  
    //创建表格  
    var grid = new Ext.grid.GridPanel({  
        renderTo:'springokgrid', //渲染位置  
        width:550,  
        autoHeight:true,  
        store:store,  
        columns:columns, //显示列  
        stripeRows:true, //斑马线效果  
        selType: 'cellmodel',  
        bbar:new Ext.PagingToolbar({  
            pageSize:2, //每页显示几条数据  
            store:store,   
            displayInfo:true, //是否显示数据信息  
            displayMsg:'显示第 {0} 条到 {1} 条记录,一共  {2} 条', //只要当displayInfo为true时才有效,用来显示有数据时的提示信息,{0},{1},{2}会自动被替换成对应的数据  
            emptyMsg: "没有记录" //没有数据时显示信息  
        }) ,
        plugins:[  
                 Ext.create('Ext.grid.plugin.CellEditing',{  
                     clicksToEdit:1 //设置单击单元格编辑  
                 })  
        ],  
        tbar:['-',{  
            text:'添加一行',  
            handler:function(){  
                var p ={  
                        id:'',  
                        name:'',  
                        descn:''  
                        };  
                    store.insert(0,p);  
                }  
            },'-',{  
                text:'删除一行',  
                handler:function(){  
                    Ext.Msg.confirm('系统提示','确定要删除?',function(btn){  
                        if(btn=='yes'){  
                            var sm = grid.getSelectionModel();  
                            var record = sm.getSelection()[0];  
                            store.remove(record);  
                        }  
                    });  
                }  
        },'-',{  
            text:'保存',  
            handler:function(){  
                var m = store.getModifiedRecords().slice(0);  
                var jsonArray = [];  
                Ext.each(m,function(item){  
                    jsonArray.push(item.data);  
                });  
                Ext.Ajax.request({  
                    method:'POST',  
                    url:'/ExtJs4.2Pro/EditGridServlet',  
                    success:function(response){  
                        Ext.Msg.alert('系统提示',response.responseText,function(){  
                            store.load();  
                        });  
                    },  
                    failure:function(){  
                        Ext.Msg.alert("错误","与后台联系的时候出了问题。");  
                    },  
                    params:'data='+encodeURIComponent(Ext.encode(jsonArray))  
                });  
            }  
        }]  
    });  
});  

效果:
这里写图片描述

思考的问题:

这里我们启用了CellEditing插件,其他的部分并没有什么变化。可是看到的结果是,现在可以用TextField的方式随意修改单元格。记得不能让单元格为空,否则无法修改。

默认情况下,需要双击单元格才能激活编辑器,从而进行修改。不过,也可以给表格配置上clicksToEdit:1,这样就可以通过单击单元格激活编辑器,从而进行修改,上面的代码中已经用到了。

TextField不允许输入空值,因为在创建columns时对应的editor设置了allowBlank:false属性。allowBlank:false表示不运行在TextField中输入空值。

上面的示例中用到了数组对象的Slice(start,[end])方法,该方法返回一个新数组,包含了原函数从start到end所指定的元素,但是不包括end元素,比如a.slice(0,3)。如果start为负,则将它作为length+start处理(此处length为数组的长度,比如a.slice(-3,4),相当于a.slice(2,4))。如果end为负,就将它作为length+end处理(次数length为数组的长度,比如a.slice(0,-1)。如果省略end,那么slice方法将一直复制到原数组结尾,比如a.slice(1))。如果省略end,那么slice方法将一直复制到原数组结尾,比如a.slice(1)。如果end出现在start之前,不复制任何元素到新数组中,比如a.slice(4,3)。示例中store.getModifiedRecords().slice(0)的作用就是复制store.getModifiedRecords(),保证store.getModifiedRecords()中的原始数据不受影响。

如何添加单击事件

   listeners:
        {
        	 cellclick: function(view, td, cellIndex, record, tr, rowIndex, e, eOpts) {
                // Ext.Msg.alert('Selected Record', 'Name : ' + record.get('id') + ' ' + record.get('name'));
                 if(cellIndex == 2) { // cellIndex starts from 0
                	 Ext.Msg.alert('Selected Record', 'Name : ' + record.get('id') + ' ' + record.get('name'));
                 }
        	 },
        	 afteredit: function(val) { 
                 alert(2)
       } ,

ok基本可以了。
序列号设计表
该方式可能存在问题
DROP TABLE IF EXISTS sys_serialno;
CREATE TABLE sys_serialno (
ID_ varchar(255) COLLATE utf8_bin NOT NULL COMMENT ‘主键’,
NAME_ varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT ‘名称’,
ALIAS_ varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT ‘别名’,
regulation_ varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT ‘流水号规则’,
gen_type_ decimal(10,0) DEFAULT NULL COMMENT ‘生成类型’,
no_length_ decimal(10,0) DEFAULT NULL COMMENT ‘流水号长度’,
cur_date_ varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT ‘执行实例id’,
init_value_ decimal(10,0) DEFAULT NULL COMMENT ‘初始值’,
cur_value_ decimal(10,0) DEFAULT NULL COMMENT ‘是否成功’,
step_ decimal(10,0) DEFAULT NULL COMMENT ‘步长’,
DELETED tinyint(1) DEFAULT NULL COMMENT ‘是否直接删除’,
PRIMARY KEY (ID_) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=‘流水号’;


– Records of sys_serialno


BEGIN;
INSERT INTO sys_serialno VALUES (‘1’, ‘每天使用一组流水号’, ‘dayNo’, ‘{yyyy}{MM}{DD}{NO}’, 1, 5, NULL, 1, 0, 2, 0);
INSERT INTO sys_serialno VALUES (‘682692501894594560’, ‘ccc’, ‘c’, ‘c’, 1, 1, NULL, 1, 0, 1, 1);
INSERT INTO sys_serialno VALUES (‘682693608511373312’, ‘1’, ‘1’, ‘1’, 1, 111, NULL, 111, 0, 1, 1);
INSERT INTO sys_serialno VALUES (‘682698470624067584’, ‘12121’, ‘12121’, ‘12122’, 1, 1, NULL, 1, 0, 1, 1);
INSERT INTO sys_serialno VALUES (‘682701400144084992’, ‘88888’, ‘121212’, ‘12122’, 2, 1, NULL, 1, 0, 1, 1);
INSERT INTO sys_serialno VALUES (‘682702240028295168’, ‘77’, ‘77’, ‘777’, 2, 777, NULL, 777, 0, 777, 1);
COMMIT;

<?xml version="1.0" encoding="UTF-8"?>
<sql id="columns">
	id_,name_,alias_,regulation_,gen_type_,no_length_,cur_date_,init_value_,cur_value_,step_
</sql>



<update id="batchRemove"  parameterType="java.util.List">


    update sys_serialno
    set
    deleted=1
    where id_ in
    <foreach collection="list" index="index" item="item"
             separator="," open="(" close=")">
        #{item}
    </foreach>
</update>



<select id="getAllPage" parameterType="Map" resultMap="SerialNo">
	SELECT * FROM sys_serialno
	WHERE
	DELETED=0




    <if test="serialNoQuery.name!=null  and serialNoQuery.name!='' ">
        and  name_  like CONCAT('%', #{serialNoQuery.name,jdbcType=VARCHAR},'%')
    </if>
    <if test="serialNoQuery.alias!=null  and serialNoQuery.alias!='' ">
        and  alias_  like CONCAT('%', #{serialNoQuery.alias,jdbcType=VARCHAR},'%')
    </if>

</select>


<update id="update" parameterType="com.pangubpm.modules.data.entity.SerialNo">
	UPDATE sys_serialno SET
	name_=#{name,jdbcType=VARCHAR},
	alias_=#{alias,jdbcType=VARCHAR},
	regulation_=#{regulation,jdbcType=VARCHAR},
	gen_type_=#{genType,jdbcType=NUMERIC},
	no_length_=#{noLength,jdbcType=NUMERIC},
	cur_date_=#{curDate,jdbcType=VARCHAR},
	init_value_=#{initValue,jdbcType=NUMERIC},
	cur_value_=#{curValue,jdbcType=NUMERIC},
	step_=#{step,jdbcType=NUMERIC}
	WHERE
	id_=#{id}
</update>

<update id="updByAlias" parameterType="com.pangubpm.modules.data.entity.SerialNo">
	UPDATE sys_serialno SET
	cur_date_=#{curDate,jdbcType=VARCHAR},
	cur_value_=#{newCurValue,jdbcType=NUMERIC}
	WHERE alias_=#{alias,jdbcType=VARCHAR}
	and cur_value_=#{curValue,jdbcType=NUMERIC}
</update>



<select id="isAliasExisted" resultType="java.lang.Integer">
    select count(*) from sys_serialno where alias_=#{alias}
    <if test="id!=null">AND id_ !=#{id}</if>
</select>

<select id="getByAlias" parameterType="String" resultMap="SerialNo">
    SELECT
    <include refid="columns"/>
    FROM sys_serialno
    WHERE
    alias_=#{alias}
</select>
<select id="getById" parameterType="String" resultMap="SerialNo">
    SELECT
    <include refid="columns"/>
    FROM sys_serialno
    WHERE
    id_=#{id}
</select>

<insert id="save" parameterType="com.pangubpm.modules.data.entity.SerialNo">
    insert into sys_serialno
    <trim prefix="(" suffix=")" suffixOverrides=",">
        <if test="id != null">
            ID_,
        </if>
        <if test="name != null">
            NAME_,
        </if>
        <if test="alias != null">
            ALIAS_,
        </if>
        <if test="regulation != null">
            regulation_,
        </if>
        <if test="genType != null">
            gen_type_,
        </if>
        <if test="noLength != null">
            no_length_,
        </if>
        <if test="curDate != null">
            cur_date_,
        </if>
        <if test="initValue != null">
            init_value_,
        </if>
        <if test="curValue != null">
            cur_value_,
        </if>
        <if test="step != null">
            step_,
        </if>
        <if test="deleted != null">
            DELETED,
        </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
        <if test="id != null">
            #{id,jdbcType=VARCHAR},
        </if>
        <if test="name != null">
            #{name,jdbcType=VARCHAR},
        </if>
        <if test="alias != null">
            #{alias,jdbcType=VARCHAR},
        </if>
        <if test="regulation != null">
            #{regulation,jdbcType=VARCHAR},
        </if>
        <if test="genType != null">
            #{genType,jdbcType=DECIMAL},
        </if>
        <if test="noLength != null">
            #{noLength,jdbcType=NUMERIC},
        </if>
        <if test="curDate != null">
            #{curDate,jdbcType=VARCHAR},
        </if>
        <if test="initValue != null">
            #{initValue,jdbcType=NUMERIC},
        </if>
        <if test="curValue != null">
            #{curValue,jdbcType=NUMERIC},
        </if>
        <if test="step != null">
            #{step,jdbcType=NUMERIC},
        </if>
        <if test="deleted != null">
            #{deleted,jdbcType=BOOLEAN},
        </if>
    </trim>


</insert>
package com.pangubpm.modules.data.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.pangubpm.modules.data.entity.SerialNo;
import com.pangubpm.modules.sys.query.SerialNoQuery;

public interface SerialNoDao {

/**
 * 判读流水号别名是否已经存在
 *
 * @param id
 *     id为null 表明是新增的流水号,否则为更新流水号
 * @param alias
 * @return
 */
Integer isAliasExisted(@Param("id") String id, @Param("alias") String alias);

/**
 * 根据别名获取流水号数据(数据库锁定了对应的行数据)
 *
 * @param alias
 * @return
 */
SerialNo getByAlias(String alias);

/**
 * 根据流程别名 。
 *
 * @param SerialNo
 *     void
 */
int updByAlias(SerialNo SerialNo);

/**
 *
 * @param page
 * @param params
 * @param serialNoQuery
 * @return
 */
IPage<SerialNo> getAllPage(IPage<SerialNo> page, @Param("params") Map<String, Object> params, @Param("serialNoQuery")  SerialNoQuery serialNoQuery);

void save(SerialNo serialNo);

void batchRemove(@Param("list")List<String> list);

SerialNo getById(String id);

void update(SerialNo serialNo);

}

服务类
/**

  • Copyright © 2019-2023 pangubpm All rights reserved.
  • http://www.pangubpm.com
  • 版权所有,侵权必究!
    */
    package com.pangubpm.modules.data.service;

import java.util.List;
import java.util.Map;

import com.pangubpm.common.utils.R;
import com.pangubpm.modules.data.entity.SerialNo;
import com.pangubpm.modules.sys.query.SerialNoQuery;

public interface SerialNoManager {

/**
 * 判读流水号别名是否已经存在
 *
 * @param id
 *     id为null 表明是新增的流水号,否则为更新流水号
 * @param alias
 * @return
 */
boolean isAliasExisted(String id, String alias);

/**
 * 根据别名获取当前流水号
 *
 * @param alias
 * @return
 */
public String getCurIdByAlias(String alias);

/**
 * 根据别名获取下一个流水号
 *
 * @param alias
 * @return
 */
public String nextId(String alias);

/**
 * 根据别名预览前十条流水号
 *
 * @param alias
 * @return
 */
public List<SerialNo> getPreviewIden(String alias);


R listJson(Map<String, Object> params, SerialNoQuery serialNoQuery);

void save(SerialNo serialNo);

void batchRemove(List<String> list);

R getCurById(String id);


void update(SerialNo serialNo);

}

/**

  • Copyright © 2019-2023 pangubpm All rights reserved.
  • http://www.pangubpm.com
  • 版权所有,侵权必究!
    */
    package com.pangubpm.modules.data.service.impl;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.pangubpm.common.utils.Query;
import com.pangubpm.common.utils.R;
import com.pangubpm.modules.data.dao.SerialNoDao;
import com.pangubpm.modules.data.entity.SerialNo;
import com.pangubpm.modules.data.service.SerialNoManager;
import com.pangubpm.modules.sys.query.SerialNoQuery;

import cn.hutool.core.date.DateUtil;

@Service(“serialNoManager”)
public class SerialNoManagerImpl implements SerialNoManager {

@Autowired
SerialNoDao serialNoDao;
@Override
public boolean isAliasExisted(String id, String alias) {
    return serialNoDao.isAliasExisted(id, alias)>0;
}
/**
 * 根据流程规则别名获取得当前流水号。
 *
 * @param alias 流水号规则别名。
 * @return
 */
public String getCurIdByAlias(String alias) {
    SerialNo SerialNo = this.serialNoDao.getByAlias(alias);
    Integer curValue = SerialNo.getCurValue();
    if (curValue == null) curValue = SerialNo.getInitValue();
    String rtn = getByRule(SerialNo.getRegulation(), SerialNo.getNoLength(), curValue);
    return rtn;
}

/**
 * 根据规则返回需要显示的流水号。
 *
 * @param rule     流水号规则。
 * @param length   流水号的长度。
 * @param curValue 流水号的当前值。
 * @return
 */
private String getByRule(String rule, int length, int curValue) {
    Calendar now = Calendar.getInstance();
    int month = now.get(Calendar.MONTH) + 1;
    int day = now .get(Calendar.DAY_OF_MONTH);

    StringBuilder serialNo = new StringBuilder();
    int fillLength = length - String.valueOf(curValue).length();
    for (int i = 0; i < fillLength; i++) {
        serialNo.append("0");
    }
    serialNo.append(curValue);

    String rtn = rule.replace("{yyyy}",String.valueOf(now.get(Calendar.YEAR)))
        .replace("{MM}", String.valueOf((month < 10) ? "0" + month : "" + month))
        .replace("{mm}", String.valueOf(month))
        .replace("{DD}", String.valueOf((day < 10) ? "0" + day : "" + day))
        .replace("{dd}", String.valueOf(day))
        .replace("{NO}", serialNo.toString())
        .replace("{no}", String.valueOf(curValue));


    return rtn;
}


/**
 * 根据流程规则别名获取得下一个流水号。
 *
 * @param alias 流水号规则别名。
 * @return
 */
public synchronized String nextId(String alias) {
    SerialNo SerialNo = serialNoDao.getByAlias(alias);
    if (SerialNo == null) throw new RuntimeException("流水号【" + alias + "】缺失!请联系系统管理员!");

    Result result = genResult(SerialNo);

    int tryTimes = 0;
    while (result.getRtn() == 0) {
        tryTimes++; // 防止在使用中修改步长,导致死循环
        if (tryTimes > 100) throw new RuntimeException("获取流水号失败! " + SerialNo.getAlias());

        try {
            Thread.sleep(50);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        SerialNo.setCurValue(result.getCurValue());
        result = genResult(SerialNo);
    }
    return result.getIdNo();
}



public Result genResult(SerialNo SerialNo) {
    String rule = SerialNo.getRegulation();
    int step = SerialNo.getStep();
    int genEveryDay = SerialNo.getGenType();

    //如果失败过一次、使用失败的当前值。没有失败
    Integer curValue = SerialNo.getCurValue();
    /*if(failCurValue != 0) curValue = failCurValue;*/

    if (curValue == 0) curValue = SerialNo.getInitValue();


    // 每天都生成
    if (genEveryDay == 1) {
        String curDate = getCurDate();
        String oldDate = SerialNo.getCurDate();
        if (!curDate.equals(oldDate)) {
            SerialNo.setCurDate(curDate);
            curValue = SerialNo.getInitValue();
        } else {
            curValue = curValue + step;
        }
    } else {
        curValue = curValue + step;
    }
    SerialNo.setNewCurValue(curValue);
    int i = 0;
    i = serialNoDao.updByAlias(SerialNo);
    Result result = new Result(0, "", curValue);
    if (i > 0) {
        String rtn = getByRule(rule, SerialNo.getNoLength(), curValue);
        result.setIdNo(rtn);
        result.setRtn(1);
    }
    return result;
}

/**
 * 返回当前日期。格式为 年月日。
 *
 * @return
 */
public String getCurDate() {
    Date date = new Date();
    return DateUtil.format(date, "yyyyMMdd");

}

/**
 * 预览时,获取前十个流水号
 *
 * @param alias
 * @return
 */
public List<SerialNo> getPreviewIden(String alias) {
    int genNum = 10;
    SerialNo SerialNo = serialNoDao.getByAlias(alias);
    String rule = SerialNo.getRegulation();
    int step = SerialNo.getStep();
    Integer curValue = SerialNo.getCurValue();
    if (curValue == null) curValue = SerialNo.getInitValue();
    List<SerialNo> tempList = new ArrayList<SerialNo>();
    for (int i = 0; i < genNum; i++) {
        SerialNo SerialNotemp = new SerialNo();
        if (i > 0) {
            curValue += step;
        }
        String rtn = getByRule(rule, SerialNo.getNoLength(), curValue);
        SerialNotemp.setId(curValue.toString());
        SerialNotemp.setCurIdenValue(rtn);
        tempList.add(SerialNotemp);
    }
    return tempList;
}
@Override
public R listJson(Map<String, Object> params, SerialNoQuery serialNoQuery) {

// serialNoDao.listJson(params);
IPage page = new Query().getPage(params);
IPage ucRolesList = serialNoDao.getAllPage(page,params,serialNoQuery);

    return R.ok().put("count", ucRolesList.getTotal()).put("data", ucRolesList.getRecords());
}
@Override
public void save(SerialNo serialNo) {
    serialNoDao.save(serialNo);
}
@Override
public void batchRemove(List<String> list) {
    serialNoDao.batchRemove(list);
}
@Override
public R getCurById(String id) {
    SerialNo serialNo=  serialNoDao.getById(id);
    return R.ok().put("data",serialNo);
}
@Override
public void update(SerialNo serialNo) {
    serialNoDao.update(serialNo);
}

public class Result {

    private int rtn = 0;
    private String idNo = "";
    private int curValue = 0;

    public Result(int rtn, String idNo, int curValue) {
        this.rtn = rtn;
        this.idNo = idNo;
        this.setCurValue(curValue);
    }


    public int getRtn() {
        return rtn;
    }

    public void setRtn(int rtn) {
        this.rtn = rtn;
    }

    public String getIdNo() {
        return idNo;
    }

    public void setIdNo(String idNo) {
        this.idNo = idNo;
    }

    public int getCurValue() {
        return curValue;
    }

    public void setCurValue(int curValue) {
        this.curValue = curValue;
    }


}

}

控制器:
package com.pangubpm.modules.data.controller;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.alibaba.fastjson.JSONObject;
import com.pangubpm.common.annotation.SysLog;
import com.pangubpm.common.utils.R;
import com.pangubpm.common.utils.SnowflakeIdWorkerUtils;
import com.pangubpm.modules.data.entity.SerialNo;
import com.pangubpm.modules.data.service.SerialNoManager;
import com.pangubpm.modules.sys.controller.AbstractController;
import com.pangubpm.modules.sys.query.SerialNoQuery;

import springfox.documentation.annotations.ApiIgnore;

/**

  • 流水号生成管理
    */
    @RestController
    @RequestMapping(“/sys/serialNo/”)
    public class SysSerialNoController extends AbstractController {

    @Resource
    SerialNoManager serialNoManager;
    @Value(“${pangu.delete}”)
    private Boolean panguDelete;
    @RequestMapping(value = “/listJson”)
    @SysLog(“流水号生成列表(分页条件查询)数据”)
    @ResponseBody
    public R listJson(@ApiIgnore @RequestParam Map<String, Object> params, SerialNoQuery serialNoQuery) {
    return serialNoManager.listJson(params,serialNoQuery);
    }
    @PostMapping(value = “/save”)
    @ResponseBody
    @SysLog(“保存流水号”)
    public R save(@RequestBody SerialNo serialNo) {
    boolean exist = serialNoManager.isAliasExisted(serialNo.getId(), serialNo.getAlias());
    if (!exist) {
    if (StringUtils.isNotEmpty(serialNo.getId())) {
    serialNoManager.update(serialNo);
    } else {
    serialNo.setId(SnowflakeIdWorkerUtils.getNextId());
    serialNoManager.save(serialNo);
    }

     } else {
         return R.error("添加流水号失败,别名【" + serialNo.getAlias() + "】在系统中已存在,不能重复");
     }
     return R.ok();
    

    }
    @SysLog(“删除流水号”)
    @RequestMapping(“/remove”)
    @ResponseBody
    public R delete(@RequestBody String[] ids) {
    if (org.springframework.util.StringUtils.isEmpty(ids)) {
    return R.error(“没有选中数据”);
    }
    if (Boolean.valueOf(panguDelete)) {
    serialNoManager.batchRemove(Arrays.asList(ids));
    return R.ok();
    } else {
    return R.error(“演示模式下无法执行该操作”);
    }

    }

    /**

    • V2.6.2 版本新增
    • @param jsonParam
    • @return
      */
      @PostMapping(value = “/v2/remove”)
      @SysLog(“批量删除”)
      @ResponseBody
      public R removeByIds(@RequestBody JSONObject jsonParam) {
      List list = jsonParam.getJSONArray(“ids”);
      if (list.size() == 0) {
      return R.error(“没有选中数据”);
      }
      if (Boolean.valueOf(panguDelete)) {
      serialNoManager.batchRemove(list);
      return R.ok();
      } else {
      return R.error(“演示模式下无法执行该操作”);
      }

    }

    @GetMapping(value = “/get/{id}”)
    @SysLog(“查询流水号”)
    @ResponseBody
    public R get(@PathVariable(“id”) String id) {
    return serialNoManager.getCurById(id);
    }
    @GetMapping(value = “/previewIden/{alias}”)
    @SysLog(“执行流水号”)
    @ResponseBody
    public R previewIden(@PathVariable(“alias”) String alias) {
    List previewIden = serialNoManager.getPreviewIden(alias);
    return R.ok().put(“data”, previewIden);
    }

}

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值