//当前工作流包含表单是抽象表单
//新增供应商银行账号 ID:2c9090849d7030b1019d95539cbd117a
// 提交人: creator
// 提交日期: createdate
// 导入附件: attachid
// 导入情况: objdesc
//新增供应商银行账号明细 ID:2c9090849d7030b1019d95539d1b118a
// 创建人: field010
// 业务所属公司(无用): field001
// 供应商名称: field002
// 账号: field004
// 创建日期: field005
// 备注: field006
// 异常信息: field007
// 开户行: field003
// 业务所属公司: field008
// 供应商名称: field009
//---------------------------------------
package com.velcro.workflow.extclass;
/**
* 流程预后处理类
*/
// 引入所需要的包
import java.util.*;
import com.velcro.base.util.StringHelper;
import com.velcro.workflow.AbstractWorkflowService;
import com.velcro.workflow.pipe.service.ExtendJspService;
import com.navi.dao.jdbc.IDataService;
public class ProviderBank05 extends AbstractWorkflowService {// 类名由用户自定义,必需与上后处理Class的名称相同
public void doExtWorkflow(Map wfparameters) {
// 在此处编写用户自定义实现,
// 以下面这种方式获取相关Service
ExtendJspService extendJspService=(ExtendJspService)super.getObjectService("extendJspService");
IDataService dataService = (IDataService) super.getObjectService("mobileDataService");
// 以下面这种方式获取相关属性值
String workflowid = (String)wfparameters.get("workflowid");
String formid="2c9090849d7030b1019d95539d1b118a";
List list=extendJspService.getFormfieldsValues(formid,workflowid);
//用一个循环读取每一行的记录
for(int i=0;i<list.size();i++){
//map中的key为表单的字段名,value为该字段的值
Map map=(Map)list.get(i);
String banks=null;
String accounts=null;
String providerid=StringHelper.null2String(map.get("field009"));//供应商id
String banksSql="SELECT STUFF((SELECT ',' + field003 FROM uft9l7u41776326778136 where field009='"+providerid+"' and (field003<>'' or field003 is not null) and requestid in(select id from workflowbase where isdelete=0) FOR XML PATH('')),1, 1, '') AS field003";
banks = dataService.getValueStr(banksSql);
String accountsSql="SELECT STUFF((SELECT ',' + field004 FROM uft9l7u41776326778136 where field009='"+providerid+"' and (field003<>'' or field003 is not null) and requestid in(select id from workflowbase where isdelete=0) FOR XML PATH('')),1, 1, '') AS field004";
accounts = dataService.getValueStr(accountsSql);
if (StringHelper.isNotEmpty(banks) && StringHelper.isNotEmpty(accounts)) {
// 1. 分割原始字符串为数组
String[] bankArray = banks.split(",");
String[] accountsArray = accounts.split(",");
if (bankArray.length == 1 && accountsArray.length == 1) {
banks = banks.trim();
accounts = accounts.trim();
} else {
// 2. 使用LinkedHashSet去重(保留原始顺序)
Set<String> uniqueBanks = new LinkedHashSet<>(Arrays.asList(bankArray));
Set<String> uniqueAccounts = new LinkedHashSet<>(Arrays.asList(accountsArray));
// 3. 用逗号重新连接去重后的数据
banks = buildCommaSeparatedString(uniqueBanks);
accounts = buildCommaSeparatedString(uniqueAccounts);
}
String updateSql="update provider set bank=?,accounts=? where id=?";
dataService.executeSql(updateSql,banks,accounts,providerid);
}
}
}
/**
* 手动构建逗号分隔的字符串
* @param set 包含字符串的集合
* @return 逗号分隔的字符串
*/
private static String buildCommaSeparatedString(Set<String> set) {
StringBuilder result = new StringBuilder();
boolean first = true;
for (String item : set) {
if (first) {
first = false;
} else {
result.append(",");
}
result.append(item);
}
return result.toString();
}
public void undoExtWorkflow(Map wfparameters) {
}
}