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

QQ登录

只需一步,快速开始

查看: 41279|回复: 12

[处理中3] 保存的执行顺序.

[复制链接]

22

主题

72

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
发表于 2021-5-13 10:58:43 | 显示全部楼层 |阅读模式
版本: 其它(帖子中说明) 小版本号: 3.9
数据库: MS SQLServer 服务器操作系统: Windows 应用服务器:
客户端操作系统: Windows 其它 浏览器: Chrome
本帖最后由 badnjcf 于 2021-5-13 11:08 编辑

问一下,现在问题是单据出现保存唯一冲突..
比如:我的唯一约束是SEQ列.
1.数据directdelete选择否...(不想用"是")
2.在单据有数据,SEQ有1,2,3 行.
3.删除SEQ=1行.
4.更改原SEQ=2,设SEQ=1.
5.保存
出现问题数据库约束唯一冲突..

按理来说先执行删除的话是不会出现冲突.....现在是先更新?

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2021-5-14 09:21:13 | 显示全部楼层
提交是一起提交的

在saveAction的事件中把table获取出来,然后把table的内容输出看看

http://bbs.wex5.com/forum.php?mo ... 40966&pid=164970552

http://bbs.wex5.com/forum.php?mo ... 40966&pid=165049439
可以把sql语句输出看看先执行的sql语句

http://bbs.wex5.com/forum.php?mo ... 4&pid=165004035
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

22

主题

72

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2021-5-15 17:22:03 | 显示全部楼层
jishuang 发表于 2021-5-14 09:21
提交是一起提交的

在saveAction的事件中把table获取出来,然后把table的内容输出看看

我把SQL日志开了,SQL看是,UPDATE先.没有看到DELETE就出错了.


前面说的saveAction事件中把table.获取出来不会...不好意思,我是新手..那java应该写在哪里哪个文件.

不介意可以指点下吗?
回复 支持 反对

使用道具 举报

22

主题

72

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2021-5-17 16:53:27 | 显示全部楼层
本帖最后由 badnjcf 于 2021-5-17 17:00 编辑
jishuang 发表于 2021-5-14 09:21
提交是一起提交的

在saveAction的事件中把table获取出来,然后把table的内容输出看看

按你的方法看了,,结果出来了....提交前是有删除跟更新..但是先更新为什么 ?下面附件是控制台内容
微信图片_20201127161614.jpg
log.zip (4.75 KB, 下载次数: 385)
回复 支持 反对

使用道具 举报

22

主题

72

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2021-5-17 16:56:59 | 显示全部楼层
本帖最后由 badnjcf 于 2021-5-21 13:44 编辑

请看上一条
回复 支持 反对

使用道具 举报

22

主题

72

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2021-5-24 17:32:18 | 显示全部楼层
帮我看一下什么原因.?
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2021-5-25 10:44:56 | 显示全部楼层
table中不是这样输出的,直接输入table的内容

在控制台中以XML格式输出table变量中的内容
System.out.println(new com.justep.system.transform.Table2Row().transform(table,null).asXML());
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

22

主题

72

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2021-5-26 17:32:05 | 显示全部楼层
jishuang 发表于 2021-5-25 10:44
table中不是这样输出的,直接输入table的内容

在控制台中以XML格式输出table变量中的内容

你好,我上传了控制台日志..
帮我看一下什么原因..
log.zip (4.94 KB, 下载次数: 408)
回复 支持 反对

使用道具 举报

91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2021-5-26 19:32:36 | 显示全部楼层
把你的java代码发一下,不是要输出的那样的
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



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

使用道具 举报

22

主题

72

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
QQ
 楼主| 发表于 2021-5-27 10:09:30 | 显示全部楼层
jishuang 发表于 2021-5-26 19:32
把你的java代码发一下,不是要输出的那样的

//import java.util.Iterator;
import com.justep.system.util.*;
import com.justep.system.process.*;
import com.justep.system.context.*;
import com.justep.system.opm.*;
import com.justep.system.data.*;
import com.justep.system.action.*;
import com.justep.model.*;
import com.justep.model.ModelUtils;

import java.util.*;



public class SOProcess {

        public static void sOProcessAfterAbort() {
                try{
                    String key=ProcessUtils.getProcessData1();
                    String MSQL5="update SOH SOH SET SOH.FLOWSTATUS='已终止' where SOH='"+key+"'";
                    KSQL.executeUpdate(MSQL5,null,"/E2018/BASE/data",null);       
                }  catch(Exception e)
                {
                        throw new RuntimeException(e.getMessage());
                }
        }

        public static void sOProcessAfterFinish() {
                try{
                        
                         //String MNAME=this.Context.getCurrentProcess();
                         //获取当前环节显示名称
            //justep.Context.getCurrentProcessLabel();//获取当前流程显示名称
                    String key=ProcessUtils.getProcessData1();
                    String MSQL6="update SOH SOH SET SOH.FLOWSTATUS='已完成' where SOH='"+key+"'";
                    KSQL.executeUpdate(MSQL6,null,"/E2018/BASE/data",null);       
                }  catch(Exception e)
                {
                        throw new RuntimeException(e.getMessage());
                }
        }

       

       

