需求描述:最近碰到一个需求,某付款凭证单需要根据表单的一个po订单号控制流程重复提交的情况。
思路:先查询当前提交的表单“po订单号”是否已经存在数据库中,获取数据的条数来判断流程是否重复提交。其中需要注意到的一种情况,人员首次填写,保存情况。以下为开发节点后action:
package com.customcode.action;
import com.customcode.util.XmActionLog;
import weaver.conn.RecordSet;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
/**
* @author Yuyb
* @version 1.0
* 类说明:FK01_付款凭证单,防止重复提交
* @date 2021/11/15 9:19
*/
public class FK01_Torepeat implements Action {
public String execute(RequestInfo request) {
XmActionLog alog = new XmActionLog();
String actionName="FK01_Torepeat";//日志文件夹名称
RecordSet rs = new RecordSet();
RecordSet rs_repeat = new RecordSet();
alog.info(actionName,"====================================START=========================================");
String result="1";
String requestId = request.getRequestid(); //获取请求requestId
String maintable = request.getRequestManager().getBillTableName();
String sql="select poddhm,Number_yg,money,requestid from "+maintable+" where requestid="+requestId;
rs.execute(sql);
alog.info(actionName,"sql="+sql);
String poddhm="";
//String oldrid="";
while(rs.next()){
poddhm=rs.getString("poddhm");//PO订单号
//oldrid=rs.getString("requestid");//
}
String sql_repeat="select * from "+maintable+" where poddhm='"+poddhm+"' ";
rs_repeat.execute(sql_repeat);
int nums=rs_repeat.getCounts();
alog.info(actionName,"nums="+nums);
alog.info(actionName,"sql_repeat="+sql_repeat);
while(rs_repeat.next()){
String oldrid=rs_repeat.getString("requestid");
if(nums<1){
return "1";
}else if(nums==1){
if(oldrid.equals(requestId)){
return "1";
}else{
request.getRequestManager().setMessagecontent("此PO订单号"+poddhm+"已经提交过,请勿重复提交!");
request.getRequestManager().setMessageid("1");
return "0";
}
}else{
request.getRequestManager().setMessagecontent("此PO订单号"+poddhm+"已经提交过,请勿重复提交!");
request.getRequestManager().setMessageid("1");
return "0";
}
}
alog.info(actionName,"====================================END=========================================");
return result;
}
}