起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6078|回复: 17

[结贴] 重复导入Excel鉴别问题

[复制链接]

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
发表于 2017-8-7 20:52:36 | 显示全部楼层 |阅读模式
本帖最后由 qweasdzxc 于 2017-8-9 14:07 编辑

有什么方法可以鉴别grid重复?这个问题是因为重复导入Excel造成的,跟导入的excel中的重复数据不一样。
主要功能是这样的:一个grid列表,数据可以通过弹出框选择,也可以通过excel导入,execl导入是导入到UI,不是DB,这种情况,怎么保证grid列表数据不重复?或者数据重复的进行数据覆盖?我已经加了去除excel中的重复数据逻辑,但是在同一张单子里面重复的点导入EXcel且导入同一张单子还是能导进来,grid列表里就会有重复的,要怎么控制?

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2017-8-8 09:59:15 | 显示全部楼层
这样的可以在导入的时候把data中现在的数据传过去,校验重复的时候遍历传过去的数据如果有excel中的就不导入,你之前的导入重复的逻辑也还需要
两者结合

导入传参参考
http://docs.wex5.com/bex5-ui-question-list-10121/
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
 楼主| 发表于 2017-8-8 10:05:47 | 显示全部楼层
本帖最后由 qweasdzxc 于 2017-8-8 10:55 编辑
jishuang 发表于 2017-8-8 09:59
这样的可以在导入的时候把data中现在的数据传过去,校验重复的时候遍历传过去的数据如果有excel中的就不导 ...

1.怎么把data中现在的数据获取到传过去呢?
2.传到后台后ModelUtils.getRequestContext().getActionContext().getParameter("detailData");这个获取到的是个Object对象,怎么获取到行和值
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2017-8-8 11:27:27 | 显示全部楼层
data中的数据传递按照Table类型的方式,自己加一个table类型的参数去操作
传table类型的参考/UI2/demo/actions/process/invokeAction/mainActivity.w
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
 楼主| 发表于 2017-8-8 12:08:17 | 显示全部楼层
jishuang 发表于 2017-8-8 11:27
data中的数据传递按照Table类型的方式,自己加一个table类型的参数去操作
传table类型的参考/UI2/demo/acti ...

现在传参报错了,具体怎么改?
  1. Model.prototype.importExcel1CreateImportParam = function(event){
  2.         debugger
  3.         var detailData = this.comp("detailData");
  4.         var tableParam = new biz.Request.TableParam(detailData.toJson());
  5.         event.param['detailData'] = detailData;
  6.         };
复制代码
  1. public static void turnoverStockProcessBeforeUploadImportExcel() {
  2.                 Table table=(Table) ModelUtils.getRequestContext().getActionContext().getParameter("detailData");
  3.                
  4.         }
复制代码
  1. 2017-08-08 12:08:17 excute stream action, params:{process=/IntegratedApp/turnoverApparatus/process/turnoverStock/turnoverStockProcess, activity=mainActivity, action=uploadImportExcel, parameters={excel=java.io.ByteArrayInputStream@1b27bfc, mapping=java.io.ByteArrayInputStream@b8404f, detailData=[object Object]}}
  2. com.justep.exception.BusinessException: 编码: JUSTEP150071; 提示: 动作"/IntegratedApp/turnoverApparatus/process/turnoverStock/uploadImportExcel@Action"的参数"detailData"的数据类型"String"与定义的类型"Table"不匹配
  3.         at com.justep.exception.BusinessException.create(Unknown Source)
  4.         at com.justep.system.transform.RequestTransform.checkParameterDataType(Unknown Source)
  5.         at com.justep.system.transform.RequestTransform.transActionParams(Unknown Source)
  6.         at com.justep.system.transform.RequestTransform.transform(Unknown Source)
  7.         at com.justep.system.action.Engine.translateParameters(Unknown Source)
  8.         at com.justep.system.action.Engine.invokeActions(Native Method)
  9.         at com.justep.system.action.Engine.invokeActions(Unknown Source)
  10.         at com.justep.business.server.BusinessServer.doAction(Unknown Source)
  11.         at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
  12.         at com.justep.business.server.BusinessServer.excute(Unknown Source)
  13.         at com.justep.business.server.BusinessServer.excute(Unknown Source)
  14.         at com.justep.business.server.BusinessServer.excuteMultipartAction(Unknown Source)
  15.         at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
  16.         at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
  17.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  18.         at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
  19.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  20.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  21.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  22.         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  23.         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  24.         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  25.         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
  26.         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  27.         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  28.         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
  29.         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
  30.         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  31.         at java.lang.Thread.run(Thread.java:745)