        public static void businessActivity2AfterAdvance() {
                try{
                String taskID=ProcessUtils.getProcessContext().getTask().getId();
                String MSQL3="SELECT sContent as sContent from SA_Task SA_Task where SA_Task='"+taskID+"'";
                com.justep.system.data.Table table=KSQL.select(MSQL3,null,"/system/data",null);
                Iterator<Row> rows=table.iterator();
                Row row =rows.next();
                String sContent=row.getString("sContent");       
                String key=ProcessUtils.getProcessData1();       
                if(sContent==null)
                {
                   sContent="批核";
                }
                                                           
                    String MSQL4="update SOH SOH SET SOH.FLOWREMARK2='"+sContent+"',SOH.APPR_FLAG='V',SOH.APPR_DATE=SQL.GETDATE(),SOH.APPR_USER=peratorName(),SOH.APPR_DATE_FST=CASE WHEN SQL.ISNULL(SOH.APPR_DATE_FST,'1900-01-01')='1900-01-01' THEN SQL.GETDATE() ELSE SOH.APPR_DATE_FST END where SOH='"+key+"'";
                    KSQL.executeUpdate(MSQL4,null,"/E2018/BASE/data",null);
                    //String ret = ZP_CQTD_SAVEAF(client_id,key);
            } catch(Exception e)
        {
           throw new RuntimeException(e.getMessage());
        }
        }

        public static void businessActivity1AfterAdvance() {
                try{
                String taskID=ProcessUtils.getProcessContext().getTask().getId();
                String MSQL1="SELECT sContent as sContent from SA_Task SA_Task where SA_Task='"+taskID+"'";
                com.justep.system.data.Table table=KSQL.select(MSQL1,null,"/system/data",null);
                Iterator<Row> rows=table.iterator();
                Row row =rows.next();
                String sContent=row.getString("sContent");               
                if(sContent!=null)
                {
                    String key=ProcessUtils.getProcessData1();
                    String MSQL2="update SOH SOH SET SOH.FLOWREMARK1='"+sContent+"' where SOH='"+key+"'";
                    KSQL.executeUpdate(MSQL2,null,"/E2018/BASE/data",null);                    
                }
        } catch(Exception e)
        {
           throw new RuntimeException(e.getMessage());
        }
        }






        public static void businessActivity2AfterBack() {
                try{
                String taskID=ProcessUtils.getProcessContext().getTask().getId();
                String MSQL1="SELECT sContent as sContent from SA_Task SA_Task where SA_Task='"+taskID+"'";
                com.justep.system.data.Table table=KSQL.select(MSQL1,null,"/system/data",null);
                Iterator<Row> rows=table.iterator();
                Row row =rows.next();
                String sContent=row.getString("sContent");               
                if(sContent!=null)
                {
                    String key=ProcessUtils.getProcessData1();
                    String MSQL2="update SOH SOH SET SOH.BACK_REMARK='"+sContent+"' where SOH='"+key+"'";
                    KSQL.executeUpdate(MSQL2,null,"/E2018/BASE/data",null);                    
                }
        } catch(Exception e)
        {
           throw new RuntimeException(e.getMessage());
        }
        }



        public static void sOProcessBeforeSaveSODAction() {
//获得table参数
Table table = (Table)ContextHelper.getActionContext().getParameter("table");
//获得所有修改的行
Iterator<Row> rows = table.iterator(com.justep.system.data.ModifyState.EDIT);
Row row;
Collection<String> list=table.getColumnNames();
String[] strArray1 = (String[])list.toArray(new String[0]);
System.out.println("修改的行");
System.out.println(new com.justep.system.transform.Table2Row().transform(table,null).asXML());
//while (rows.hasNext()){
//row = rows.next();

//for(int i=0;i<table.getColumnCount();i++){
//if(row.isModified(strArray1)){
//System.out.println(row.getValue(i));
//System.out.println(row.getOldValue(strArray1));
//}
//}
//}
//获得所有新增的行
rows = table.iterator(com.justep.system.data.ModifyState.NEW);
System.out.println("新增的行");
System.out.println(new com.justep.system.transform.Table2Row().transform(table,null).asXML());
//while (rows.hasNext()){
//row = rows.next();

//for(int i=0;i<table.getColumnCount();i++){
//System.out.println(strArray1+"-"+row.getValue(strArray1));
//}
//}
//获得所有被删除的行
rows = table.iterator(com.justep.system.data.ModifyState.DELETE);
System.out.println("删除的行");
System.out.println(new com.justep.system.transform.Table2Row().transform(table,null).asXML());
//while (rows.hasNext()){
//row = rows.next();

//for(int i=0;i<table.getColumnCount();i++){
//System.out.println(strArray1+"-"+row.getValue(strArray1));
//}
//}
}


}
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 05:44 , Processed in 0.087786 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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