java中执行delete,insert被重复执行

得到了一条数据,我现在正常的操作是要先删后增,正常的情况下会执行delete然后insert操作,但是偶尔会delete,delete,insert,insert这样执行条重复的操作,最后导致insert了条重复的,这是偶尔发生的,一条天概4000条数据会有那么2条左右有这种情况,不是前端提交了2次这种情况,问题和这位大哥的一样https://bbs.csdn.net/topics/360209410?list=lz,有遇到过的大哥给个思路

//删除应缴信息
                                        sql = "delete t_jj_sfxx where lsh=  '"+map.get("lsh").toString()+kscs+"' and  xmbm=  '"+maps.get("ffsxmbm")+"' and  clbz='F' ";
                                        jdbcDao.execute(sql);

                                        BigDecimal xmgs_sum = new BigDecimal(xmgs[b]); 
                                        BigDecimal xmje_sum = new BigDecimal(xmje[b]);  
                                        BigDecimal hj_sum = xmgs_sum.multiply(xmje_sum);  
                                        logger.info("获取项目信息---项目数量:"+xmgs_sum+"项目金额:"+xmje_sum+"总金额:"+hj_sum);

                                        sql ="insert into t_jj_sfxx(fid,ysje,hpzl,hphm,sfzh,sjly,lsh,xm,wbywdmsm,ywdwbh,xmbm," +
                                              " xmgs,xmje,clbz,clsj,userid,sflx,jkfs,jkid,kskm,jjxmbm,ywlx,ywyy,czlx,fdwwm,kscs)values  ('"+fids+"','"+xmje[b]+"',''" +
                                                " ,'','"+map.get("zmhm").toString()+"','"+map.get("ywlx").toString()+"'," +
                                                "'"+map.get("lsh").toString()+kscs+"','"+map.get("xm").toString()+"','"+map.get("sfmc").toString()+"'," +
                                                "'"+map.get("glbm").toString()+"','"+maps.get("ffsxmbm")+"',   '"+xmgs[b]+"'," +
                                                " '"+hj_sum+"','F',TO_CHAR(SYSDATE,'yyyy-mm-dd'),'"+user.getUserid()+"','"+inmap.get("sflx")+"','"+user.getJkfs()+"','"+inmap.get("ywlx")+"','"+kskm+"','"+str[b]+"','"+map.get("ywlx").toString()+"','"+map.get("ywyy").toString()+"','"+user.getCzlx()+"','"+user.getDwbm()+"','"+kscs+"')";

                                        jdbcDao.execute(sql);

就是这段代码,大部分情况是delete后insert,但有极少数发生delete delete insert insert,就是那个删除连续运行2次后,插入跟着连续运行了2次

异常日志:图片说明

正常日志:图片说明

首先,不是很明白你这个问题的背景哈,从你说的来看,是不是你现在有一条数据插入重复的情况?这种类似的防重问题,解决办法有很多种:
1、在插入前,基于这条数据的唯一标识做一个锁(分布式场景,可能要做分布式锁)。每次插入前,都来判断下,是否被处理过。
2、在db中对唯一列建唯一索引。
回答的不一定对,仅供参考。

如果代码流程没有错误,还是应该排查下是不是按钮重复响应导致的请求重复处理。
在请求中加一行调试日志:打印调用者线程名称+时间,页面上提交代码处也加上日志。

代码是单线程执行下去的,连续打印两次,说明同时有两条线程执行,说明发了两个请求,要确认这个,可以在打印时加上线程名称。要防止重复提交,一种可以是页面限制,限制提交按钮必须等上一次提交响应后才能再继续操作,另一个种是服务端限制,这个可以使用一次性的随机标识号来限制