复制代码



020.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2017-8-8 14:01:31 | 显示全部楼层
var detailData = this.comp("detailData");
        var tableParam = new biz.Request.TableParam(detailData.toJson());
        event.param['detailData'] = detailData;

改为
var detailData = this.comp("detailData");

        event.param['detailData'] = detailData.toJson();
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
 楼主| 发表于 2017-8-8 14:07:39 | 显示全部楼层
jishuang 发表于 2017-8-8 14:01
var detailData = this.comp("detailData");
        var tableParam = new biz.Request.TableParam(detai ...

还是报一样的错
  1. 2017-08-08 14:06:45 excute stream action, params:{process=/IntegratedApp/turnoverApparatus/process/turnoverStock/turnoverStockProcess, activity=mainActivity, action=uploadImportExcel, parameters={excel=java.io.ByteArrayInputStream@15c3bb0, mapping=java.io.ByteArrayInputStream@21dadb, detailData=[object Object]}}
  2. com.justep.exception.BusinessException: 编码: JUSTEP150071; 提示: 动作"/IntegratedApp/turnoverApparatus/process/turnoverStock/uploadImportExcel@Action"的参数"detailData"的数据类型"String"与定义的类型"Table"不匹配
  3.         at com.justep.exception.BusinessException.create(Unknown Source)
  4.         at com.justep.system.transform.RequestTransform.checkParameterDataType(Unknown Source)
  5.         at com.justep.system.transform.RequestTransform.transActionParams(Unknown Source)
  6.         at com.justep.system.transform.RequestTransform.transform(Unknown Source)
  7.         at com.justep.system.action.Engine.translateParameters(Unknown Source)
  8.         at com.justep.system.action.Engine.invokeActions(Native Method)
  9.         at com.justep.system.action.Engine.invokeActions(Unknown Source)
  10.         at com.justep.business.server.BusinessServer.doAction(Unknown Source)
  11.         at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
  12.         at com.justep.business.server.BusinessServer.excute(Unknown Source)
  13.         at com.justep.business.server.BusinessServer.excute(Unknown Source)
  14.         at com.justep.business.server.BusinessServer.excuteMultipartAction(Unknown Source)
  15.         at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
  16.         at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
  17.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  18.         at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
  19.         at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
  20.         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  21.         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  22.         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
  23.         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
  24.         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  25.         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
  26.         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  27.         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
  28.         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
  29.         at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
  30.         at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
  31.         at java.lang.Thread.run(Thread.java:745)
复制代码


021.png
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2017-8-8 16:27:18 | 显示全部楼层
那就遍历data中的数据把要校验的字段的值拼接到一个字符串行,把action中的类型设置为字符串
把拼接后的字符串传过去进行截取校验
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

506

主题

1631

帖子

3385

积分

论坛元老

Rank: 8Rank: 8

积分
3385
QQ
 楼主| 发表于 2017-8-8 16:39:16 | 显示全部楼层
jishuang 发表于 2017-8-8 16:27
那就遍历data中的数据把要校验的字段的值拼接到一个字符串行,把action中的类型设置为字符串
把拼接后的字 ...
  1. Model.prototype.importExcel1Success = function(event){
  2.             var detailData = self.comp("detailData");
  3.             var fStorageType="";
  4.             var fStorageSection="";
  5.             var fworkName="";
  6.             var fStorageStarusName="";
  7.             detailData.each(function(param){
  8.            fStorageType=param.row.val('fStorageType');
  9.            fStorageSection=param.row.val('fStorageSection');
  10.            fworkName=param.row.val('fworkName');
  11.            fStorageStarusName=param.row.val('fStorageStarusName');
  12.            var rows=detailData.find(['fStorageType','fStorageSection','fworkName','fStorageStarusName'],[fStorageType,fStorageSection,fworkName,fStorageStarusName]);
  13.            //判别grid是否有重复数据
  14.            if(rows.length>1){//有重复数据删掉
  15.              detailData.confirmDelete = false;
  16.              detailData.deleteData();
  17.            }
  18.         });
  19.         detailData.confirmDelete = true;
  20.         };
复制代码

那我在前台这样删除会不会因为数据很多而造成卡的现象,还是说传到后台。
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
35942
发表于 2017-8-8 17:20:42 | 显示全部楼层
js中操作数据库肯定会影响效率
我说的方案是遍历数据,拼接字符串,excel导入时传参
在excel导入中去删除导入的数据
不是导入成功后遍历删除
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-19 21:32 , Processed in 0.072050 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表