You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6294 lines
306 KiB
Java

2 years ago
/*
*
* Copyright (c) 2001-2006 .
* ,.
*
*/
package weaver.workflow.mode;
import weaver.log4j.Module;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.api.browser.bean.BrowserBean;
import com.api.browser.bean.BrowserValueInfo;
import com.api.browser.service.BrowserValueInfoService;
import com.api.browser.util.BrowserInitUtil;
import com.api.doc.detail.util.DocDownloadCheckUtil;
import com.api.odoc.util.OdocFileUtil;
import com.engine.fnaMulDimensions.util.BudgetBearerComInfo;
import com.engine.fnaMulDimensions.util.BudgetPeriodComInfo;
import com.engine.fnaMulDimensions.util.BudgetSubjectComInfo;
import com.engine.hrm.biz.OrganizationShowSetBiz;
import com.engine.workflow.biz.FieldInfo.FieldInfoBiz;
import com.engine.workflow.biz.NewReportBiz;
import com.engine.workflow.biz.SecondAuthBiz;
import com.engine.workflow.biz.RobotNode.RobotNodeBiz;
import com.engine.workflow.biz.RobotNode.RobotNodeServiceBiz;
import com.engine.workflow.biz.WorkflowBaseBiz;
import com.engine.workflow.biz.customizeBrowser.BrowserFieldUtil;
import com.engine.workflow.biz.customizeBrowser.BrowserFieldValueComInfo;
import com.engine.workflow.biz.customizeBrowser.CustomBrowserBiz;
import com.engine.workflow.biz.customizeBrowser.CustomizeBrowserRefreshCacheThread;
import com.engine.workflow.biz.excelDesign.DoSaveFreeExcelDesignBiz;
import com.engine.workflow.biz.excelDesign.MainSubWfSignBiz;
import com.engine.workflow.biz.freeNode.FreeNodeBiz;
import com.engine.workflow.cmd.workflowPath.node.form.GetShowDescCmd;
import com.engine.workflow.constant.ShowType;
import com.engine.workflow.constant.node.NodeType;
import com.engine.workflow.constant.ShowTypeEnum;
import com.engine.workflow.constant.SignSource;
import com.engine.workflow.constant.requestForm.RequestConstant;
import com.engine.workflow.entity.NodeSignInputSetEntity;
import com.engine.workflow.entity.core.*;
import com.engine.workflow.entity.excelDesign.MainSubSignEntity;
import com.engine.workflow.entity.nodeForm.NodeFormDesc;
import com.engine.workflow.util.CollectionUtil;
import com.engine.workflow.util.ListUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import weaver.conn.RecordSet;
import weaver.cpt.capital.CapitalComInfo;
import weaver.crm.Maint.CustomerInfoComInfo;
import weaver.dateformat.DateTransformer;
import weaver.dateformat.UnifiedConversionInterface;
import weaver.docs.docs.DocComInfo;
import weaver.docs.senddoc.DocReceiveUnitComInfo;
import weaver.docs.webservices.DocAttachment;
import weaver.fna.general.RequestDetailImportUtil;
import weaver.fna.maintenance.BudgetfeeTypeComInfo;
import weaver.fna.maintenance.FnaSystemSetComInfo;
import weaver.formmode.tree.CustomTreeUtil;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.hrm.check.JobComInfo;
import weaver.hrm.company.SubCompanyComInfo;
import weaver.hrm.companyvirtual.DepartmentVirtualComInfo;
import weaver.hrm.companyvirtual.SubCompanyVirtualComInfo;
import weaver.hrm.job.JobTitlesComInfo;
import weaver.hrm.resource.ResourceComInfo;
import weaver.proj.Maint.ProjectInfoComInfo;
import weaver.systeminfo.SystemEnv;
import weaver.workflow.exceldesign.DetailOrderManager;
import weaver.workflow.field.BrowserComInfo;
import weaver.workflow.request.*;
import weaver.workflow.workflow.*;
import javax.servlet.http.HttpServletRequest;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static weaver.general.Util.getIntValue;
import static weaver.general.Util.null2String;
/**
* Description: .
*
* @author mackjoe
* @version 1.0 04/07/06
*/
public class FieldInfo implements Cloneable {
private static final Log log = LogFactory.getLog(FieldInfo.class);
String hr = getHr();
private HttpServletRequest request;
//键为主表字段Id号值为该字段值。
private Map<String, String> mapMainTblFields = new HashMap<String, String>();
//存储多个明细中的数据。第一级元素为单个明细数据一个明细数据是一个Arraylist。
//有多行数据每行数据是一个Map其中一个字段ID号为键字段值为值。
private List lstDetailTblFields = new ArrayList();
private ArrayList ManTableFields;
private ArrayList ManTableFieldValues;
private ArrayList ManTableFieldNames;
private ArrayList ManTableFieldFieldNames;
private ArrayList ManTableFieldDBTypes;
private ArrayList ManTableChildFields;
private ArrayList DetailTableFields;
private ArrayList DetailTableFieldValues;
private ArrayList DetailFieldIsViews;
private ArrayList DetailTableFieldIds;
private ArrayList DetailTableIds;
private ArrayList DetailTableFieldNames;
private ArrayList DetailFieldDBTypes;
private ArrayList DetailDBFieldNames;
private ArrayList DetailTableChildFields;
private ArrayList Nodes;
private ArrayList NodeNames;
private ArrayList ManUrlList;
private ArrayList ManUrlLinkList;
private ArrayList DetailUrlList;
private ArrayList DetailUrlLinkList;
private ArrayList DetailTableNames;
private ArrayList DetailTableKeys;
private ArrayList SelectItemValues;
private ArrayList SelectItems;
private ArrayList SelectDefaults;
private BrowserComInfo urlcominfo;
private ResourceComInfo resourcecominfo;
private JobTitlesComInfo jobComInfo;
private WorkflowNodeComInfo workflowNodeComInfo;
private ProjectInfoComInfo prjcominfo;
private CustomerInfoComInfo crmcominfo;
private OrganizationShowSetBiz orgShowBiz;
private DepartmentVirtualComInfo deptVirComInfo;
private SubCompanyComInfo subcomcominfo;
private SubCompanyVirtualComInfo subCompVirComInfo;
private DocComInfo docominfo;
private CapitalComInfo capitalcominfo;
private WorkflowRequestComInfo wfrequestcominfo;
private DocReceiveUnitComInfo docReceiveUnitComInfo;
private int Requestid;
private int Isprint;
private String iswfshare;
private User user;
private ArrayList SelectCancelValues;
private BaseBean wfsbean;
private DocComInfo docinf;
private int isfromMobile;
private int printModeId;
private List<Map<String,Object>> nodeMarkContent;
private int layoutNodeid = 0;
private int viewNodeidScope = 0;
private boolean isTableShow = false;//签字意见是否表格显示
private String tableContent = "";//表格内签字意见内容(除去表头和表尾)
private String lastTableContent = "";//多个签字意见放同一个单元格时上一个单元格的tableContent共用同一个表格
private MainSubSignEntity mainSubSignEntity;
private int remarkRequestid;// 签字意见的流程requestid
public FieldInfo() {
ManTableFields = new ArrayList();
ManTableFieldValues = new ArrayList();
ManTableFieldNames = new ArrayList();
ManTableFieldFieldNames = new ArrayList();
ManTableFieldDBTypes = new ArrayList();
DetailTableFields = new ArrayList();
DetailTableFieldValues = new ArrayList();
DetailFieldIsViews = new ArrayList();
DetailTableFieldNames = new ArrayList();
DetailTableFieldIds = new ArrayList();
DetailTableIds = new ArrayList();
DetailFieldDBTypes = new ArrayList();
DetailDBFieldNames = new ArrayList();
ManTableChildFields = new ArrayList();
DetailTableChildFields = new ArrayList();
Nodes = new ArrayList();
NodeNames = new ArrayList();
ManUrlList = new ArrayList();
ManUrlLinkList = new ArrayList();
DetailUrlList = new ArrayList();
DetailUrlLinkList = new ArrayList();
DetailTableNames = new ArrayList();
DetailTableKeys = new ArrayList();
SelectItems = new ArrayList();
SelectItemValues = new ArrayList();
SelectDefaults = new ArrayList();
user = null;
SelectCancelValues = new ArrayList();
workflowNodeComInfo = new WorkflowNodeComInfo();
try {
urlcominfo = new BrowserComInfo();
resourcecominfo = new ResourceComInfo();
jobComInfo = new JobTitlesComInfo();
prjcominfo = new ProjectInfoComInfo();
crmcominfo = new CustomerInfoComInfo();
orgShowBiz = new OrganizationShowSetBiz();
deptVirComInfo = new DepartmentVirtualComInfo();
subcomcominfo = new SubCompanyComInfo();
subCompVirComInfo = new SubCompanyVirtualComInfo();
docominfo = new DocComInfo();
capitalcominfo = new CapitalComInfo();
wfrequestcominfo = new WorkflowRequestComInfo();
docReceiveUnitComInfo = new DocReceiveUnitComInfo();
wfsbean = new BaseBean();
docinf = new DocComInfo();
mainSubSignEntity = new MainSubSignEntity();
} catch (Exception e) {
}
Requestid = 0;
iswfshare = "";
isfromMobile = 0;
}
public void initMainSubCfg(String efieldid) throws Exception{
//新增平行流程意见
if(efieldid.endsWith("_2") || efieldid.endsWith("_3") || efieldid.endsWith("_4")){ //标识是取主子流程意见
String[] arr = efieldid.split("_");
new BaseBean().writeLog("主子流程和平行流程efieldid"+efieldid+" arr:"+JSON.toJSONString(arr));
if(arr.length == 3){
this.mainSubSignEntity.setWfid(Util.getIntValue(arr[0], 0));
this.mainSubSignEntity.setNodeid(Util.getIntValue(arr[1], 0));
this.mainSubSignEntity.setType(Util.getIntValue(arr[2], 0));
}else{
throw new Exception("主子流程节点设置存在异常");
}
}else{
this.mainSubSignEntity.setWfid(0);
this.mainSubSignEntity.setNodeid(0);
this.mainSubSignEntity.setType(0);
}
}
public MainSubSignEntity getMainSubSignEntity() {
return mainSubSignEntity;
}
public int getIsfromMobile() {
return isfromMobile;
}
public void setIsfromMobile(int isfromMobile) {
this.isfromMobile = isfromMobile;
}
public boolean isTableShow() {
return isTableShow;
}
public void setTableShow(boolean tableShow) {
isTableShow = tableShow;
}
public String getTableContent() {
return tableContent;
}
public void setTableContent(String tableContent) {
this.tableContent = tableContent;
}
public String getLastTableContent() {
return lastTableContent;
}
public void setLastTableContent(String lastTableContent) {
this.lastTableContent = lastTableContent;
}
/**
*
*
* @return
*/
public ArrayList getSelectCancelValues() {
return SelectCancelValues;
}
/**
* BaseBean
*
* @return
*/
public BaseBean getWfsbean() {
if (wfsbean == null) {
wfsbean = new BaseBean();
}
return wfsbean;
}
/**
*
*
* @return
*/
public ArrayList getSelectDefaults() {
return SelectDefaults;
}
/**
*
*
* @return
*/
public ArrayList getSelectItemValues() {
return SelectItemValues;
}
/**
*
*
* @return
*/
public ArrayList getSelectItems() {
return SelectItems;
}
/**
*
*
* @return
*/
public ArrayList getDetailTableKeys() {
return DetailTableKeys;
}
/**
*
*
* @return
*/
public ArrayList getDetailTableNames() {
return DetailTableNames;
}
/**
*
*
* @return
*/
public ArrayList getDetailDBFieldNames() {
return DetailDBFieldNames;
}
/**
*
*
* @return
*/
public ArrayList getDetailFieldDBTypes() {
return DetailFieldDBTypes;
}
/**
* ID
*
* @return ID
*/
public ArrayList getDetailTableFieldIds() {
return DetailTableFieldIds;
}
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
/**
* ID
*
* @return ID
*/
public ArrayList getDetailTableIds() {
return DetailTableIds;
}
/**
* ID
*
* @return ID
*/
public int getRequestid() {
return Requestid;
}
/**
* ID
*
* @param requestid ID
*/
public void setRequestid(int requestid) {
Requestid = requestid;
}
/**
*
*
* @param paraValue ID
*/
public void setUser(User paraValue) {
user = paraValue;
}
/**
*
*
* @return
*/
public ArrayList getManTableFieldValues() {
return ManTableFieldValues;
}
/**
*
*
* @return
*/
public ArrayList getDetailTableFieldValues() {
return DetailTableFieldValues;
}
/**
*
*
* @return
*/
public ArrayList getDetailFieldIsViews() {
return DetailFieldIsViews;
}
/**
* BROSWER
*
* @return BROSWER
*/
public ArrayList getManUrlList() {
return ManUrlList;
}
/**
* BROSWER
*
* @return BROSWER
*/
public ArrayList getManUrlLinkList() {
return ManUrlLinkList;
}
/**
* BROSWER
*
* @return BROSWER
*/
public ArrayList getDetailUrlList() {
return DetailUrlList;
}
/**
* BROSWER
*
* @return BROSWER
*/
public ArrayList getDetailUrlLinkList() {
return DetailUrlLinkList;
}
/**
*
*
* @return
*/
public ArrayList getDetailTableFields() {
return DetailTableFields;
}
/**
*
*
* @return
*/
public ArrayList getDetailTableFieldNames() {
return DetailTableFieldNames;
}
/**
*
*
* @return
*/
public ArrayList getNodes() {
return Nodes;
}
/**
*
*
* @return
*/
public ArrayList getNodeNames() {
return NodeNames;
}
/**
*
*
* @return
*/
public ArrayList getManTableFields() {
return ManTableFields;
}
public Map<String, String> getMainFieldValues() {
return mapMainTblFields;
}
public List getDetailFieldValues() {
return lstDetailTblFields;
}
/**
*
*
* @return
*/
public ArrayList getManTableFieldNames() {
return ManTableFieldNames;
}
/**
*
*
* @return
*/
public ArrayList getManTableFieldFieldNames() {
return ManTableFieldFieldNames;
}
/**
*
*
* @return
*/
public ArrayList getManTableFieldDBTypes() {
return ManTableFieldDBTypes;
}
public int getIsprint() {
return Isprint;
}
public void setIsprint(int print) {
Isprint = print;
}
public int getPrintModeId() {
return printModeId;
}
public void setPrintModeId(int printModeId) {
this.printModeId = printModeId;
}
/**
*
*
* @param formid /ID
* @param isbill
* @param languageid
*/
public void GetManTableField(int formid, int isbill, int languageid) {
String linkaddress = "";
String id = "";
String fieldvalue = "";
String type = "";
String fielddbtype = "";
int htmltype = 1;
int childfieldid = 0;
RecordSet rs1 = new RecordSet();
RecordSet rs = new RecordSet();
String sql = "";
String fieldnames = "";
//表单
if (isbill == 0) {
rs.executeSql("select b.id,b.fieldhtmltype,b.type,b.fielddbtype,c.fieldlable,b.fieldname,b.childfieldid from workflow_formfield a,workflow_formdict b,workflow_fieldlable c where a.formid=c.formid and a.fieldid=c.fieldid and c.langurageid=" + languageid + " and a.formid=" + formid + " and a.fieldid=b.id and a.isdetail is null order by a.fieldorder");
List<String> lstFieldIds = new ArrayList<String>();
while (rs.next()) {
fieldvalue = "";
linkaddress = "";
id = rs.getString("id");
type = rs.getString("type");
htmltype = rs.getInt("fieldhtmltype");
fielddbtype = rs.getString("fielddbtype");
String fieldname = rs.getString("fieldname");
childfieldid = Util.getIntValue(rs.getString("childfieldid"), 0);
if (htmltype == 7) {
sql = "select * from workflow_specialfield where fieldid = " + id + " and isform = 1";
rs1.executeSql(sql);
if (rs1.next()) {
if (type.equals("2")) fieldvalue = rs1.getString("descriptivetext");
if (type.equals("1")) fieldvalue = rs1.getString("displayname");
linkaddress = Util.null2String(rs1.getString("linkaddress"));
}
} else {
if (fieldnames.equals("")) {
fieldnames = fieldname;
} else {
fieldnames += "," + fieldname;
}
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
ManUrlList.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
ManUrlList.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
ManUrlList.add(urlcominfo.getBrowserurl(type));
ManUrlLinkList.add(urlcominfo.getLinkurl(type));
} else if (htmltype == 7 && type.equals("1")) {
ManUrlList.add("");
ManUrlLinkList.add(linkaddress);
} else {
ManUrlList.add("");
ManUrlLinkList.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
ManTableFieldValues.add(fieldvalue);
ManTableFields.add("field" + id + "_" + type + "_" + htmltype);
ManTableFieldNames.add(rs.getString("fieldlable"));
ManTableFieldFieldNames.add(fieldname);
ManTableFieldDBTypes.add(fielddbtype);
ManTableChildFields.add("" + childfieldid);
lstFieldIds.add(id);
}
if (Requestid > 0 && !fieldnames.equals("")) {
sql = "select " + fieldnames + " from workflow_form where Requestid=" + Requestid;
rs1.executeSql(sql);
String[] colnames = rs1.getColumnName();
if (rs1.next()) {
for (int i = 0; i < colnames.length; i++) {
//int indx=ManTableFieldFieldNames.indexOf(colnames[i]);
int indx = Util.getListIndex(ManTableFieldFieldNames, colnames[i]);
if (indx > -1) {
fieldvalue = rs1.getString(colnames[i]);
ManTableFieldValues.set(indx, fieldvalue);
String fieldID = lstFieldIds.get(indx);
mapMainTblFields.put(fieldID, fieldvalue);
}
}
}
}
}
//单据
if (isbill == 1) {
rs.executeSql("select id,labelname,fieldhtmltype,type,fielddbtype,fieldname,childfieldid from workflow_billfield,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and viewtype=0 order by dsporder");
List<String> lstFieldIds = new ArrayList<String>();
while (rs.next()) {
fieldvalue = "";
linkaddress = "";
id = rs.getString("id");
type = rs.getString("type");
fielddbtype = rs.getString("fielddbtype");
htmltype = rs.getInt("fieldhtmltype");
String fieldname = rs.getString("fieldname");
childfieldid = Util.getIntValue(rs.getString("childfieldid"), 0);
if (htmltype == 7) {
sql = "select * from workflow_specialfield where fieldid = " + id + " and isbill = 1";
rs1.executeSql(sql);
if (rs1.next()) {
if (type.equals("2")) fieldvalue = rs1.getString("descriptivetext");
if (type.equals("1")) fieldvalue = rs1.getString("displayname");
linkaddress = Util.null2String(rs1.getString("linkaddress"));
}
} else {
if (fieldnames.equals("")) {
fieldnames = fieldname;
} else {
fieldnames += "," + fieldname;
}
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
ManUrlList.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
ManUrlList.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
ManUrlList.add(urlcominfo.getBrowserurl(type));
ManUrlLinkList.add(urlcominfo.getLinkurl(type));
} else if (htmltype == 7 && type.equals("1")) {
ManUrlList.add("");
ManUrlLinkList.add(linkaddress);
} else {
ManUrlList.add("");
ManUrlLinkList.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
ManTableFieldValues.add(fieldvalue);
ManTableFields.add("field" + id + "_" + type + "_" + htmltype);
ManTableFieldNames.add(rs.getString("labelname"));
ManTableFieldFieldNames.add(fieldname);
ManTableFieldDBTypes.add(fielddbtype);
ManTableChildFields.add("" + childfieldid);
lstFieldIds.add(id);
}
if (Requestid > 0) {
String tablename = "";
sql = "select tablename from workflow_bill where id=" + formid;
rs1.executeSql(sql);
if (rs1.next()) {
tablename = rs1.getString("tablename");
sql = "select " + fieldnames + " from " + tablename + " where requestid = " + Requestid;
rs1.executeSql(sql);
String[] colnames = rs1.getColumnName();
if (rs1.next()) {
for (int i = 0; i < colnames.length; i++) {
//int indx = ManTableFieldFieldNames.indexOf(colnames[i]);
//Linux+Oarcle下colnames[i]全大写
int indx = Util.getListIndex(ManTableFieldFieldNames, colnames[i]);
if (indx > -1) {
fieldvalue = rs1.getString(colnames[i]);
ManTableFieldValues.set(indx, fieldvalue);
String fieldID = lstFieldIds.get(indx);
mapMainTblFields.put(fieldID, fieldvalue);
}
}
}
}
}
}
}
/**
*
*
* @param formid /ID
* @param isbill
* @param languageid
*/
public void GetDetailTableField(int formid, int isbill, int languageid){
GetDetailTableField(formid, isbill, languageid, false);
}
/**
*
* @param formid
* @param isbill
* @param languageid
*/
public void getDetailTableFieldWithSort(int formid, int isbill, int languageid,String workflowId,String nodeId){
getDetailTableFieldWithSort(formid, isbill, languageid, false,workflowId,nodeId);
}
/**
*
* @param formid
* @param isbill
* @param languageid
*/
public void getDetailTableFieldWithSort(int formid, int isbill, int languageid, boolean buildEmptyDetail,String workflowid,String nodeid) {
DetailOrderManager detailOrderManager = new DetailOrderManager();
RecordSet rs1 = new RecordSet();
RecordSet rs = new RecordSet();
String id = "";
String type = "";
int htmltype = 1;
String fieldvalue = "";
String fielddbtype = "";
String isview = "";
int childfieldid = 0;
RecordSet rs2 = new RecordSet();
String sql = "";
WFLinkInfo wfinf = new WFLinkInfo();
int userid = 0;
int logintype = 1;
if (user != null) {
userid = user.getUID();
logintype = Util.getIntValue(user.getLogintype(), 1);
}
int currentnodeid = wfinf.getCurrentNodeid(Requestid, userid, logintype);
//表单
if (isbill == 0) {
int groupId =1;
rs2.execute("select distinct groupId from workflow_formfield where formid=" + formid + " and isdetail='1' order by groupId");
while (rs2.next()) {
String orderSql = detailOrderManager.getOrderSql(workflowid, nodeid, formid+"", isbill+"", String.valueOf(languageid), groupId + "", " ", "b","id");
ArrayList detailfieldtypes = new ArrayList();
ArrayList detaildbfnames = new ArrayList();
ArrayList detailfields = new ArrayList();
ArrayList detialfieldnames = new ArrayList();
ArrayList detailurls = new ArrayList();
ArrayList detailurllinks = new ArrayList();
ArrayList detailfieldvalues = new ArrayList();
ArrayList detailfieldids = new ArrayList();
ArrayList detailids = new ArrayList();
ArrayList detailisviews = new ArrayList();
ArrayList detailchildfieldids = new ArrayList();
rs.executeSql("select b.id from Workflow_formdetail b where b.Requestid=" + Requestid + " and b.groupId=" + rs2.getInt(1) + " order by " + orderSql);
while (rs.next()) {
detailids.add(rs.getString("id"));
}
String fieldnames = "";
rs.executeSql("select b.id,b.fieldhtmltype,c.fieldlable,b.type,b.fieldname,b.fielddbtype,b.childfieldid from workflow_formfield a,workflow_formdictdetail b,workflow_fieldlable c where a.formid=c.formid and a.fieldid=c.fieldid and c.langurageid=" + languageid + " and a.formid=" + formid + " and a.groupId=" + rs2.getInt(1) + " and a.fieldid=b.id and a.isdetail='1' order by a.fieldorder");
while (rs.next()) {
id = rs.getString("id");
type = rs.getString("type");
htmltype = rs.getInt("fieldhtmltype");
String fieldname = rs.getString("fieldname");
fielddbtype = rs.getString("fielddbtype");
childfieldid = Util.getIntValue(rs.getString("childfieldid"), 0);
sql = "select isview from workflow_modeview where nodeid=" + currentnodeid + " and formid=" + formid + " and isbill=0 and fieldid=" + id;
rs1.execute(sql);
if (rs1.next() && rs1.getInt("isview") == 1) {
isview = "1";
} else {
isview = "";
}
if (fieldnames.equals("")) {
fieldnames = "b." + fieldname;
} else {
fieldnames += "," + "b." + fieldname;
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
detailurls.add(urlcominfo.getBrowserurl(type));
detailurllinks.add(urlcominfo.getLinkurl(type));
} else {
detailurls.add("");
detailurllinks.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
detailfieldids.add(new ArrayList());
detailfieldvalues.add(new ArrayList());
detailfieldtypes.add(fielddbtype);
detaildbfnames.add(fieldname);
detailisviews.add(isview);
detailfields.add("field" + id + "_0_" + type + "_" + htmltype);
detialfieldnames.add(rs.getString("fieldlable"));
detailchildfieldids.add("" + childfieldid);
}
if (Requestid > 0) {
sql = "select " + fieldnames + " from Workflow_formdetail b where b.Requestid=" + Requestid + " and b.groupId=" + rs2.getInt(1) + " order by " + orderSql;
rs1.executeSql(sql);
String[] colnames = rs1.getColumnName();
for (int k = 0; k < colnames.length; k++) {
int indx = Util.getListIndex(detaildbfnames, colnames[k]);
if (indx > -1) {
ArrayList detailvalues = new ArrayList();
ArrayList detailfieldid = new ArrayList();
String detailfield = (String) detailfields.get(indx);
rs1.beforFirst();
int i = 0;
while (rs1.next()) {
fieldvalue = rs1.getString(colnames[k]);
detailvalues.add(fieldvalue);
detailfieldid.add(Util.StringReplaceOnce(detailfield, "_0_", "_" + i + "_"));
i++;
}
detailfieldids.set(indx, detailfieldid);
detailfieldvalues.set(indx, detailvalues);
}
}
}
if (detailfields.size() > 0) {
DetailTableFields.add(detailfields);
DetailTableFieldValues.add(detailfieldvalues);
DetailTableFieldNames.add(detialfieldnames);
DetailTableFieldIds.add(detailfieldids);
DetailFieldIsViews.add(detailisviews);
DetailTableIds.add(detailids);
DetailUrlList.add(detailurls);
DetailUrlLinkList.add(detailurllinks);
DetailFieldDBTypes.add(detailfieldtypes);
DetailDBFieldNames.add(detaildbfnames);
DetailTableChildFields.add(detailchildfieldids);
}
groupId ++;
}
}
//单据
if (isbill == 1) {
String detailtable = "";
String maintable = "";
String keyfield = "";
String tempdetailtable = "";
rs.executeSql(" select tablename,detailkeyfield,detailtablename from Workflow_bill where id=" + formid);
if (rs.next()) {
maintable = rs.getString("tablename");
keyfield = rs.getString("detailkeyfield");
tempdetailtable = rs.getString("detailtablename");
if (keyfield == null || keyfield.trim().equals("")) {
keyfield = "mainid";
}
}
if (maintable != null && !maintable.trim().equals("")) {
ArrayList detailtablelist = new ArrayList();
String detailtables = "";
rs1.executeSql("select detailtable from workflow_billfield where billid=" + formid + " and viewtype=1 group by detailtable");
while (rs1.next()) {
String detailtemp = rs1.getString("detailtable");
if (detailtables.equals("")) {
if (detailtemp == null || detailtemp.trim().equals("")) {
detailtables = "null,''";
} else {
detailtables = "'" + detailtemp + "'";
}
} else {
if (detailtemp == null || detailtemp.trim().equals("")) {
detailtables += ",null,''";
} else {
detailtables += ",'" + detailtemp + "'";
}
}
}
if (detailtables.length() > 0) {
String emptySqlStr = buildEmptyDetail ? "" : " and tablename in(" + detailtables + ")";
rs1.executeSql("select tablename from WORKFLOW_BILLDETAILTABLE where billid=" + formid + " "+emptySqlStr+" order by orderid");
while (rs1.next()) {
detailtablelist.add(rs1.getString("tablename"));
}
}
if (detailtablelist.size() < 1 && tempdetailtable.length() > 0) {
detailtablelist.add("");
}
int groupId = 1;
for (int deno = 0; deno < detailtablelist.size(); deno++) {
String fieldnames = "";
detailtable = (String) detailtablelist.get(deno);
if (detailtable == null || detailtable.trim().equals("")) {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and (detailtable is null or detailtable='" + detailtable + "') and viewtype=1 order by dsporder";
detailtable = tempdetailtable;
} else {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and detailtable='" + detailtable + "' and viewtype=1 order by dsporder";
}
String orderSql = detailOrderManager.getOrderSql(workflowid, nodeid, formid+"", isbill+"", String.valueOf(languageid), groupId + "", detailtable, "b","id");
ArrayList detailfieldtypes = new ArrayList();
ArrayList detaildbfnames = new ArrayList();
ArrayList detailfields = new ArrayList();
ArrayList detialfieldnames = new ArrayList();
ArrayList detailurls = new ArrayList();
ArrayList detailurllinks = new ArrayList();
ArrayList detailfieldvalues = new ArrayList();
ArrayList detailisviews = new ArrayList();
ArrayList detailfieldids = new ArrayList();
ArrayList detailids = new ArrayList();
ArrayList detailchildfieldids = new ArrayList();
/* if (formid == 201) {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield ,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and viewtype=1 order by dsporder";
}*/
rs.executeSql(sql);
while (rs.next()) {
id = rs.getString("id");
type = rs.getString("type");
htmltype = rs.getInt("fieldhtmltype");
String fieldname = rs.getString("fieldname");
fielddbtype = rs.getString("fielddbtype");
childfieldid = Util.getIntValue(rs.getString("childfieldid"), 0);
sql = "select isview from workflow_modeview where nodeid=" + currentnodeid + " and formid=" + formid + " and isbill=1 and fieldid=" + id;
rs1.execute(sql);
if (rs1.next() && rs1.getInt("isview") == 1) {
isview = "1";
} else {
isview = "";
}
if (fieldnames.equals("")) {
fieldnames = "b." + fieldname;
} else {
fieldnames += ",b." + fieldname;
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
detailurls.add(urlcominfo.getBrowserurl(type));
detailurllinks.add(urlcominfo.getLinkurl(type));
} else {
detailurls.add("");
detailurllinks.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
detailfieldids.add(new ArrayList());
detailfieldvalues.add(new ArrayList());
detailfieldtypes.add(fielddbtype);
detaildbfnames.add(fieldname);
detailisviews.add(isview);
detailfields.add("field" + id + "_0_" + type + "_" + htmltype);
detialfieldnames.add(rs.getString("labelname"));
detailchildfieldids.add("" + childfieldid);
}
if (Requestid > 0) {
String detailid = "";
if (formid == 156 || formid == 157 || formid == 158 || formid == 159) {
detailid = "dsporder";
sql = "select b.dsporder";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.dsporder";
} else if (formid == 7 || formid == 14 || formid == 18 || formid == 19 || formid == 201) {//费用报销单。 资产调拨单据
detailid = "id";
sql = "select b.* from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.id";
/*if (formid == 201) {
sql = "select b.* from bill_Discard_Detail b,bill_Discard a where a.requestid=b.detailrequestid and a.requestid=" + Requestid + " order by b.id ";
}*/
} else if ((maintable.indexOf("formtable_main_") == 0 || maintable.indexOf("uf_") == 0)
&& (detailtable.indexOf("formtable_main_") == 0 || detailtable.indexOf("uf_") == 0)) {//新表单formid<0,所以与上面的不会冲突。
detailid = "id";
sql = "select b.id";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by " + orderSql;
} else if (formid < 0) { //数据中心模块创建的明细报表
detailid = "inputid";
sql = "select b.inputid";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.inputid";
} else {
detailid = "id";
sql = "select b.* from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid;
}
rs1.executeSql(sql);
String[] colnames = rs1.getColumnName();
for (int k = 0; k < colnames.length; k++) {
if (detailid.equalsIgnoreCase(colnames[k])) {
rs1.beforFirst();
while (rs1.next()) {
fieldvalue = rs1.getString(colnames[k]);
detailids.add(fieldvalue);
}
} else {
//int indx = detaildbfnames.indexOf(colnames[k]);
int indx = Util.getListIndex(detaildbfnames, colnames[k]);
if (indx > -1) {
ArrayList detailvalues = new ArrayList();
ArrayList detailfieldid = new ArrayList();
String detailfield = (String) detailfields.get(indx);
rs1.beforFirst();
int i = 0;
while (rs1.next()) {
fieldvalue = rs1.getString(colnames[k]);
detailvalues.add(fieldvalue);
detailfieldid.add(Util.StringReplaceOnce(detailfield, "_0_", "_" + i + "_"));
i++;
}
detailfieldids.set(indx, detailfieldid);
detailfieldvalues.set(indx, detailvalues);
}
}
}
}
if (detailfields.size() > 0 || buildEmptyDetail) {
DetailTableFields.add(detailfields);
DetailTableFieldValues.add(detailfieldvalues);
DetailTableFieldNames.add(detialfieldnames);
DetailTableFieldIds.add(detailfieldids);
DetailFieldIsViews.add(detailisviews);
DetailTableIds.add(detailids);
DetailUrlList.add(detailurls);
DetailUrlLinkList.add(detailurllinks);
DetailFieldDBTypes.add(detailfieldtypes);
DetailDBFieldNames.add(detaildbfnames);
DetailTableNames.add(detailtable);
DetailTableKeys.add(keyfield);
DetailTableChildFields.add(detailchildfieldids);
}
groupId ++;
}
}
}
}
public void GetDetailTableField(int formid, int isbill, int languageid, boolean buildEmptyDetail) {
RecordSet rs1 = new RecordSet();
RecordSet rs = new RecordSet();
String id = "";
String type = "";
int htmltype = 1;
String fieldvalue = "";
String fielddbtype = "";
String isview = "";
int childfieldid = 0;
RecordSet rs2 = new RecordSet();
String sql = "";
WFLinkInfo wfinf = new WFLinkInfo();
int userid = 0;
int logintype = 1;
if (user != null) {
userid = user.getUID();
logintype = Util.getIntValue(user.getLogintype(), 1);
}
int currentnodeid = wfinf.getCurrentNodeid(Requestid, userid, logintype);
//表单
if (isbill == 0) {
rs2.execute("select distinct groupId from workflow_formfield where formid=" + formid + " and isdetail='1' order by groupId");
while (rs2.next()) {
ArrayList detailfieldtypes = new ArrayList();
ArrayList detaildbfnames = new ArrayList();
ArrayList detailfields = new ArrayList();
ArrayList detialfieldnames = new ArrayList();
ArrayList detailurls = new ArrayList();
ArrayList detailurllinks = new ArrayList();
ArrayList detailfieldvalues = new ArrayList();
ArrayList detailfieldids = new ArrayList();
ArrayList detailids = new ArrayList();
ArrayList detailisviews = new ArrayList();
ArrayList detailchildfieldids = new ArrayList();
rs.executeSql("select id from Workflow_formdetail where Requestid=" + Requestid + " and groupId=" + rs2.getInt(1) + " order by id");
while (rs.next()) {
detailids.add(rs.getString("id"));
}
String fieldnames = "";
rs.executeSql("select b.id,b.fieldhtmltype,c.fieldlable,b.type,b.fieldname,b.fielddbtype,b.childfieldid from workflow_formfield a,workflow_formdictdetail b,workflow_fieldlable c where a.formid=c.formid and a.fieldid=c.fieldid and c.langurageid=" + languageid + " and a.formid=" + formid + " and a.groupId=" + rs2.getInt(1) + " and a.fieldid=b.id and a.isdetail='1' order by a.fieldorder");
while (rs.next()) {
id = rs.getString("id");
type = rs.getString("type");
htmltype = rs.getInt("fieldhtmltype");
String fieldname = rs.getString("fieldname");
fielddbtype = rs.getString("fielddbtype");
childfieldid = Util.getIntValue(rs.getString("childfieldid"), 0);
sql = "select isview from workflow_modeview where nodeid=" + currentnodeid + " and formid=" + formid + " and isbill=0 and fieldid=" + id;
rs1.execute(sql);
if (rs1.next() && rs1.getInt("isview") == 1) {
isview = "1";
} else {
isview = "";
}
if (fieldnames.equals("")) {
fieldnames = fieldname;
} else {
fieldnames += "," + fieldname;
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
detailurls.add(urlcominfo.getBrowserurl(type));
detailurllinks.add(urlcominfo.getLinkurl(type));
} else {
detailurls.add("");
detailurllinks.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
detailfieldids.add(new ArrayList());
detailfieldvalues.add(new ArrayList());
detailfieldtypes.add(fielddbtype);
detaildbfnames.add(fieldname);
detailisviews.add(isview);
detailfields.add("field" + id + "_0_" + type + "_" + htmltype);
detialfieldnames.add(rs.getString("fieldlable"));
detailchildfieldids.add("" + childfieldid);
}
if (Requestid > 0) {
sql = "select " + fieldnames + " from Workflow_formdetail where Requestid=" + Requestid + " and groupId=" + rs2.getInt(1) + " order by id";
rs1.executeSql(sql);
String[] colnames = rs1.getColumnName();
for (int k = 0; k < colnames.length; k++) {
int indx = Util.getListIndex(detaildbfnames, colnames[k]);
if (indx > -1) {
ArrayList detailvalues = new ArrayList();
ArrayList detailfieldid = new ArrayList();
String detailfield = (String) detailfields.get(indx);
rs1.beforFirst();
int i = 0;
while (rs1.next()) {
fieldvalue = rs1.getString(colnames[k]);
detailvalues.add(fieldvalue);
detailfieldid.add(Util.StringReplaceOnce(detailfield, "_0_", "_" + i + "_"));
i++;
}
detailfieldids.set(indx, detailfieldid);
detailfieldvalues.set(indx, detailvalues);
}
}
}
if (detailfields.size() > 0) {
DetailTableFields.add(detailfields);
DetailTableFieldValues.add(detailfieldvalues);
DetailTableFieldNames.add(detialfieldnames);
DetailTableFieldIds.add(detailfieldids);
DetailFieldIsViews.add(detailisviews);
DetailTableIds.add(detailids);
DetailUrlList.add(detailurls);
DetailUrlLinkList.add(detailurllinks);
DetailFieldDBTypes.add(detailfieldtypes);
DetailDBFieldNames.add(detaildbfnames);
DetailTableChildFields.add(detailchildfieldids);
}
}
}
//单据
if (isbill == 1) {
String detailtable = "";
String maintable = "";
String keyfield = "";
String tempdetailtable = "";
rs.executeSql(" select tablename,detailkeyfield,detailtablename from Workflow_bill where id=" + formid);
if (rs.next()) {
maintable = rs.getString("tablename");
keyfield = rs.getString("detailkeyfield");
tempdetailtable = rs.getString("detailtablename");
if (keyfield == null || keyfield.trim().equals("")) {
keyfield = "mainid";
}
}
if (maintable != null && !maintable.trim().equals("")) {
ArrayList detailtablelist = new ArrayList();
String detailtables = "";
rs1.executeSql("select detailtable from workflow_billfield where billid=" + formid + " and viewtype=1 group by detailtable");
while (rs1.next()) {
String detailtemp = rs1.getString("detailtable");
if (detailtables.equals("")) {
if (detailtemp == null || detailtemp.trim().equals("")) {
detailtables = "null,''";
} else {
detailtables = "'" + detailtemp + "'";
}
} else {
if (detailtemp == null || detailtemp.trim().equals("")) {
detailtables += ",null,''";
} else {
detailtables += ",'" + detailtemp + "'";
}
}
}
if (detailtables.length() > 0) {
String emptySqlStr = buildEmptyDetail ? "" : " and tablename in(" + detailtables + ")";
rs1.executeSql("select tablename from WORKFLOW_BILLDETAILTABLE where billid=" + formid + " "+emptySqlStr+" order by orderid");
while (rs1.next()) {
detailtablelist.add(rs1.getString("tablename"));
}
}
if (detailtablelist.size() < 1 && tempdetailtable.length() > 0) {
detailtablelist.add("");
}
for (int deno = 0; deno < detailtablelist.size(); deno++) {
String fieldnames = "";
detailtable = (String) detailtablelist.get(deno);
if (detailtable == null || detailtable.trim().equals("")) {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and (detailtable is null or detailtable='" + detailtable + "') and viewtype=1 order by dsporder";
detailtable = tempdetailtable;
} else {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and detailtable='" + detailtable + "' and viewtype=1 order by dsporder";
}
ArrayList detailfieldtypes = new ArrayList();
ArrayList detaildbfnames = new ArrayList();
ArrayList detailfields = new ArrayList();
ArrayList detialfieldnames = new ArrayList();
ArrayList detailurls = new ArrayList();
ArrayList detailurllinks = new ArrayList();
ArrayList detailfieldvalues = new ArrayList();
ArrayList detailisviews = new ArrayList();
ArrayList detailfieldids = new ArrayList();
ArrayList detailids = new ArrayList();
ArrayList detailchildfieldids = new ArrayList();
/* if (formid == 201) {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield ,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and viewtype=1 order by dsporder";
}*/
rs.executeSql(sql);
while (rs.next()) {
id = rs.getString("id");
type = rs.getString("type");
htmltype = rs.getInt("fieldhtmltype");
String fieldname = rs.getString("fieldname");
fielddbtype = rs.getString("fielddbtype");
childfieldid = Util.getIntValue(rs.getString("childfieldid"), 0);
sql = "select isview from workflow_modeview where nodeid=" + currentnodeid + " and formid=" + formid + " and isbill=1 and fieldid=" + id;
rs1.execute(sql);
if (rs1.next() && rs1.getInt("isview") == 1) {
isview = "1";
} else {
isview = "";
}
if (fieldnames.equals("")) {
fieldnames = "b." + fieldname;
} else {
fieldnames += ",b." + fieldname;
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
detailurls.add(urlcominfo.getBrowserurl(type));
detailurllinks.add(urlcominfo.getLinkurl(type));
} else {
detailurls.add("");
detailurllinks.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
detailfieldids.add(new ArrayList());
detailfieldvalues.add(new ArrayList());
detailfieldtypes.add(fielddbtype);
detaildbfnames.add(fieldname);
detailisviews.add(isview);
detailfields.add("field" + id + "_0_" + type + "_" + htmltype);
detialfieldnames.add(rs.getString("labelname"));
detailchildfieldids.add("" + childfieldid);
}
if (Requestid > 0) {
String detailid = "";
if (formid == 156 || formid == 157 || formid == 158 || formid == 159) {
detailid = "dsporder";
sql = "select b.dsporder";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.dsporder";
} else if (formid == 7 || formid == 14 || formid == 18 || formid == 19 || formid == 201) {//费用报销单。 资产调拨单据
detailid = "id";
sql = "select b.* from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.id";
/*if (formid == 201) {
sql = "select b.* from bill_Discard_Detail b,bill_Discard a where a.requestid=b.detailrequestid and a.requestid=" + Requestid + " order by b.id ";
}*/
} else if ((maintable.indexOf("formtable_main_") == 0 || maintable.indexOf("uf_") == 0)
&& (detailtable.indexOf("formtable_main_") == 0 || detailtable.indexOf("uf_") == 0)) {//新表单formid<0,所以与上面的不会冲突。
detailid = "id";
sql = "select b.id";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.id";
} else if (formid < 0) { //数据中心模块创建的明细报表
detailid = "inputid";
sql = "select b.inputid";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.inputid";
} else {
detailid = "id";
sql = "select b.* from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid;
}
rs1.executeSql(sql);
String[] colnames = rs1.getColumnName();
for (int k = 0; k < colnames.length; k++) {
if (detailid.equalsIgnoreCase(colnames[k])) {
rs1.beforFirst();
while (rs1.next()) {
fieldvalue = rs1.getString(colnames[k]);
detailids.add(fieldvalue);
}
} else {
//int indx = detaildbfnames.indexOf(colnames[k]);
int indx = Util.getListIndex(detaildbfnames, colnames[k]);
if (indx > -1) {
ArrayList detailvalues = new ArrayList();
ArrayList detailfieldid = new ArrayList();
String detailfield = (String) detailfields.get(indx);
rs1.beforFirst();
int i = 0;
while (rs1.next()) {
fieldvalue = rs1.getString(colnames[k]);
detailvalues.add(fieldvalue);
detailfieldid.add(Util.StringReplaceOnce(detailfield, "_0_", "_" + i + "_"));
i++;
}
detailfieldids.set(indx, detailfieldid);
detailfieldvalues.set(indx, detailvalues);
}
}
}
}
if (detailfields.size() > 0 || buildEmptyDetail) {
DetailTableFields.add(detailfields);
DetailTableFieldValues.add(detailfieldvalues);
DetailTableFieldNames.add(detialfieldnames);
DetailTableFieldIds.add(detailfieldids);
DetailFieldIsViews.add(detailisviews);
DetailTableIds.add(detailids);
DetailUrlList.add(detailurls);
DetailUrlLinkList.add(detailurllinks);
DetailFieldDBTypes.add(detailfieldtypes);
DetailDBFieldNames.add(detaildbfnames);
DetailTableNames.add(detailtable);
DetailTableKeys.add(keyfield);
DetailTableChildFields.add(detailchildfieldids);
}
}
}
}
}
/**
*
*
* @param formid /ID
* @param isbill
* @param languageid
*/
public void GetDetailTblFields(int formid, int isbill, int languageid){
this.GetDetailTblFields(formid, isbill, languageid, true, false);
}
public void GetDetailTblFields(int formid, int isbill, int languageid, boolean isAutoDecrypt, boolean isReturnDecryptData) {
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
RecordSet rs = new RecordSet();
String id = "";
String type = "";
int htmltype = 1;
String fieldvalue = "";
String fielddbtype = "";
String sql = "";
//表单
if (isbill == 0) {
rs2.execute("select distinct groupId from workflow_formfield where formid=" + formid + " and isdetail='1' order by groupId");
while (rs2.next()) {
ArrayList detaildbfnames = new ArrayList();
ArrayList detailfields = new ArrayList();
ArrayList detailurls = new ArrayList();
ArrayList detailurllinks = new ArrayList();
ArrayList detailids = new ArrayList();
List tmpDetailValues = new ArrayList();
List<String> lstFieldIds = new ArrayList<String>();
rs.executeSql("select id from Workflow_formdetail where Requestid=" + Requestid + " and groupId=" + rs2.getInt(1) + " order by id");
while (rs.next()) {
detailids.add(rs.getString("id"));
}
String fieldnames = "";
rs.executeSql("select b.id,b.fieldhtmltype,c.fieldlable,b.type,b.fieldname,b.fielddbtype,b.childfieldid from workflow_formfield a,workflow_formdictdetail b,workflow_fieldlable c where a.formid=c.formid and a.fieldid=c.fieldid and c.langurageid=" + languageid + " and a.formid=" + formid + " and a.groupId=" + rs2.getInt(1) + " and a.fieldid=b.id and a.isdetail='1' order by a.fieldorder");
while (rs.next()) {
id = rs.getString("id");
type = rs.getString("type");
htmltype = rs.getInt("fieldhtmltype");
String fieldname = rs.getString("fieldname");
fielddbtype = rs.getString("fielddbtype");
if (fieldnames.equals("")) {
fieldnames = fieldname;
} else {
fieldnames += "," + fieldname;
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
detailurls.add(urlcominfo.getBrowserurl(type));
detailurllinks.add(urlcominfo.getLinkurl(type));
} else {
detailurls.add("");
detailurllinks.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
detaildbfnames.add(fieldname);
detailfields.add("field" + id + "_0_" + type + "_" + htmltype);
lstFieldIds.add(id);
}
if (Requestid > 0) {
sql = "select " + fieldnames + " from Workflow_formdetail where Requestid=" + Requestid + " and groupId=" + rs2.getInt(1) + " order by id";
rs1.executeSql(sql);
String[] colNames = rs1.getColumnName();
while (rs1.next()) {
Map<String, String> mapDetailField = new HashMap<String, String>();
for (String colName : colNames) {
int indx = Util.getListIndex(detaildbfnames, colName);
if (indx > -1) {
fieldvalue = Util.null2String(rs1.getString(colName));
String fieldID = lstFieldIds.get(indx);
mapDetailField.put(fieldID, fieldvalue);
}
}
tmpDetailValues.add(mapDetailField);
}
}
if (detailfields.size() > 0) {
DetailTableFields.add(detailfields);
DetailTableIds.add(detailids);
DetailUrlList.add(detailurls);
DetailUrlLinkList.add(detailurllinks);
DetailDBFieldNames.add(detaildbfnames);
lstDetailTblFields.add(tmpDetailValues);
}
}
}
//单据
if (isbill == 1) {
String detailtable = "";
String maintable = "";
String keyfield = "";
String tempdetailtable = "";
rs.executeSql(" select tablename,detailkeyfield,detailtablename from Workflow_bill where id=" + formid);
if (rs.next()) {
maintable = rs.getString("tablename");
keyfield = rs.getString("detailkeyfield");
tempdetailtable = rs.getString("detailtablename");
if (keyfield == null || keyfield.trim().equals("")) {
keyfield = "mainid";
}
}
if (maintable != null && !maintable.trim().equals("")) {
ArrayList detailtablelist = new ArrayList();
String detailtables = "";
rs1.executeSql("select detailtable from workflow_billfield where billid=" + formid + " and viewtype=1 group by detailtable");
while (rs1.next()) {
String detailtemp = rs1.getString("detailtable");
if (detailtables.equals("")) {
if (detailtemp == null || detailtemp.trim().equals("")) {
detailtables = "null,''";
} else {
detailtables = "'" + detailtemp + "'";
}
} else {
if (detailtemp == null || detailtemp.trim().equals("")) {
detailtables += ",null,''";
} else {
detailtables += ",'" + detailtemp + "'";
}
}
}
if (detailtables.length() > 0) {
rs1.executeSql("select tablename from WORKFLOW_BILLDETAILTABLE where billid=" + formid + " and tablename in(" + detailtables + ") order by orderid");
while (rs1.next()) {
detailtablelist.add(rs1.getString("tablename"));
}
}
if (detailtablelist.size() < 1 && tempdetailtable.length() > 0) {
detailtablelist.add("");
}
for (int deno = 0; deno < detailtablelist.size(); deno++) {
String fieldnames = "";
detailtable = (String) detailtablelist.get(deno);
if (detailtable == null || detailtable.trim().equals("")) {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and (detailtable is null or detailtable='" + detailtable + "') and viewtype=1 order by dsporder";
detailtable = tempdetailtable;
} else {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and detailtable='" + detailtable + "' and viewtype=1 order by dsporder";
}
ArrayList detaildbfnames = new ArrayList();
ArrayList detailfields = new ArrayList();
ArrayList detailurls = new ArrayList();
ArrayList detailurllinks = new ArrayList();
ArrayList detailids = new ArrayList();
List tmpDetailValues = new ArrayList();
List<String> lstFieldIds = new ArrayList<String>();
rs.executeSql(sql);
while (rs.next()) {
id = rs.getString("id");
type = rs.getString("type");
htmltype = rs.getInt("fieldhtmltype");
String fieldname = rs.getString("fieldname");
fielddbtype = rs.getString("fielddbtype");
if (fieldnames.equals("")) {
fieldnames = "b." + fieldname;
} else {
fieldnames += ",b." + fieldname;
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
detailurls.add(urlcominfo.getBrowserurl(type));
detailurllinks.add(urlcominfo.getLinkurl(type));
} else {
detailurls.add("");
detailurllinks.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
detaildbfnames.add(fieldname);
detailfields.add("field" + id + "_0_" + type + "_" + htmltype);
lstFieldIds.add(id);
}
if (Requestid > 0) {
String detailid = "";
if (formid == 156 || formid == 157 || formid == 158 || formid == 159) {
detailid = "dsporder";
sql = "select b.dsporder";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.dsporder";
} else if (formid == 7 || formid == 14 || formid == 18) {//费用报销单。 资产调拨单据
detailid = "id";
sql = "select b.* from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.id";
} else if ((maintable.indexOf("formtable_main_") == 0 || maintable.indexOf("uf_") == 0)
&& (detailtable.indexOf("formtable_main_") == 0 || detailtable.indexOf("uf_") == 0)) {//新表单formid<0,所以与上面的不会冲突。
detailid = "id";
sql = "select b.id";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.id";
} else if (formid < 0) { //数据中心模块创建的明细报表
detailid = "inputid";
sql = "select b.inputid";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.inputid";
} else {
detailid = "id";
sql = "select b.* from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid;
}
rs1.executeSql(sql);
String[] colNames = rs1.getColumnName();
while (rs1.next()) {
Map<String, String> mapDetailField = new HashMap<String, String>();
for (String colName : colNames) {
if (detailid.equalsIgnoreCase(colName)) {
fieldvalue = rs1.getString(colName);
detailids.add(fieldvalue);
} else {
int indx = Util.getListIndex(detaildbfnames, colName);
if (indx > -1) {
String fieldID = lstFieldIds.get(indx);
fieldvalue = Util.null2String(rs1.getString(detailtable, colName, isAutoDecrypt, isReturnDecryptData));
mapDetailField.put(fieldID, fieldvalue);
}
}
}
tmpDetailValues.add(mapDetailField);
}
}
if (detailfields.size() > 0) {
DetailTableFields.add(detailfields);
DetailTableIds.add(detailids);
DetailUrlList.add(detailurls);
DetailUrlLinkList.add(detailurllinks);
DetailDBFieldNames.add(detaildbfnames);
DetailTableNames.add(detailtable);
DetailTableKeys.add(keyfield);
lstDetailTblFields.add(tmpDetailValues);
}
}
}
}
}
/**
*
* @param formid
* @param isbill
* @param languageid
* @param isAutoDecrypt
* @param isReturnDecryptData
*/
public void GetDetailTblFieldsWithSort(int formid, int isbill, int languageid, boolean isAutoDecrypt, boolean isReturnDecryptData,String workflowId,String nodeId) {
DetailOrderManager detailOrderManager = new DetailOrderManager();
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
RecordSet rs = new RecordSet();
String id = "";
String type = "";
int htmltype = 1;
String fieldvalue = "";
String fielddbtype = "";
String sql = "";
//表单
if (isbill == 0) {
int groupId =1;
rs2.execute("select distinct groupId from workflow_formfield where formid=" + formid + " and isdetail='1' order by groupId");
while (rs2.next()) {
String orderSql = detailOrderManager.getOrderSql(workflowId, nodeId, formid+"", isbill+"", String.valueOf(languageid), groupId + "", " ", "b","id");
ArrayList detaildbfnames = new ArrayList();
ArrayList detailfields = new ArrayList();
ArrayList detailurls = new ArrayList();
ArrayList detailurllinks = new ArrayList();
ArrayList detailids = new ArrayList();
List tmpDetailValues = new ArrayList();
List<String> lstFieldIds = new ArrayList<String>();
rs.executeSql("select b.id from Workflow_formdetail b where b.Requestid=" + Requestid + " and b.groupId=" + rs2.getInt(1) + " order by " + orderSql);
while (rs.next()) {
detailids.add(rs.getString("id"));
}
String fieldnames = "";
rs.executeSql("select b.id,b.fieldhtmltype,c.fieldlable,b.type,b.fieldname,b.fielddbtype,b.childfieldid from workflow_formfield a,workflow_formdictdetail b,workflow_fieldlable c where a.formid=c.formid and a.fieldid=c.fieldid and c.langurageid=" + languageid + " and a.formid=" + formid + " and a.groupId=" + rs2.getInt(1) + " and a.fieldid=b.id and a.isdetail='1' order by a.fieldorder");
while (rs.next()) {
id = rs.getString("id");
type = rs.getString("type");
htmltype = rs.getInt("fieldhtmltype");
String fieldname = rs.getString("fieldname");
fielddbtype = rs.getString("fielddbtype");
if (fieldnames.equals("")) {
fieldnames = "b." + fieldname;
} else {
fieldnames += "," + "b." + fieldname;
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
detailurls.add(urlcominfo.getBrowserurl(type));
detailurllinks.add(urlcominfo.getLinkurl(type));
} else {
detailurls.add("");
detailurllinks.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
detaildbfnames.add(fieldname);
detailfields.add("field" + id + "_0_" + type + "_" + htmltype);
lstFieldIds.add(id);
}
if (Requestid > 0) {
sql = "select " + fieldnames + " from Workflow_formdetail b where b.Requestid=" + Requestid + " and b.groupId=" + rs2.getInt(1) + " order by " + orderSql;
rs1.executeSql(sql);
String[] colNames = rs1.getColumnName();
while (rs1.next()) {
Map<String, String> mapDetailField = new HashMap<String, String>();
for (String colName : colNames) {
int indx = Util.getListIndex(detaildbfnames, colName);
if (indx > -1) {
fieldvalue = Util.null2String(rs1.getString(colName));
String fieldID = lstFieldIds.get(indx);
mapDetailField.put(fieldID, fieldvalue);
}
}
tmpDetailValues.add(mapDetailField);
}
}
if (detailfields.size() > 0) {
DetailTableFields.add(detailfields);
DetailTableIds.add(detailids);
DetailUrlList.add(detailurls);
DetailUrlLinkList.add(detailurllinks);
DetailDBFieldNames.add(detaildbfnames);
lstDetailTblFields.add(tmpDetailValues);
}
groupId ++;
}
}
//单据
if (isbill == 1) {
String detailtable = "";
String maintable = "";
String keyfield = "";
String tempdetailtable = "";
rs.executeSql(" select tablename,detailkeyfield,detailtablename from Workflow_bill where id=" + formid);
if (rs.next()) {
maintable = rs.getString("tablename");
keyfield = rs.getString("detailkeyfield");
tempdetailtable = rs.getString("detailtablename");
if (keyfield == null || keyfield.trim().equals("")) {
keyfield = "mainid";
}
}
if (maintable != null && !maintable.trim().equals("")) {
ArrayList detailtablelist = new ArrayList();
String detailtables = "";
rs1.executeSql("select detailtable from workflow_billfield where billid=" + formid + " and viewtype=1 group by detailtable");
while (rs1.next()) {
String detailtemp = rs1.getString("detailtable");
if (detailtables.equals("")) {
if (detailtemp == null || detailtemp.trim().equals("")) {
detailtables = "null,''";
} else {
detailtables = "'" + detailtemp + "'";
}
} else {
if (detailtemp == null || detailtemp.trim().equals("")) {
detailtables += ",null,''";
} else {
detailtables += ",'" + detailtemp + "'";
}
}
}
if (detailtables.length() > 0) {
rs1.executeSql("select tablename from WORKFLOW_BILLDETAILTABLE where billid=" + formid + " and tablename in(" + detailtables + ") order by orderid");
while (rs1.next()) {
detailtablelist.add(rs1.getString("tablename"));
}
}
if (detailtablelist.size() < 1 && tempdetailtable.length() > 0) {
detailtablelist.add("");
}
int groupId = 1;
for (int deno = 0; deno < detailtablelist.size(); deno++) {
String fieldnames = "";
detailtable = (String) detailtablelist.get(deno);
if (detailtable == null || detailtable.trim().equals("")) {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and (detailtable is null or detailtable='" + detailtable + "') and viewtype=1 order by dsporder";
detailtable = tempdetailtable;
} else {
sql = "select id,labelname,fieldhtmltype,type,fieldname,fielddbtype,childfieldid from workflow_billfield,HtmlLabelInfo where fieldlabel=indexid and languageid=" + languageid + " and billid=" + formid + " and detailtable='" + detailtable + "' and viewtype=1 order by dsporder";
}
String orderSql = detailOrderManager.getOrderSql(workflowId, nodeId, formid+"", isbill+"", String.valueOf(languageid), groupId + "", detailtable, "b","id");
ArrayList detaildbfnames = new ArrayList();
ArrayList detailfields = new ArrayList();
ArrayList detailurls = new ArrayList();
ArrayList detailurllinks = new ArrayList();
ArrayList detailids = new ArrayList();
List tmpDetailValues = new ArrayList();
List<String> lstFieldIds = new ArrayList<String>();
rs.executeSql(sql);
while (rs.next()) {
id = rs.getString("id");
type = rs.getString("type");
htmltype = rs.getInt("fieldhtmltype");
String fieldname = rs.getString("fieldname");
fielddbtype = rs.getString("fielddbtype");
if (fieldnames.equals("")) {
fieldnames = "b." + fieldname;
} else {
fieldnames += ",b." + fieldname;
}
if (htmltype == 3) {
if (type.equals("161") || type.equals("162") || type.equals("224") || type.equals("225"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype);
else if (type.equals("256") || type.equals("257"))
detailurls.add(urlcominfo.getBrowserurl(type) + "?type=" + fielddbtype + "_" + type);
else
detailurls.add(urlcominfo.getBrowserurl(type));
detailurllinks.add(urlcominfo.getLinkurl(type));
} else {
detailurls.add("");
detailurllinks.add("");
}
if (htmltype == 3 && (type.equals("224") || type.equals("225"))) { // sap自定义浏览按钮
fielddbtype = "varchar2(1000)";
if (type.equals("225")) {
fielddbtype = "varchar2(4000)";
}
}
detaildbfnames.add(fieldname);
detailfields.add("field" + id + "_0_" + type + "_" + htmltype);
lstFieldIds.add(id);
}
if (Requestid > 0) {
String detailid = "";
if (formid == 156 || formid == 157 || formid == 158 || formid == 159) {
detailid = "dsporder";
sql = "select b.dsporder";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.dsporder";
} else if (formid == 7 || formid == 14 || formid == 18) {//费用报销单。 资产调拨单据
detailid = "id";
sql = "select b.* from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.id";
} else if ((maintable.indexOf("formtable_main_") == 0 || maintable.indexOf("uf_") == 0)
&& (detailtable.indexOf("formtable_main_") == 0 || detailtable.indexOf("uf_") == 0)) {//新表单formid<0,所以与上面的不会冲突。
detailid = "id";
sql = "select b.id";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by " + orderSql;
} else if (formid < 0) { //数据中心模块创建的明细报表
detailid = "inputid";
sql = "select b.inputid";
if (!fieldnames.equals("")) sql += "," + fieldnames;
sql += " from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid + " order by b.inputid";
} else {
detailid = "id";
sql = "select b.* from " + maintable + " a," + detailtable + " b where a.id=b." + keyfield + " and a.requestid = " + Requestid;
}
rs1.executeSql(sql);
String[] colNames = rs1.getColumnName();
while (rs1.next()) {
Map<String, String> mapDetailField = new HashMap<String, String>();
for (String colName : colNames) {
if (detailid.equalsIgnoreCase(colName)) {
fieldvalue = rs1.getString(colName);
detailids.add(fieldvalue);
} else {
int indx = Util.getListIndex(detaildbfnames, colName);
if (indx > -1) {
String fieldID = lstFieldIds.get(indx);
fieldvalue = Util.null2String(rs1.getString(detailtable, colName, isAutoDecrypt, isReturnDecryptData));
mapDetailField.put(fieldID, fieldvalue);
}
}
}
tmpDetailValues.add(mapDetailField);
}
}
if (detailfields.size() > 0) {
DetailTableFields.add(detailfields);
DetailTableIds.add(detailids);
DetailUrlList.add(detailurls);
DetailUrlLinkList.add(detailurllinks);
DetailDBFieldNames.add(detaildbfnames);
DetailTableNames.add(detailtable);
DetailTableKeys.add(keyfield);
lstDetailTblFields.add(tmpDetailValues);
}
}
}
}
}
/**
* managerID
*
* @param formid
* @param isbill
* @return
*/
public int getManagerFieldID(int formid, int isbill) {
RecordSet rs = new RecordSet();
int managerfieldid = -1;
//表单
if (isbill == 0) {
rs.executeSql("select b.id from workflow_formfield a,workflow_formdict b where a.fieldid=b.id and a.isdetail is null and a.formid=" + formid + " and b.fieldname='manager'");
if (rs.next()) {
managerfieldid = Util.getIntValue(rs.getString("id"));
}
}
//单据
if (isbill == 1) {
rs.executeSql("select id from workflow_billfield where billid=" + formid + " and viewtype=0 and fieldname='manager'");
if (rs.next()) {
managerfieldid = Util.getIntValue(rs.getString("id"));
}
}
return managerfieldid;
}
/**
*
*
* @param workflowid ID
*/
public void GetWorkflowNode(int workflowid) {
RecordSet rs = new RecordSet();
if (!"1".equals(iswfshare)) {
rs.executeSql("select nodeid,nodename from workflow_flownode,workflow_nodebase where (workflow_nodebase.IsFreeNode is null or workflow_nodebase.IsFreeNode!='1') and nodeid=id and workflowid=" + workflowid + " order by nodetype,nodeid");
while (rs.next()) {
Nodes.add("wfl" + workflowid + "_" + rs.getString("nodeid"));
NodeNames.add(rs.getString("nodename"));
}
Nodes.add("wfl" + workflowid + "_999999999");
NodeNames.add(""+ SystemEnv.getHtmlLabelName(84441,weaver.general.ThreadVarLanguage.getLang())+"");
} else {
try {
String userids = "";
String viewNodeId = "";
String singleViewLogIds = "";
String tempNodeId = "";
RecordSet rs1 = new RecordSet();
RecordSet rs2 = new RecordSet();
RecordSet rs3 = new RecordSet();
WFShareAuthorization wfShareAuthorization = new WFShareAuthorization();
WFManager wfManager = new WFManager();
userids = wfShareAuthorization.getSignByrstUser(String.valueOf(Requestid), user);
//流程共享的签字意见查看权限与共享人权限一致
if (!"".equals(userids)) {
rs1.executeSql("select workflowid from workflow_requestbase where requestid = " + Requestid);
if (rs1.next()) {
wfManager.setWfid(rs1.getInt("workflowid"));
wfManager.getWfInfo();
}
String issignview = wfManager.getIssignview();
if ("1".equals(issignview)) {
rs2.executeSql("select a.nodeid from workflow_currentoperator a where a.requestid=" + Requestid + " and exists (select 1 from workflow_currentoperator b where b.isremark in ('0','2','4') and b.requestid=" + Requestid + " and a.userid=b.userid) and userid in (" + userids + ") order by receivedate desc ,receivetime desc");
if (rs2.next()) {
viewNodeId = rs2.getString("nodeid");
rs3.executeSql("select viewnodeids from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + viewNodeId);
if (rs3.next()) {
singleViewLogIds = rs3.getString("viewnodeids");
}
if ("-1".equals(singleViewLogIds)) {//全部查看
rs3.executeSql("select nodeid from workflow_flownode where workflowid= " + workflowid + " and exists(select 1 from workflow_nodebase where id=workflow_flownode.nodeid and (requestid is null or requestid=" + Requestid + "))");
while (rs3.next()) {
tempNodeId = rs3.getString("nodeid");
if (!Nodes.contains("wfl" + workflowid + "_" + tempNodeId)) {
Nodes.add("wfl" + workflowid + "_" + tempNodeId);
}
}
} else if (singleViewLogIds == null || "".equals(singleViewLogIds)) {//全部不能查看
} else {//查看部分
String tempidstrs[] = Util.TokenizerString2(singleViewLogIds, ",");
for (int i = 0; i < tempidstrs.length; i++) {
if (!Nodes.contains("wfl" + workflowid + "_" + tempidstrs[i])) {
Nodes.add("wfl" + workflowid + "_" + tempidstrs[i]);
}
}
}
}
} else {
rs2.executeSql("select distinct a.nodeid from workflow_currentoperator a where a.requestid=" + Requestid + " and exists (select 1 from workflow_currentoperator b where b.isremark in ('0','2','4') and b.requestid=" + Requestid + " and a.userid=b.userid) and userid in (" + userids + ") ");
while (rs2.next()) {
viewNodeId = rs2.getString("nodeid");
rs3.executeSql("select viewnodeids from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + viewNodeId);
if (rs3.next()) {
singleViewLogIds = rs3.getString("viewnodeids");
}
if ("-1".equals(singleViewLogIds)) {//全部查看
rs3.executeSql("select nodeid from workflow_flownode where workflowid= " + workflowid + " and exists(select 1 from workflow_nodebase where id=workflow_flownode.nodeid and (requestid is null or requestid=" + Requestid + "))");
while (rs3.next()) {
tempNodeId = rs3.getString("nodeid");
if (!Nodes.contains("wfl" + workflowid + "_" + tempNodeId)) {
Nodes.add("wfl" + workflowid + "_" + tempNodeId);
}
}
} else if (singleViewLogIds == null || "".equals(singleViewLogIds)) {//全部不能查看
} else {//查看部分
String tempidstrs[] = Util.TokenizerString2(singleViewLogIds, ",");
for (int i = 0; i < tempidstrs.length; i++) {
if (!Nodes.contains("wfl" + workflowid + "_" + tempidstrs[i])) {
Nodes.add("wfl" + workflowid + "_" + tempidstrs[i]);
}
}
}
}
}
/////////////////////////////////
Nodes.add("wfl" + workflowid + "_999999999");
NodeNames.add(""+ SystemEnv.getHtmlLabelName(84441,weaver.general.ThreadVarLanguage.getLang())+"");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/**
*
*/
public String GetfreeNodeRemark(int workflowid, int currentnodeid, int ismode,NodeSignInputSetEntity entity) {
if (ismode == 1)
ismode = 0;
//-9999表示自由节点
String str = GetNodeRemarkInner(workflowid, -9999, currentnodeid, ismode,entity);
return str;
}
public String GetfreeNodeRemark(int workflowid, int currentnodeid, int ismode){
return GetfreeNodeRemark(workflowid,currentnodeid,ismode,null);
}
/**
*
*
* @param workflowid
* @param nodeid ID
* @param currentnodeid
* @return
*/
public String GetNodeRemark(int workflowid, int nodeid, int currentnodeid) {
try {
return GetNodeRemarkInner(workflowid, nodeid, currentnodeid, 0);
} catch (Exception e) {
log.info("Catch a exception.", e);
return "";
}
}
/**
* Html6.0Html
*
* @param workflowid
* @param nodeid ID
* @param currentnodeid
* @param ismode 12Html0
* @return
*/
public String GetNodeRemark(int workflowid, int nodeid, int currentnodeid, int ismode) {
try {
return GetNodeRemarkInner(workflowid, nodeid, currentnodeid, ismode,null);
} catch (Exception e) {
log.info("Catch a exception.", e);
return "";
}
}
public String GetNodeRemark(int workflowid, int nodeid, int currentnodeid, int ismode, NodeSignInputSetEntity entity) {
try {
return GetNodeRemarkInner(workflowid, nodeid, currentnodeid, ismode,entity);
} catch (Exception e) {
log.info("Catch a exception.", e);
return "";
}
}
private String checkNodemark(String nodemark){
// if(!"1".equals(this.wfinfo.get("isprint")))
// nodemark = RequestFormBiz.manageImgLazyLoad(nodemark);
// 去掉多余分隔符
nodemark = nodemark.replace(String.valueOf(FieldInfo.getNodeSeparator()), "").replace(String.valueOf(Util.getSeparator()), "");
if (nodemark.indexOf("<br>") == 0)
nodemark = nodemark.substring(4, nodemark.length());
if (nodemark.endsWith("<br>"))
nodemark = nodemark.substring(0, nodemark.length() - 4);
return convertChar(nodemark);
}
private String convertChar(String str){
str = str.replaceAll("\\\t", "");
return str;
}
public List<Map<String,Object>> GetGroupNodeRemark(int workflowid, int nodeid, int currentnodeid, int ismode, NodeSignInputSetEntity entity) {
try {
GetNodeRemarkInner(workflowid, nodeid, currentnodeid, ismode,entity);
} catch (Exception e) {
log.info("Catch a exception.", e);
}
return nodeMarkContent;
}
public String GetNodeRemarkInner(int workflowid, int nodeid, int currentnodeid, int ismode){
return GetNodeRemarkInner(workflowid,nodeid,currentnodeid,ismode,null);
}
/**
* 使GetNodeRemark(int workflowid,int nodeid,int currentnodeid)
*
* @param workflowid
* @param nodeid ID
* @param currentnodeid
* @param ismode 12Html0
* 0.......
* @return
*/
public String GetNodeRemarkInner(int workflowid, int nodeid, int currentnodeid, int ismode,NodeSignInputSetEntity entity) {
String NodeRemark = "";
this.layoutNodeid = nodeid;
this.viewNodeidScope = currentnodeid;
nodeMarkContent = new ArrayList<>();
int showimg = Util.getIntValue(getWfsbean().getPropValue("WFSignatureImg", "showimg"), 0);
RecordSet rs1 = new RecordSet();
String orderby = "desc";
WFLinkInfo wfLinkInfo = new WFLinkInfo();
String isshowSrc = wfLinkInfo.getIsshowSrc(workflowid);
RecordSet rs = new RecordSet();
boolean belongGroup = nodeid == -1 || nodeid == -2 || nodeid == -3;
if (workflowid > 0 && (nodeid > 0 || nodeid == -9999 || nodeid == RequestConstant.ALL_NODE_SIGN_MARK || belongGroup)) {
ArrayList preoperators = new ArrayList();
String username = "";
String departmentname = "";
WFManager wfManager = new WFManager();
wfManager.reset();
wfManager.setWfid(workflowid);
try {
wfManager.getWfInfo();
String orderbytype = Util.null2String(wfManager.getOrderbytype());
if ("2".equals(orderbytype)) {
orderby = "asc";
}
} catch (Exception e) {
}
WFLinkInfo wfinf = new WFLinkInfo();
int nodeattribute = 0;
if (nodeid > 0)
nodeattribute = wfinf.getNodeAttribute(nodeid);
int viewtypeall = 0;
int viewdescall = 0;
int showtype = 0;
int vtapprove = 0;
int vtrealize = 0;
int vtforward = 0;
int vtTakingOpinions = 0;
int vtHandleForward = 0;
int vtpostil = 0;
int vttpostil = 0;
int vtrecipient = 0;
int vtrpostil = 0;
int vtreject = 0;
int vtsuperintend = 0;
int vtover = 0;
int vtintervenor = 0;
int vtChuanyue = 0;
int vtChuanyueRec = 0;
int vtTakForward = 0;
int vtTakEnd = 0;
int vtWithdraw = 0;
int vdcomments = 0;
int vddeptname = 0;
int vdoperator = 0;
int vddate = 0;
int vdtime = 0;
int stnull = 0;
int vsignupload = 0;
int vmobilesource = 0;
int vsigndoc = 0;
int vsignworkflow = 0;
int remarkcolumn = 1;
int languageid = 7;
int selectformat = 0;
int vdposition = 0;
int vdsub = 0;
int vdjob = 0;
int vdnodename = 0;
int vdaction = 0;
String showDesc = "";
String signShowDesc = "";
String printviewdesc = "";
String viewtypeallValue = "";
if (user != null) {
languageid = user.getLanguage();
}
String ORwhere = "";
String appendORwhere = "";
Set<String> logTypeSet = new HashSet<>();
Set<String> logIdSet = null;
Map<String,Object> postilMap = new HashMap<>();//批注的类型
//判断当前节点是否是自由节点
int node_temp = currentnodeid;
rs.execute("select isfreenode,startnodeid from workflow_nodebase where id = " + currentnodeid);
if (rs.next()) {
int isfreenode = rs.getInt(1);
if (isfreenode == 1) {
node_temp = rs.getInt(2);//当前节点是自由节点,取自由节点发起节点的配置
}
}
node_temp = FreeNodeBiz.getExtendNodeId(node_temp);
String sql = "select * from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + node_temp;
rs.executeSql(sql);
if (rs.next()) {
viewtypeall = Util.getIntValue(rs.getString("viewtypeall"), 0);
viewdescall = Util.getIntValue(rs.getString("viewdescall"), 0);
showtype = Util.getIntValue(rs.getString("showtype"), 0);
vtapprove = Util.getIntValue(rs.getString("vtapprove"), 0);
vtrealize = Util.getIntValue(rs.getString("vtrealize"), 0);
vtforward = Util.getIntValue(rs.getString("vtforward"), 0);
vtTakingOpinions = Util.getIntValue(rs.getString("vtTakingOpinions"), 0); //征求意见
vtHandleForward = Util.getIntValue(rs.getString("vtHandleForward"), 0); // 转办
vttpostil = Util.getIntValue(Util.null2String(rs.getString("vttpostil")), 0);
vtrpostil = Util.getIntValue(Util.null2String(rs.getString("vtrpostil")), 0);
vtpostil = Util.getIntValue(rs.getString("vtpostil"), 0);
vtrecipient = Util.getIntValue(rs.getString("vtrecipient"), 0);
vtreject = Util.getIntValue(rs.getString("vtreject"), 0);
vtsuperintend = Util.getIntValue(rs.getString("vtsuperintend"), 0);
vtover = Util.getIntValue(rs.getString("vtover"), 0);
vtintervenor = Util.getIntValue(rs.getString("vtintervenor"), 0);
vtChuanyue = Util.getIntValue(rs.getString("vtChuanyue"), 0);
vtChuanyueRec = Util.getIntValue(rs.getString("vtChuanyueRec"), 0);
vtTakForward = Util.getIntValue(rs.getString("vttakforward"), 0);
vtTakEnd = Util.getIntValue(rs.getString("vttakend"), 0);
vtWithdraw = Util.getIntValue(rs.getString("vtWithdraw"), 0);
vdcomments = Util.getIntValue(rs.getString("vdcomments"), 0);
vddeptname = Util.getIntValue(rs.getString("vddeptname"), 0);
vdoperator = Util.getIntValue(rs.getString("vdoperator"), 0);
vddate = Util.getIntValue(rs.getString("vddate"), 0);
vdtime = Util.getIntValue(rs.getString("vdtime"), 0);
stnull = Util.getIntValue(rs.getString("stnull"), 0);
vsignupload = Util.getIntValue(rs.getString("vsignupload"), 0);
vmobilesource = Util.getIntValue(rs.getString("vmobilesource"), -1);
vsigndoc = Util.getIntValue(rs.getString("vsigndoc"), 0);
vsignworkflow = Util.getIntValue(rs.getString("vsignworkflow"), 0);
remarkcolumn = Util.getIntValue(rs.getString("remarkcolumn"), 1);
selectformat = Util.getIntValue(rs.getString("selectformat"), 0);
vdsub = Util.getIntValue(rs.getString("vdsub"), 0);
vdjob = Util.getIntValue(rs.getString("vdjob"), 0);
vdnodename = Util.getIntValue(rs.getString("vdnodename"), 0);
vdposition = Util.getIntValue(rs.getString("vdposition"), 0);
vdaction = Util.getIntValue(rs.getString("vdaction"), 0);
showDesc = Util.null2String(rs.getString("showdesc"));
signShowDesc = Util.null2String(rs.getString("signshowdesc"));
//如果是打印获取签字意见
if (Isprint == 1) {
showDesc = Util.null2String(rs.getString("printshowdesc"));
signShowDesc = Util.null2String(rs.getString("printsignshowdesc"));
selectformat = Util.getIntValue(rs.getString("printselectformat"), 0);
printviewdesc = Util.null2String(rs.getString("printviewdesc"));
remarkcolumn = Util.getIntValue(rs.getString("PRINTREMARKCOLUMN"), 1);
viewtypeallValue = Util.null2String(rs.getString("printviewtype"));
showtype = Util.getIntValue(rs.getString("printshowtype"), 0);
stnull = Util.getIntValue(rs.getString("printstnull"), 0);
int nodesignset = 0;
RecordSet rszz = new RecordSet();
rszz.executeQuery("select * from workflow_printset where type=? and modeid=?", ismode == 0 ? 2 : 1, printModeId);
while (rszz.next()) {
nodesignset = ListUtil.ToZero(rszz.getInt("nodesignset"));
//如果此模板有进行设置
if (nodesignset == 1) {
selectformat = ListUtil.ToZero(rszz.getInt("selectformat"));
remarkcolumn = Util.getIntValue(rszz.getString("REMARKCOLUMN"), 1);
viewtypeallValue = Util.null2String(rszz.getString("viewtype"));
showtype = Util.getIntValue(rszz.getString("showtype"), 0);
stnull = Util.getIntValue(rszz.getString("stnull"), 0);
//如果是模板模式 没有自定义的签字意见 只能是普通
if (ismode == 0) {
selectformat = 0;
}
//并且是自定义设置
if (selectformat == 1) {
showDesc = rszz.getString("showdesc");
signShowDesc = rszz.getString("signShowDesc");
} else {
//如果是默认设置 那么也应该取模板上面的设置
printviewdesc = rszz.getString("viewdesc");
}
}
}
//使用默认格式
if (selectformat != 1&&!ShowTypeEnum.OLDVALUE.equals(printviewdesc)) {
vdcomments = 0;
vddeptname = 0;
vdoperator = 0;
vddate = 0;
vdtime = 0;
vsigndoc = 0;
vsignworkflow = 0;
vmobilesource = 0;
vsignupload = 0;
vdaction = 0;
vdposition = 0;
viewdescall=0;
vdsub = 0;
vdjob = 0;
vdnodename = 0;
if ("1".equals(printviewdesc) || "all".equals(printviewdesc)) {
viewdescall = 1;
vmobilesource=1;
} else {
List<String> valueList = Util.splitString2List(printviewdesc, ",");
if (valueList.size() == ShowTypeEnum.values().length) {
viewdescall = 1;
vmobilesource=1;
} else {
if (printviewdesc.indexOf("viewdesc_comments") > -1) {
vdcomments = 1;
}
if (printviewdesc.indexOf("viewdesc_deptname") > -1) {
vddeptname = 1;
}
if (printviewdesc.indexOf("viewdesc_operator") > -1) {
vdoperator = 1;
}
if (printviewdesc.indexOf("viewdesc_date") > -1) {
vddate = 1;
}
if (printviewdesc.indexOf("viewdesc_time") > -1) {
vdtime = 1;
}
if (printviewdesc.indexOf("viewdesc_signdoc") > -1) {
vsigndoc = 1;
}
if (printviewdesc.indexOf("viewdesc_signworkflow") > -1) {
vsignworkflow = 1;
}
if (printviewdesc.indexOf("viewdesc_mobilesource") > -1) {
vmobilesource = 1;
}
if (printviewdesc.indexOf("viewdesc_signupload") > -1) {
vsignupload = 1;
}
if (printviewdesc.indexOf("viewdesc_action") > -1) {
vdaction = 1;
}
if (printviewdesc.indexOf("viewdesc_position") > -1) {
vdposition = 1;
}
if (printviewdesc.indexOf("viewdesc_subname") > -1) {
vdsub = 1;
}
if (printviewdesc.indexOf("viewdesc_jobname") > -1) {
vdjob = 1;
}
if (printviewdesc.indexOf("viewdesc_nodename") > -1) {
vdnodename = 1;
}
}
}
}
if (!ShowTypeEnum.OLDVALUE.equals(viewtypeallValue)) {
viewtypeall = 0;
vtapprove = 0;
vtrealize = 0;
vtforward = 0;
vtpostil = 0;
vtHandleForward = 0;
vtTakingOpinions = 0;
vttpostil = 0;
vtrecipient = 0;
vtrpostil = 0;
vtreject = 0;
vtsuperintend = 0;
vtover = 0;
vtintervenor = 0;
vtWithdraw = 0;
if (viewtypeallValue.indexOf("viewtype_all") != -1 || viewtypeallValue.equals("1") || "all".equals(viewtypeallValue)) {
viewtypeall = 1;
} else {
if (viewtypeallValue.indexOf("viewtype_approve") != -1)
vtapprove = 1;
if (viewtypeallValue.indexOf("viewtype_realize") != -1)
vtrealize = 1;
if (viewtypeallValue.indexOf("viewtype_forward") != -1)
vtforward = 1;
if (viewtypeallValue.indexOf("viewtype_postil") != -1)
vtpostil = 1;
if (viewtypeallValue.indexOf("view_handleForward") != -1)
vtHandleForward = 1;
if (viewtypeallValue.indexOf("view_takingOpinions") != -1)
vtTakingOpinions = 1;
if (viewtypeallValue.indexOf("viewtype_tpostil") != -1)
vttpostil = 1;
if (viewtypeallValue.indexOf("viewtype_recipient") != -1)
vtrecipient = 1;
if (viewtypeallValue.indexOf("viewtype_rpostil") != -1)
vtrpostil = 1;
if (viewtypeallValue.indexOf("viewtype_reject") != -1)
vtreject = 1;
if (viewtypeallValue.indexOf("viewtype_superintend") != -1)
vtsuperintend = 1;
if (viewtypeallValue.indexOf("viewtype_over") != -1)
vtover = 1;
if (viewtypeallValue.indexOf("viewtype_intervenor") != -1)
vtintervenor = 1;
if (viewtypeallValue.indexOf("viewtype_withdraw") != -1)
vtWithdraw = 1;
}
}
}
}
if (viewtypeall != 1) {
if (vtapprove == 1) { //提交
ORwhere += " or logtype='2'";
}
if (vtrealize == 1) { //批准
ORwhere += " or logtype='0'";
}
if (vtforward == 1) { //转发
ORwhere += " or logtype='7'";
}
if (vtTakingOpinions == 1) { //征求意见
ORwhere += " or logtype='a'";
}
if (vtHandleForward == 1) { //转办
ORwhere += " or logtype='h'";
}
if (vttpostil == 1) { //回复
ORwhere += " or logtype='b'";
}
if (vtrpostil == 1) { //抄送批注----这里之前应该是搞错了,导致现在如果设置只显示抄送批注签字意见,会导致转办反馈的签字意见也跟着显示出来
ORwhere += " or logtype='9'";
}
if (vtpostil == 1) { //批注
ORwhere += " or logtype='9'";
postilMap.put("viewtype_postil","9");
}
if (vtrecipient == 1) { //抄送
ORwhere += " or logtype='t'";
}
if (vtreject == 1) { //退回
ORwhere += " or logtype='3'";
}
if (vtsuperintend == 1) { //督办
ORwhere += " or logtype='s'";
}
if (vtover == 1) { //强制归档
ORwhere += " or logtype='e'";
}
if (vtintervenor == 1) { //流程干预
ORwhere += " or logtype='i'";
}
if (vtChuanyue == 1) { //传阅
ORwhere += " or logtype='c'";
}
if (vtChuanyueRec == 1) { //传阅批示
ORwhere += " or logtype='y'";
}
if (vtTakForward == 1) {//征询转办
ORwhere += " or logtype='z'";
}
if (vtTakEnd == 1) {//结束征询
ORwhere += " or logtype='x'";
}
if (vtWithdraw == 1) {//结束征询
ORwhere += " or logtype='r'";
}
ORwhere = ORwhere.trim();
if ("".equals(ORwhere))
ORwhere = " 1=2";
else
ORwhere = ORwhere.substring(2);
}
if(vtrpostil == 1){
postilMap.put("viewtype_rpostil","9");
}
if(entity != null){
ORwhere = "";
Map<String, Object> showTypes = entity.getShowType();
postilMap.clear();
postilMap.putAll(showTypes);
Collection<Object> values = showTypes.values();
Iterator<Object> iterator = values.iterator();
Map<String, String> signInputMap = ShowType.getSignInputMap();
Map<String, String> valueMap = new HashMap<>();
for(Map.Entry<String,String> entry : signInputMap.entrySet()){
String key = entry.getValue();
String value = entry.getKey();
valueMap.put(value,key);
if("1".equals(entity.getIsGroup())){
appendORwhere += " or logtype='"+value+"'";
}
}
while(iterator.hasNext()){
String next = Util.null2String(iterator.next());
String logtype = Util.null2String(valueMap.get(next));
if("1".equals(entity.getIsGroup())){
if(signInputMap.values().contains(next) && !"".equals(logtype) && values.contains(logtype)){
//doto 可能需要做其他事情
} else {
ORwhere += " or logtype='"+next+"'";
}
logTypeSet.add(next);
} else {
ORwhere += " or logtype='"+next+"'";
}
}
ORwhere = ORwhere.trim();
if ("".equals(ORwhere))
ORwhere = " 1=2";
else
ORwhere = ORwhere.substring(2);
}
//二次认证,数据保护的验证
Map<String, Object> checkMap = SecondAuthBiz.getProtectedLogs(Requestid);
Map<String, String> logIdMap = (HashMap<String, String>) checkMap.get("logIdMap");
//批量获取契约锁认证的信息
Map<String, Object> qysSignInfoMap = SecondAuthBiz.getMultiQYSSignInfo(Requestid,nodeid);
//拼接查询SQL区分当前请求意见、还是主子流程意见
String backfields="", fromSql="", sqlWhere="";
boolean siblingOtherType = false;
if(this.mainSubSignEntity.getType() > 10) {
//判断是否平行流程其他类型
String sibling = "select distinct WORKFLOWID from workflow_requestlog where nodeid = "+nodeid;
RecordSet rs2 = new RecordSet();
rs2.executeQuery(sibling);
rs2.next();
String thisworkflowid = rs2.getString(1);
if(!thisworkflowid.equals(workflowid+"")){
siblingOtherType = true;
}
//平行流程意见
backfields = " a.* ";
fromSql = " workflow_requestlog a,hrmsubcompany b,hrmdepartment c,HRMRESOURCE d ";
sqlWhere = " where a.OPERATORDEPT = c.ID and a.OPERATORSUB = b.id and a.operator = d.id and a.nodeid in ( \n" + nodeid +
" ) and a.requestid in (select requestid from workflow_requestbase where MAINREQUESTID = \n" +
" (select mainrequestid from workflow_requestbase where requestid = " + Requestid + ")) ";
new BaseBean().writeLog("fieldinfo---fromSql----->" + fromSql + fromSql + sqlWhere);
}else if(this.mainSubSignEntity.getType() > 0){
//主子流程意见
MainSubWfSignBiz biz = new MainSubWfSignBiz();
biz.generateSqlInfo(this.mainSubSignEntity, this.Requestid);
backfields = this.mainSubSignEntity.getBackfields();
fromSql = this.mainSubSignEntity.getFromSql();
sqlWhere = this.mainSubSignEntity.getSqlWhere();
}else{
//当前流程意见
backfields = " t1.* ";
fromSql = " workflow_requestlog t1 left join hrmresource t2 on t1.operator = t2.id ";
fromSql += " left join (" +
"select nodeid,nodeorder,0 as isfreenode from workflow_flownode where workflowid="+workflowid+" " +
" union select a.id, b.nodeorder, 1 as isfreenode from workflow_freenode a " +
"left join workflow_flownode b on a.extendnodeid = b.nodeid where a.requestid = "+Requestid+" and b.workflowid = " + workflowid +
") t3 on t1.nodeid=t3.nodeid ";
if (nodeid == -2) {
fromSql += " left join hrmdepartment t4 on t2.departmentid=t4.id ";
} else if (nodeid == -3) {
fromSql += " left join hrmsubcompany t4 on t2.subcompanyid1=t4.id ";
}
sqlWhere = "where t1.workflowid=" + workflowid + " and t1.requestid=" + Requestid + " and t1.logtype!='1' ";
if (nodeid > 0) {
sqlWhere += " and t1.nodeid = " + nodeid;
} else if (belongGroup || nodeid == RequestConstant.ALL_NODE_SIGN_MARK){
sqlWhere += "";
} else {
sqlWhere += " and t1.nodeid in ("+getAllFreeNodeIds()+")";
}
//排除已删除的节点签字意见
rs.executeQuery("select a.nodeid from workflow_flownode_dellog a ,workflow_requestbase b where a.workflowid = b.workflowid and b.requestid = ?",Requestid);
List<String> delnode = new ArrayList<>();
while (rs.next()){
delnode.add(rs.getString("nodeid"));
}
if(delnode.size() > 0){
sqlWhere += " and "+Util.getSubINClause(String.join(",",delnode),"t1.nodeid","not in");
}
//添加权限判断
RequestRemarkRight remarkRight = new RequestRemarkRight();
String sqlcondition = remarkRight.getRightCondition(Requestid, workflowid, user.getUID());
sqlWhere += sqlcondition;
if (nodeattribute == 1 && nodeid > 0) {
sqlWhere += " and logid in(select max(logid) from workflow_requestlog where workflowid=" + workflowid + " and requestid=" + Requestid + " and logtype!='1' and nodeid=" + nodeid
+ " group by operator,operatortype,operatedate,operatetime,logid)";
}
ArrayList forklogids = wfinf.ForkStartLogids(Requestid, workflowid);
if (forklogids.size() > 0) {
sqlWhere += " and " + Util.getSubINClause(StringUtils.join(forklogids, ","), "t1.logid", "not in");
}
}
String groupOrder = " ASC ";
String orderBy = " operatedate desc,operatetime desc, logid";
int groupOrderType = 0;
if(entity != null){
// if(entity.getShowScope() == 2){ //暂时注释
// sqlWhere += " and t2.seclevel >=" + entity.getMinLevel() + " and t2.seclevel <= " + entity.getMaxLevel();
// }
String orderByTemp = "";
groupOrderType = entity.getGroupOrderType();
Iterator<Map<String, Object>> iterator = entity.getShowOrder().iterator();
while(iterator.hasNext()){
Map<String, Object> next = iterator.next();
int id = Util.getIntValue(Util.null2String(next.get("id")),0);
String order = Util.null2String(next.get("order"));
if(id == 1){//人员显示顺序
orderByTemp += ",t2.dsporder " + order;
} else if(id == 2){//安全级别
orderByTemp += ",t2.seclevel " + order;
} else if(id == 3){//操作类型
orderByTemp += ",t1.logtype " + order;
} else if(id == 4){//操作时间
orderByTemp += ",t1.operatedate "+order+", t1.operatetime " + order;
} else if(id == 5){//节点
orderByTemp += ",t3.nodeorder " + order;
}
}
if(!"".equals(orderByTemp)){
orderByTemp = orderByTemp.substring(1);
}
if(showtype == 0){//处理显示最后一次签字意见设置,下方循环意见代码先处理空意见再处理最后一次意见,签字意见框没有单独保存过走默认排序下无需处理
//showtype---显示类型 0显示最后一次意见 1显示全部
//stnull---是否显示空意见 0显示空意见 1不显示空意见
logIdSet = new HashSet<>();
String logIds = "";
Set<String> operators_nodeidtmp = new HashSet<>();
//Set<Integer> nodeids = new HashSet<>();
String sqlTemp = "select t1.logid,t1.operator,t1.nodeid,t1.logtype,t1.agenttype,t1.agentorbyagentid from " + fromSql + " " + sqlWhere;
if (!ORwhere.equals(""))
sqlTemp += " and (" + ORwhere + ") ";
if(stnull == 1){//不显示空意见,排除空意见后再按照时间倒序取最后一次节点签字意见
String dbType = rs.getOrgindbtype();
if("oracle".equals(dbType)){
sqlTemp += " and t1.remark is not null and DBMS_LOB.GETLENGTH(t1.remark) > 0 ";
}else if("sqlserver".equals(dbType)){
sqlTemp += " and t1.remark is not null and datalength(t1.remark) >0 ";
}else if("mysql".equals(dbType)){
sqlTemp += " and t1.remark is not null and t1.remark <>'' ";
}else{
sqlTemp += " and t1.remark is not null ";
}
}
sqlTemp += " order by operatedate desc,operatetime desc ";
Map<String, String> signInputMap = ShowType.getSignInputMap();
rs.executeQuery(sqlTemp);
while(rs.next()){
Integer operator = rs.getInt("operator");
String logType = rs.getString("logType");
String logId = rs.getString("logId");
Integer nodeidtmp = rs.getInt("nodeid");//仅按照节点意见分组时,区分意见节点
int agenttype = Util.getIntValue(rs.getString("agenttype"));
int agentorByAgentId = rs.getInt("agentorbyagentid");
if (agenttype > 0) {
if(!operators_nodeidtmp.contains(agentorByAgentId + "_" + nodeidtmp)) {
operators_nodeidtmp.add(agentorByAgentId + "_" + nodeidtmp);
logIds += "," + logId;
logIdSet.add(logId);
}
} else {
if (!operators_nodeidtmp.contains(operator+"_"+nodeidtmp)) {
operators_nodeidtmp.add(operator + "_" + nodeidtmp);
logIds += "," + logId;
logIdSet.add(logId);
}
}
/*if(!nodeids.contains(nodeid1)) {
nodeids.add(nodeid1);
}*/
if(signInputMap.get(logType) != null){
logIds += "," + logId;
}
}
if(!"".equals(logIds)){
logIds = logIds.substring(1);
// sqlWhere += " and logid in ("+logIds+")";
}
}
orderBy = ("".equals(orderByTemp) ? "t1.operatedate desc,t1.operatetime desc" : orderByTemp) + ",t1.logid";
}
if(groupOrderType == 2 || groupOrderType == 3){//2.时间正序 3.时间倒序
}else{
groupOrder = groupOrderType==1?" DESC ":" ASC ";
//添加分组排序
if (nodeid == -1) {//节点
orderBy = " t3.nodeorder " + groupOrder + ", t3.isfreenode, " + orderBy;
} else if(nodeid == -2 || nodeid == -3) {//部门、分部
orderBy = " t4.showorder " + groupOrder + ", t4.id " + groupOrder + "," + orderBy;
}
}
orderBy = " order by " + orderBy;
ORwhere += appendORwhere;
List<Map<String,String>> dataArr = getRemarkList(backfields,fromSql,sqlWhere,ORwhere,orderBy,workflowid,Requestid,logTypeSet,logIdSet,true);
boolean postil = (postilMap.containsKey("viewtype_postil") && !postilMap.containsKey("viewtype_rpostil")) || (!postilMap.containsKey("viewtype_postil") && postilMap.containsKey("viewtype_rpostil"));
Set<Integer> logIdFielters = new HashSet<>();
Map<String,List<RemarkInfoDTO>> remarkListMap = new HashMap<>();
List<Integer> remarkKeys = new ArrayList<>();
List<Map<String,String>> remarkList_date = new ArrayList<>();
Map<Integer, String> freeNodeNameMap = getFreeNodeName(Requestid);
RobotNodeServiceBiz robotNodeServiceBiz = new RobotNodeServiceBiz(languageid);
if (ismode == 2) {//html模式
List<RemarkInfoDTO> remarkList = new ArrayList<RemarkInfoDTO>();
for(Map<String,String> params : dataArr){
int currequestid = param2Integer(params,"requestid");
remarkRequestid = currequestid;
int agenttype = param2Integer(params,"agenttype");
int agentorbyagentid = param2Integer(params,"agentorbyagentid");
int operator = param2Integer(params,"operator");
String seclevellog = param2String(params, "seclevel");
int logId = param2Integer(params,"logId");
int operatortype = param2Integer(params,"operatortype");
int requestLogId = param2Integer(params,"requestLogId");
int nodeid_temp = param2Integer(params,"nodeid");
String isRobotNode = params.get("isrobotnode");
//机器人节点
NodeInfoEntity nodeInfoEntity = com.engine.workflow.biz.workflowCore.WorkflowBaseBiz.getNodeInfo(nodeid_temp);
if((operator+"").equals(RobotNodeBiz.operatorid) && (NodeType.WAIT.getValue().equals(nodeInfoEntity.getNodetype()+"") || NodeType.AUTOPROCESS.getValue().equals(nodeInfoEntity.getNodetype()+""))){
//机器人节点
String remarkOperation = new RobotNodeServiceBiz().getRobotNodeSet(nodeid_temp).getRemarkOperation();
if("0".equals(remarkOperation) && "1".equals(isRobotNode)){
continue;
}
}
String annexdocids = param2String(params,"annexdocids");
String signdocids = param2String(params,"signdocids");
String signworkflowids = param2String(params,"signworkflowids");
int operatorDept = param2Integer(params,"operatorDept");
int operatorSub = param2Integer(params,"operatorSub");
int operatorJob = param2Integer(params,"operatorJob");
int operatorNodeId = param2Integer(params,"nodeid");
String logtype = param2String(params,"logtype");
String remark = param2String(params,"remark");
String operatedate = param2String(params,"operatedate");
String operatetime = param2String(params,"operatetime");
String appHandWrittenSignID = param2String(params,"HandWrittenSign");
int appSpeechAttahmentID = param2Integer(params,"SpeechAttachment");
String speechAttachmente9 = param2String (params,"speechAttachmente9");
String remarkLocation = param2String(params,"remarkLocation");
String isMobile = param2String(params,"isMobile");
String fulltextannotation = param2String(params,"fulltextannotation");
String remarkSrc = "";
//去除默认签字意见大小的div
remark = processDefaultFontSizeDiv(remark);
//去除重复的记录
if(logIdFielters.contains(logId)){
continue;
}
logIdFielters.add(logId);
if(entity != null){
//意见显示范围
if(entity.getShowScope() == 2) {
int seclevel = 0;
if (seclevellog.equals("")) {
seclevel = Util.getIntValue(resourcecominfo.getSeclevel(operator+""),0);
if (agenttype == 2 && agentorbyagentid > 0) {
seclevel = Util.getIntValue(resourcecominfo.getSeclevel(agentorbyagentid+""),0);
}
//外部用户
if(operatortype == 1){
seclevel = Util.getIntValue(crmcominfo.getSeclevel(operator+""),0);
}
} else {
seclevel = Util.getIntValue(seclevellog, 0);
}
if(!(seclevel >= entity.getMinLevel() && seclevel <= entity.getMaxLevel())){
continue;
}
}
int checkNodeId = nodeid_temp;
//自由节点,作为发起节点来过滤
if(FreeNodeBiz.isFreeNode(checkNodeId)) {
rs.executeQuery("select extendnodeid from workflow_freenode where id = ?", checkNodeId);
if (rs.next()) {
checkNodeId = Util.getIntValue(rs.getString(1));
}
}
//显示意见节点范围
String nodeScopeIds = "," + entity.getNodeScopeIds() + ",";
if (entity.getNodeScopeType() == 1 && nodeScopeIds.indexOf("," + checkNodeId + ",") == -1) {//在节点中选择
continue;
}
if(entity.getNodeScopeType() == 2 && nodeScopeIds.indexOf("," + checkNodeId + ",") != -1) {//在节点中排除选择
continue;
}
}
if(logtype.equals("9") && postil){//批注:被转发人批注或被抄送人提交 这种方式每次去查询性能很低
int calPreRemarkNodeid = nodeid == RequestConstant.ALL_NODE_SIGN_MARK ? nodeid_temp : nodeid;
if(calPreRemarkNodeid < 0) {
calPreRemarkNodeid = nodeid_temp;
}
Map<String, String> isRemarkMap = getIsRemark(currequestid, calPreRemarkNodeid, operator);
String preisremark = Util.null2String(isRemarkMap.get("preisremark"));
int takisremark = Util.getIntValue(Util.null2String(isRemarkMap.get("takisremark")));
if(postilMap.containsKey("viewtype_rpostil")) {//被转发人批注
if(preisremark.equals("1") && takisremark !=2){
continue;
}
}else if(postilMap.containsKey("viewtype_postil")){//被抄送人提交
if(preisremark.equals("9")){
continue;
}
}
}
if (operatorDept <= 0) {
operatorDept = Util.getIntValue(resourcecominfo.getDepartmentID("" + operator));
}
if (operatorSub <= 0) {
operatorSub = Util.getIntValue(resourcecominfo.getSubCompanyID("" + operator));
}
if (operatorJob <= 0) {
operatorJob = Util.getIntValue(resourcecominfo.getJobTitle("" + operator));
}
if ("t".equals(logtype)) {
remark = "";
} else {
if (requestLogId > 0) {//表单签章
rs1.executeSql(" select imageFileId from Workflow_FormSignRemark where requestLogId=" + requestLogId);
if (rs1.next()) {
int imageFileId = Util.getIntValue(rs1.getString("imageFileId"), -1);
if (imageFileId > -1) {
remark = "<img src=\""+weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=" + DocDownloadCheckUtil.checkPermission(imageFileId+"",user) + "\" ></img>";
}
}
} else {
SignSource signSource = SignSource.getSignSource(isMobile);
if(signSource != null) {
if ("1".equals(isshowSrc)) {
remarkSrc = SignSource.getSignSourceNoHtml(signSource,languageid);
}
} else {
if ("1".equals(isshowSrc))
remarkSrc = wfinf.getRemarkSource2(remark);
else
remarkSrc = wfinf.getRemarkSource_WfAutoApprove(remark);
remark = wfinf.removeRemarkSource2(remark);
}
remark = checkRemark(remark, ismode);
}
}
remark = appendSomeContent(remark, appHandWrittenSignID, appSpeechAttahmentID, ismode, remarkLocation,speechAttachmente9);
//签字意见添加全文批注
remark = appendFullTextAnnotation(remark, fulltextannotation);
if (stnull == 1 && "".equals(Util.encodeJS(toExcel(dropScript(remark))))) {//不显示空意见
continue;
}
//添加平行流程其他类型判断
if(siblingOtherType){
preoperators.clear();
}
//最后一次签字意见
if (preoperators.indexOf(operator + "_" + nodeid_temp) == -1 || belongGroup) {
if (showtype == 0) {
if(agenttype > 0){
if(preoperators.indexOf(agentorbyagentid + "_" + nodeid_temp) != -1) continue;
preoperators.add(agentorbyagentid + "_" + nodeid_temp);
}else{
preoperators.add(operator + "_" + nodeid_temp);
}
}
//姓名
String username_tmep = "";
String img = "";
String signatureImg = SecondAuthBiz.getQYSSignatureImg(logId + "", operator + "", user, logIdMap, qysSignInfoMap);
if (!"".equals(signatureImg)) { //优先显示契约锁数据保护或者认证时选择的章
img = signatureImg;
username_tmep = signatureImg;
}else {
if (showimg == 1) {
img = getNameImg(operator, ismode);
username_tmep = img;
}
}
if ("".equals(username_tmep))
username_tmep = resourcecominfo.getResourcename(operator + "");
if (operatortype == 1)
username_tmep = crmcominfo.getCustomerInfoname("" + operator);
if (operatortype == 2)
username_tmep = robotNodeServiceBiz.getRobotNodeSet(nodeid_temp).getOperatorName();
//操作类型
RequestLogOperateName requestLogOperateName = new RequestLogOperateName();
String operateName = "";
if("y".equals(logtype)) {//传阅批示
operateName = requestLogOperateName.getOperateName(workflowid + "", currequestid + "", nodeid_temp + "", logtype, operator + "", languageid,operatedate,operatetime);
}else {
operateName = requestLogOperateName.getOperateName(workflowid + "", currequestid + "", nodeid_temp + "", logtype, operator + "", languageid,operatedate,operatetime);
}
String[] datas = remarkLocation.split(",");
String locationText = "";
if (!remarkLocation.equals("") && datas.length == 4) {
String addr = datas[3];
String lng = datas[1];
String lat = datas[2];
if (Isprint == 1) {
locationText = SystemEnv.getHtmlLabelName(22981, user.getLanguage()) + ":" + addr;
} else {
locationText = SystemEnv.getHtmlLabelName(22981, user.getLanguage()) + ":" + "<a onclick='try {window.openlocation(\"" + remarkLocation + "\");} catch(e){openMap(" + lng + "," + lat + ",\"" + addr + "\");}' title='" + addr + "'>" + addr + "</a>";
}
}
RemarkInfoDTO remarkInfoDTO = new RemarkInfoDTO();
remarkInfoDTO.setOperatedate(operatedate);
remarkInfoDTO.setOperatetime(operatetime);
if (remark.contains("/workflow/request/ViewRequestForwardSPA.jsp")) {
remark = remark.replace("ViewRequestForwardSPA.jsp?", "ViewRequestForwardSPA.jsp?desrequestid=" + remarkRequestid + "&");
}
remarkInfoDTO.setRemark(remark);
remarkInfoDTO.setRemarkSrc(remarkSrc);
remarkInfoDTO.setSignDocs(getSignDocs(signdocids, languageid));
remarkInfoDTO.setSignFlows(getSignFlows(signworkflowids, languageid));
remarkInfoDTO.setSignUploads(getSignUploads(annexdocids, languageid));
remarkInfoDTO.setUsername(username_tmep);
remarkInfoDTO.setOperateName(operateName);
remarkInfoDTO.setPosition(locationText);
String depname = "";
String subname = "";
String jobtitle = "";
remarkInfoDTO.setDeptid(operatorDept);//qc1679821 增加部门id字段
if(operatortype != 1){
depname = orgShowBiz.getDepartmentShow("workflow", operatorDept + "");
subname = orgShowBiz.getSubcompanyShow("workflow", operatorSub + "");
jobtitle = jobComInfo.getJobTitlesname(operatorJob + "");
}
remarkInfoDTO.setDepartment(depname);
remarkInfoDTO.setSubcompany(subname);
remarkInfoDTO.setJobTitle(jobtitle);
remarkInfoDTO.setLanguage(languageid);
remarkInfoDTO.setNameImg(img);
if (FreeNodeBiz.isFreeNode(operatorNodeId)) {
remarkInfoDTO.setOperatorNodeName(freeNodeNameMap.get(operatorNodeId));
} else {
remarkInfoDTO.setOperatorNodeName(workflowNodeComInfo.getNodename(operatorNodeId+""));
}
//代理信息
if (agenttype == 2 && agentorbyagentid > 0) {
remarkInfoDTO.setAgentUser(resourcecominfo.getResourcename(agentorbyagentid + ""));
remarkInfoDTO.setAgentDepartment(orgShowBiz.getDepartmentShow("workflow", resourcecominfo.getDepartmentID(agentorbyagentid + "")));
// remarkInfoDTO.setSubcompany(orgShowBiz.getSubcompanyShow("workflow", resourcecominfo.getSubCompanyID(agentorbyagentid + "")));
// remarkInfoDTO.setJobTitle(jobComInfo.getJobName(resourcecominfo.getJobTitle(agentorbyagentid + "")));
}
remarkList.add(remarkInfoDTO);
//分部
if(belongGroup){
String key = nodeid_temp + "";
if(nodeid == -2){
if(operatorDept >= 0) {//优先取签字意见中的部门
key = operatorDept + "";
} else {
key = resourcecominfo.getDepartmentID(operator+"");
}
} else if(nodeid == -3){
if (operatorSub >= 0) {//优先取签字意见中的分部
key = operatorSub + "";
} else {
key = resourcecominfo.getSubCompanyID(operator+"");
}
}
if(preoperators.indexOf(operator + "_" + nodeid_temp + "_" + key) == -1) {
if (showtype == 0)
preoperators.add(operator + "_" + nodeid_temp + "_" + key);
if(!remarkListMap.containsKey(key)){
remarkListMap.put(key,new ArrayList<>());
remarkKeys.add(Util.getIntValue(key));
}
remarkListMap.get(key).add(remarkInfoDTO);
String keytmp = key;
remarkList_date.add(new HashMap<String,String>(){{put(keytmp,operatedate+" "+operatetime);}});
}
}
}
}
if ("asc".equals(orderby)) {
remarkList = reverseList(remarkList);
}
//手机版只显示一列
if (isfromMobile == 1 || remarkcolumn == 0)
remarkcolumn = 1;
List<RemarkDisplayDTO> showdescByDTO = ShowType.getDisplayList();
//初始化显示模板remarkDispaly的数据
//如果不是默认的话 不需要showdescByDTO 只有是默认的情况下才需要这个list
if (selectformat != 1) {
//默认的需要构建dto实体类
for (RemarkDisplayDTO dto : showdescByDTO) {
dto.setIsshow(0);
dto.setShowtypename(getShowtypeName(dto.getShowtype(), languageid));
if (viewdescall == 1) {
dto.setIsshow(1);
continue;
}
if (vdcomments == 1 && dto.getShowtype() == ShowTypeEnum.COMMENTS.getId()) {
dto.setIsshow(1);
}
if (vmobilesource == 1 && dto.getShowtype() == ShowTypeEnum.MOBILESOURCE.getId()) {
dto.setIsshow(1);
}
if (vdposition == 1 && dto.getShowtype() == ShowTypeEnum.POSITION.getId()) {
dto.setIsshow(1);
}
if (vdsub == 1 && dto.getShowtype() == ShowTypeEnum.SUB.getId()) {
dto.setIsshow(1);
}
if (vdjob == 1 && dto.getShowtype() == ShowTypeEnum.JOB.getId()) {
dto.setIsshow(1);
}
if (vdnodename == 1 && dto.getShowtype() == ShowTypeEnum.NODE.getId()) {
dto.setIsshow(1);
}
if (vsigndoc == 1 && dto.getShowtype() == ShowTypeEnum.DOC.getId()) {
dto.setIsshow(1);
}
if (vsignworkflow == 1 && dto.getShowtype() == ShowTypeEnum.WORKFLOW.getId()) {
dto.setIsshow(1);
}
if (vsignupload == 1 && dto.getShowtype() == ShowTypeEnum.UPLOAD.getId()) {
dto.setIsshow(1);
}
if (vddeptname == 1 && dto.getShowtype() == ShowTypeEnum.DEPTNAME.getId()) {
dto.setIsshow(1);
}
if (vdoperator == 1 && dto.getShowtype() == ShowTypeEnum.OPERATOR.getId()) {
dto.setIsshow(1);
}
if (vddate == 1 && dto.getShowtype() == ShowTypeEnum.DATE.getId()) {
dto.setIsshow(1);
}
if (vdtime == 1 && dto.getShowtype() == ShowTypeEnum.TIME.getId()) {
dto.setIsshow(1);
}
if (vdaction == 1 && dto.getShowtype() == ShowTypeEnum.ACTION.getId()) {
dto.setIsshow(1);
}
// 操作部门和操作人同时存在时, 操作部门和操作人中间显示符号 /
if (vddeptname == 1 && vdoperator == 1 && dto.getShowtype() == 0) {
dto.setIsshow(1);
}
}
}
if (isfromMobile == 1)
remarkcolumn = 1;
//如果业务需求需要对节点、部门、分部按照大小排序那么在这个循环之前对remarkKeys进行排序即可
if(belongGroup){
if(groupOrderType == 2 || groupOrderType == 3){
remarkKeys = remarksort(remarkList_date,groupOrderType);
}
for (Integer remarkKey : remarkKeys) {
String key = remarkKey + "";
List<RemarkInfoDTO> value = remarkListMap.get(key);
String name = "";
if(nodeid == -1){
name = WorkflowBaseBiz.getWorkflowNodeName(remarkKey);
} else if(nodeid == -2){
name = orgShowBiz.getDepartmentShow("workflow", key);
} else if(nodeid == -3){
name = orgShowBiz.getSubcompanyShow("workflow", key);
}
String content = calcRemark(value, workflowid, node_temp, remarkcolumn, languageid, showdescByDTO, selectformat, showDesc, signShowDesc);
Map<String,Object> nodeMark = new HashMap<>();
nodeMark.put("name",name);
nodeMark.put("content",content);
nodeMarkContent.add(nodeMark);
}
} else {
NodeRemark = calcRemark(remarkList, workflowid, node_temp, remarkcolumn, languageid, showdescByDTO, selectformat, showDesc, signShowDesc);
}
}
else if (ismode == 0) {//模版模式
for(Map<String,String> params : dataArr) {
int logId = param2Integer(params,"logId");
int agenttype = param2Integer(params, "agenttype");
int agentorbyagentid = param2Integer(params, "agentorbyagentid");
int operator = param2Integer(params, "operator");
int operatortype = param2Integer(params, "operatortype");
int requestLogId = param2Integer(params, "requestLogId");
int nodeid_temp = param2Integer(params, "nodeid");
String annexdocids = param2String(params, "annexdocids");
String signdocids = param2String(params, "signdocids");
String signworkflowids = param2String(params, "signworkflowids");
int operatorDept = param2Integer(params, "operatorDept");
String logtype = param2String(params, "logtype");
String remark_db = param2String(params, "remark");
//获取手写签批和语音附件 附件ID号
String appHandWrittenSignID = param2String(params, "HandWrittenSign");
int appSpeechAttahmentID = param2Integer(params, "SpeechAttachment");
String remarkLocation = param2String(params, "remarkLocation");
if (vmobilesource == 0 || !"1".equals(isshowSrc)) { //删除签字意见中的 来源信息
remark_db = wfLinkInfo.removeRemarkSource(remark_db);
}
//只是控制html模板中自动提交批准签字意见来源是否显示
if (vmobilesource == 0) {
remark_db = wfLinkInfo.removeRemarkFromAutoApprove(remark_db);
}
if (operatorDept <= 0) {//只能记录下操作人的,如果有代理的情况,那被代理人的部门,只能是当前的部门了
operatorDept = Util.getIntValue(resourcecominfo.getDepartmentID("" + operator));
}
String remark = "";
String remark_check = "";//用于判断原始签字意见是否为空
String formsignremarkimage = "";
int imageFileId = -1;
if (!logtype.equals("t")) {
if (requestLogId > 0) {
//如果使用表单签章,则 设置表单签章内容
rs1.executeSql(" select imageFileId from Workflow_FormSignRemark where requestLogId=" + requestLogId);
if (rs1.next()) {
imageFileId = Util.getIntValue(rs1.getString("imageFileId"), -1);
}
//模板模式下不使用标签
if (imageFileId > -1) {
remark_check = getSeparator2() +weaver.general.GCONST.getContextPath()+ "/weaver/weaver.file.FileDownload?fileid=" + DocDownloadCheckUtil.checkPermission(imageFileId+"",user) + getSeparator2();
if (viewdescall == 1 || vdcomments == 1) {
remark = getSeparator2() +weaver.general.GCONST.getContextPath()+ "/weaver/weaver.file.FileDownload?fileid=" + DocDownloadCheckUtil.checkPermission(imageFileId+"",user) + getSeparator2();
}
} else {
remark_check = "" + Util.getSeparator();
if (viewdescall == 1 || vdcomments == 1) {
remark = "" + Util.getSeparator();
}
}
} else {
//未使用表单签章,则 获取手写输入签字意见内容
remark_check = param2String(params, "remark");
remark_check = wfLinkInfo.removeRemarkSource(remark_check);
if (viewdescall == 1 || vdcomments == 1)
remark = remark_db;
}
}
remark = checkImage(remark);
remark = checkNetImg(remark);
String reamrk_others = "";
//相关文档
if ((viewdescall == 1 || vsigndoc == 1) && !signdocids.trim().equals("")) {
String tempname = getSignDocs(signdocids, languageid);
if (!"".equals(tempname))
reamrk_others += "<br>" + tempname;
}
//相关流程
if ((viewdescall == 1 || vsignworkflow == 1) && !signworkflowids.trim().equals("")) {
String tempname = getSignFlows(signworkflowids, languageid);
if (!"".equals(tempname))
reamrk_others += "<br>" + tempname;
}
//相关附件
if ((viewdescall == 1 || vsignupload == 1) && !annexdocids.trim().equals("")) {
String tempname = getSignUploads(annexdocids, languageid);
if (!"".equals(tempname))
reamrk_others += "<br>" + tempname;
}
username = "";
departmentname = "";
if (!logtype.equals("t")) {
remark = appendSomeContent(remark, appHandWrittenSignID, appSpeechAttahmentID, ismode, remarkLocation,"");
remark = checkRemark(remark, ismode);
}
//判断是否为空意见
boolean isnull_remark = false;
remark_check = appendSomeContent(remark_check, appHandWrittenSignID, appSpeechAttahmentID, ismode, remarkLocation,"");
remark_check = Util.encodeJS(toExcel(dropScript(remark_check)));
if ("".equals(remark_check))
isnull_remark = true;
//不显示空的意见
if (stnull == 1 && isnull_remark) continue;
//读取配置信息,判断当前是否显示全部签字意见,还是显示最一次提交签字意见。
if (preoperators.indexOf(operator + "_" + nodeid_temp) == -1) {
if (!NodeRemark.trim().equals("")) {
//Remark+="<br>";
if (orderby.equals("asc")) {
NodeRemark = "<br>" + NodeRemark;
} else {
NodeRemark += "<br>";
}
}
String userimg = "";
String agentstr = "";
if (operatortype == 0) {
String signatureImg = SecondAuthBiz.getQYSSignatureImg(logId + "", operator + "", user, logIdMap, qysSignInfoMap);
if (!"".equals(signatureImg)) { //优先显示契约锁数据保护或者认证时选择的章
userimg = signatureImg;
} else {
if (showimg == 1) {//个性化签章
if (viewdescall == 1 || vdoperator == 1) {
userimg = getNameImg(operator, ismode);
}
}
}
if ((viewdescall == 1 || vdoperator == 1))
username = resourcecominfo.getResourcename("" + operator);
if (viewdescall == 1 || vddeptname == 1)
departmentname = orgShowBiz.getDepartmentShow("workflow","" + operatorDept);
//被代理
if (agenttype == 2 && agentorbyagentid > 0) {
String tdepartmentname = orgShowBiz.getDepartmentShow("workflow", resourcecominfo.getDepartmentID("" + agentorbyagentid));
if (viewdescall == 1 || (vddeptname == 1 && vdoperator == 1)) {
if (!"".equals(tdepartmentname)) {
agentstr = "(" + SystemEnv.getHtmlLabelName(26241, languageid) + " " + tdepartmentname + "/" + resourcecominfo.getResourcename("" + agentorbyagentid) + ")";
} else {
agentstr = "(" + SystemEnv.getHtmlLabelName(26241, languageid) + " " + resourcecominfo.getResourcename("" + agentorbyagentid) + SystemEnv.getHtmlLabelName(24214, languageid) + ")";
}
} else {
if (vddeptname == 1 && !"".equals(tdepartmentname))
agentstr = "(" + SystemEnv.getHtmlLabelName(26241, languageid) + " " + tdepartmentname + ")";
if (vdoperator == 1)
agentstr = "(" + SystemEnv.getHtmlLabelName(26241, languageid) + " " + resourcecominfo.getResourcename("" + agentorbyagentid) + ")";
}
}
//}
}
if (operatortype == 1) {
if (viewdescall == 1 || vdoperator == 1)
username = crmcominfo.getCustomerInfoname("" + operator);
}
if (operatortype == 2) {
if (viewdescall == 1 || vdoperator == 1)
username = robotNodeServiceBiz.getRobotNodeSet(nodeid_temp).getOperatorName();
}
if (!"".equals(agentstr))
agentstr = " " + agentstr;
if (viewdescall == 1 || (vddeptname == 1 && vdoperator == 1)) {//操作人、部门都显示
if ("".equals(userimg)) {//没签章
if (!"".equals(departmentname))
username = departmentname + "/" + username + agentstr;
else
username = departmentname + username + agentstr;
} else {
if (!"".equals(userimg))//模版模式下签章
username = departmentname + agentstr;
}
} else {
if (vddeptname == 1) {//只显示部门
if ("".equals(userimg)) {//没签章
username = departmentname + agentstr;
} else {
if (!"".equals(userimg))//模版模式下签章
username = departmentname + agentstr;
}
}
if (vdoperator == 1) {//只显示操作人
if ("".equals(userimg)) {//没签章
username += agentstr;
} else {
if (!"".equals(userimg))//模版模式下签章
username = agentstr;
}
}
}
if (viewdescall == 1 || vddate == 1) if (username.equals(""))
username += param2String(params, "operatedate");
else username += " " + param2String(params, "operatedate");
if (viewdescall == 1 || vdtime == 1) if (username.equals(""))
username += param2String(params, "operatetime");
else username += " " + param2String(params, "operatetime");
if (showtype == 0)
preoperators.add(operator + "_" + nodeid_temp);
if (viewdescall == 1 || vdcomments == 1 || !"".equals(reamrk_others.trim())) {
remark += reamrk_others;
String spt = "";
if (ismode == 0) {
if (!"".equals(userimg))
spt = getSeparator2();
}
if (remark != null && (remark.endsWith("</p><script>initFlashVideo();</script>") || remark.endsWith("</p>"))) {
username = remark + spt + username;
} else {
if (remark.endsWith("<br>"))
username = remark + spt + username;
else
username = remark + spt + "<br>" + username;
}
} else {
if (!"".equals(userimg))
username = getSeparator2() + username;
}
if (!userimg.equals("")) {
username += Util.getSeparator() + userimg;
}
if(viewdescall == 1 ||vdaction==1){
RequestLogOperateName requestLogOperateName = new RequestLogOperateName();
String operateName = requestLogOperateName.getOperateName(workflowid + "", Requestid + "", nodeid_temp + "", logtype, operator + "", languageid);
//zzw
username+=" "+operateName;
}
if (orderby.equals("asc")) {
NodeRemark = username + NodeRemark;
NodeRemark = "<br>" + NodeRemark;
} else {
NodeRemark += username;
NodeRemark += "<br>";
}
NodeRemark += getNodeSeparator();
}
}
if (orderby.equals("asc")) {
if (NodeRemark.startsWith("<br>")) {
NodeRemark = NodeRemark.substring("<br>".length());
}
} else {
String tempEndStr = "<br>" + getNodeSeparator();
if (NodeRemark.endsWith(tempEndStr)) {
NodeRemark = NodeRemark.substring(0, NodeRemark.length() - tempEndStr.length());
}
}
NodeRemark = Util.StringReplace(NodeRemark, "&lt;br&gt;", "<br>");
NodeRemark = NodeRemark.replaceAll(getSeparator2() + "<br>", getSeparator2());
NodeRemark = NodeRemark.replaceAll("<br>" + getSeparator2(), getSeparator2());
NodeRemark = NodeRemark.replaceAll(getSeparator2() + "<br>", getSeparator2());
NodeRemark = NodeRemark.replaceAll("<br>" + Util.getSeparator(), getSeparator2());
NodeRemark = NodeRemark.replaceAll("<br>" + getNodeSeparator() + "<br>", "<br><br>");
}
}
//处理完成后还原,下一个重新判断
this.needHide = false;
return NodeRemark;
}
private String getAllFreeNodeIds(){
RecordSet rs = new RecordSet();
rs.executeQuery("select id from workflow_nodebase where IsFreeNode = 1 and requestid = " + Requestid);
List<Integer> freeNodeIds = new ArrayList <>();
while (rs.next()) {
freeNodeIds.add(rs.getInt("id"));
}
freeNodeIds.addAll(FreeNodeBiz.getRequestAllFreeNodeIds(Requestid));
String nodeids = "";
if(freeNodeIds.size() > 0) {
nodeids = CollectionUtil.list2String(freeNodeIds,",");
}
if("".equals(nodeids)) nodeids = "-1";
return nodeids;
}
private String param2String(Map<String,String> params,String key){
return Util.null2String(params.get(key.toLowerCase()));
}
private int param2Integer(Map<String,String> params,String key){
return Util.getIntValue(Util.null2String(params.get(key.toLowerCase())),0);
}
private Map<String,String> getIsRemark(int requestid,int nodeid,int operator){
String preisremark = "";
int takisremark= 1;
Map<String,String> map = new HashMap<>();
RecordSet recordset = new RecordSet();
recordset.executeQuery("select preisremark,takisremark from workflow_currentoperator where userid="+operator+" and nodeid="+nodeid+" and isremark=2 and (preisremark=9 or preisremark=1) and requestid="+requestid+" order by preisremark");
if(recordset.next()){
preisremark = Util.null2String(recordset.getString("preisremark"));
takisremark = Util.getIntValue(recordset.getString("takisremark"));
}
map.put("preisremark",preisremark);
map.put("takisremark",takisremark+"");
return map;
}
/**
*
* @param backfields
* @param fromSql
* @param sqlWhere
* @param ORwhere
* @param orderBy
* @param workflowid
* @param logTypeSet
* @return
*/
private List<Map<String,String>> getRemarkList(String backfields,String fromSql,String sqlWhere,String ORwhere,String orderBy,int workflowid,int requestid,Set<String> logTypeSet,Set<String> logIdSet,boolean recursive){
RecordSet rs = new RecordSet();
String sql = "select " + backfields + " from " + fromSql + " " + sqlWhere;
// System.out.println(requestid+"--getRemarkList sql--"+sql);
if(layoutNodeid == -1 || layoutNodeid == -2 || layoutNodeid == -3 || layoutNodeid == -9999 || layoutNodeid == RequestConstant.ALL_NODE_SIGN_MARK){//签字意见范围控制
rs.writeLog("节点签字意见设置范围viewNodeidScope"+viewNodeidScope+";layoutNodeid:"+layoutNodeid + ";sql:"+sql);
rs.executeQuery("select viewnodeids from workflow_flownode where nodeid = ?",viewNodeidScope);
if(rs.next()){
List<String > viewnodeidsList = Util.TokenizerString(Util.null2String(rs.getString("viewnodeids")),",");
FreeNodeBiz.loadViewLogFreeNodeIds(requestid, viewnodeidsList);
String viewnodeids = "";
for(String nodeid : viewnodeidsList){
viewnodeids += nodeid + ",";
}
if(!"".equals(viewnodeids)){
viewnodeids = viewnodeids.substring(0,viewnodeids.length()-1);
}
sql += ("".equals(viewnodeids) || "-1".equals(viewnodeids)) ? "" : (" and (t1.nodeid in("+viewnodeids+")) ");
rs.writeLog("节点签字意见设置范围viewnodeids"+viewnodeids+";sql:"+sql);
}
}
if (!ORwhere.equals(""))
sql += " and (" + ORwhere + ") ";
sql += orderBy;
List<Map<String,String>> dataArr = new ArrayList<>();
rs.execute(sql);
Map<String, String> signInputMap = ShowType.getSignInputMap();
RecordSet rs1 = new RecordSet();
boolean isNew = true;
DateTransformer dft = new DateTransformer();
UnifiedConversionInterface uci = new UnifiedConversionInterface();
while (rs.next()) {
Map<String,String> map = new HashMap<>();
String[] columnNames = rs.getColumnName();
String operatedate = Util.null2String(rs.getString("operatedate"));
String operatetime = Util.null2String(rs.getString("operatetime"));
if(uci.getTimeZoneStatus()) {
//开启多时区
String[] tempoperatetime = dft.getLocaleDateAndTime(operatedate,operatetime);
operatedate = tempoperatetime[0];
operatetime = tempoperatetime[1];
}
for(String columnName : columnNames){
if("operatedate".equals(columnName.toLowerCase())){
map.put(columnName.toLowerCase(),operatedate);
}else if("operatetime".equals(columnName.toLowerCase())){
map.put(columnName.toLowerCase(),operatetime);
}else{
map.put(columnName.toLowerCase(),rs.getString(columnName));
}
}
String logId = Util.null2String(rs.getString("logId"));
String uuid = Util.null2String(rs.getString("uuid"));
String logtype = Util.null2String(rs.getString("logtype"));
String belongLogtype = signInputMap.get(logtype);
boolean flag = logTypeSet.size() > 0 && (!logTypeSet.contains(logtype) || (logTypeSet.contains(logtype) && recursive && signInputMap.values().contains(logtype)));
if(!flag){
if(logIdSet != null && logIdSet.size() > 0){
if(logIdSet.contains(logId)){
flag = false;
} else {
flag = true;
}
}
}
if("9".equals(logtype) && flag){
String s = "select distinct a.uuid,b.userid,b.operatedate,b.operatetime from workflow_Forward a,workflow_currentoperator b where a.BeForwardid = b.id and b.workflowid = "+workflowid+" and b.requestid = "+requestid+" and b.operatedate = '"+operatedate+"' and b.operatetime = '"+operatetime+"'";
rs1.executeQuery(s);
if(!rs1.next()){
flag = false;
}
}
if(!flag){
dataArr.add(map);
}
if(belongLogtype != null && logTypeSet.contains(belongLogtype) && !"".equals(uuid) && recursive){
String newbackfields = "t1.*";
String newfromSql = fromSql;
String newsqlWhere = "";
if(isNew){
if("9".equals(belongLogtype)){
newfromSql += " inner join (select distinct a.uuid,b.userid,b.operatedate,b.operatetime from workflow_Forward a,workflow_currentoperator b where a.BeForwardid = b.id and b.workflowid = "+workflowid+" and b.requestid = "+requestid+" and b.receivedate = '"+operatedate+"' and b.receivetime = '"+operatetime+"') tt3 on tt3.userid = t1.operator and t1.operatedate = tt3.operatedate and t1.operatetime = tt3.operatetime ";
} else if("y".equals(belongLogtype)){
newfromSql += " inner join workflow_chuanyue tt3 on tt3.userid = t1.operator " +
" inner join workflow_currentoperator tt4 on tt3.userid = tt4.userid and t1.operatedate = tt4.operatedate and t1.operatetime = tt4.operatetime " +
" and t1.requestid = tt4.requestid and t1.nodeid = tt4.nodeid and tt4.receivedate = '"+operatedate+"' and tt4.receivetime = '"+operatetime+"'";
}
} else {
if("9".equals(belongLogtype)){
newfromSql += " inner join (select distinct a.uuid,b.userid from workflow_Forward a,workflow_currentoperator b where a.BeForwardid = b.id and b.workflowid = "+workflowid+" and b.requestid = "+requestid+") tt3 on tt3.userid = t1.operator ";
} else if("y".equals(belongLogtype)){
newfromSql += " inner join workflow_chuanyue tt3 on tt3.userid = t1.operator";
}
}
newsqlWhere += sqlWhere;
newsqlWhere += " and tt3.uuid = '" + uuid + "'";
newsqlWhere += " and (t1.operatedate >= '" + operatedate + "' or (t1.operatedate = '" + operatedate + "' and t1.operatetime >= '" + operatetime + "'))";
String newORwhere = " 1=1 and logtype = '"+belongLogtype+"' ";
dataArr.addAll(getRemarkList(newbackfields,newfromSql,newsqlWhere,newORwhere,orderBy,workflowid,requestid,logTypeSet,logIdSet,false));
}
}
return dataArr;
}
/**
*
*
* @param list
* @param workflowid
* @param nodeid
* @param remarkcolumn
* @param language
* @return
*/
private String calcRemark(List<RemarkInfoDTO> list, int workflowid, int nodeid, int remarkcolumn, int language, List<RemarkDisplayDTO> displayList, int selectformat, String showdesc, String signShowDesc) {
// 保存showDesc 以便当使用个性签章时 showDesc值变为signShowDesc 但循环判断时需要先把showDesc还原
String showDescBak = showdesc;
if("".equals(lastTableContent) && (list == null || list.size() == 0))
return ""; //节点无意见的不返回table布局避免占空间
StringBuffer result = new StringBuffer();
isTableShow = false;
String contentBefore = "";
String contentAfter = "";
//存在表头表尾标识,按照表格显示
if(selectformat == 1 && showdesc != null && showdesc.indexOf("$viewdesc_table_start$") > -1 && showdesc.indexOf("$viewdesc_table_end$") > -1) {
try {
String json = JSON.parseObject(showdesc).getString("json");
List<NodeFormDesc> nodeFormDescList = JSON.parseArray(json, NodeFormDesc.class);
if (nodeFormDescList.size() > 0) {
NodeFormDesc nodeFormDesc = nodeFormDescList.get(0);
contentBefore = Util.null2String(nodeFormDesc.getTableHtml(0, user));
contentAfter = nodeFormDesc.getTableHtml(2, user);
}
} catch (Exception e) {
e.printStackTrace();
}
if(!"".equals(contentBefore.trim()) && contentBefore.toLowerCase().indexOf("<table") > -1) {
isTableShow = true;
}
}
//签章意见是否设置为表格显示
boolean isSignTableShow = false;
if(selectformat == 1 && signShowDesc != null && signShowDesc.indexOf("$viewdesc_table_start$") > -1 && signShowDesc.indexOf("$viewdesc_table_end$") > -1) {
String signShowContentBefore = "";
try {
String json = JSON.parseObject(signShowDesc).getString("json");
List<NodeFormDesc> nodeFormDescList = JSON.parseArray(json, NodeFormDesc.class);
if (nodeFormDescList.size() > 0) {
NodeFormDesc nodeFormDesc = nodeFormDescList.get(0);
signShowContentBefore = nodeFormDesc.getTableHtml(0, user);
}
} catch (Exception e) {
e.printStackTrace();
}
if(!"".equals(signShowContentBefore.trim())) {
isSignTableShow = true;
}
}
//表格形式显示, 不分栏
if(isTableShow) {
remarkcolumn = 1;
}
List<List<String>> columnList = new ArrayList<List<String>>(remarkcolumn);//用于存储每一列的签字意见
for (int i = 0; i < remarkcolumn; i++) {
List<String> column = new ArrayList<String>();
columnList.add(column);
}
for (int i = 0; i < list.size(); i++) {
if(showdesc!=null && showdesc.equals(signShowDesc)){
showdesc = showDescBak; // 恢复原本的默认格式
}
//每一条意见
RemarkInfoDTO dto = list.get(i);
//2023.02.15查询上级部门ID
String deptSql = "select supdepid from hrmdepartment where id = '"+dto.getDeptid()+"'";
RecordSet rsd = new RecordSet();
rsd.executeQuery(deptSql);
String supdepId="";
if(rsd.next()){
supdepId = rsd.getString("supdepid");
}
if ("0".equals(supdepId)){
supdepId=String.valueOf(dto.getDeptid());
}
log.info("【查询部门supdepId========】:"+supdepId);
String temp_remark = "";
if (selectformat != 1) {
//安装默认格式读取
temp_remark = getRemarkBySetting(dto, displayList, language);
} else {
//有签章,且不是表格显示,取签章设置
if (!"".equals(dto.getNameImg()) && !isTableShow && !isSignTableShow) {
showdesc = signShowDesc;
}
temp_remark = ShowType.doReplaceDesc(dto, showdesc, user, i+1);
}
//qc1679821 将部门id加到html中 用于后面处理分类
temp_remark += "<span style='display:none' name='$remark_dept_id$'>"+supdepId+"</span>";
// temp_remark += "<span style='display:none' name='$remark_dept_id$'>"+dto.getDeptid()+"</span>";
int columlIndex = i % remarkcolumn;
columnList.get(columlIndex).add(temp_remark);//把数据加入指定列
}
int remarkSize = list.size();
if (remarkSize == 0)
remarkSize = 1;
int width_percent = 0;
if (remarkSize < remarkcolumn) {//如果意见数量小于列数,则按照实际意见数平分列宽
width_percent = 100 / remarkSize;
remarkcolumn = remarkSize;
} else
width_percent = 100 / remarkcolumn;
//form_sign_cellbr 2: 签字意见不换行显示
boolean needBr = !"2".equals(new WorkflowConfigComInfo().getValue("form_sign_cellbr"));
//按照表格形式显示
if (isTableShow) {
result.append("<div id='formremark_" + nodeid + "' class='wf-req-cell-remark-div' width='100%'>");
for (int i = 0; i < remarkcolumn; i++) {
//多字段同一个单元格显示, 将上一个字段的内容拼接过来
this.tableContent = lastTableContent + getColumnString(columnList.get(i), false);
result.append(contentBefore).append(tableContent).append(contentAfter);
}
result.append("</div>");
} else {
//普通模式显示
result.append("<table id='formremark_" + nodeid + "' class='wf-req-cell-remark' width='100%' style='table-layout:fixed;'><tr>");
for (int i = 0; i < remarkcolumn; i++) {
//qc1679821 remarkHtml为该节点所有签字意见
String remarkHtml = "";
if(needHide){
remarkHtml = getColumnString1(columnList.get(i), needBr);//处理成需要折叠显示的格式
}else{//非折叠走标准逻辑
remarkHtml = getColumnString(columnList.get(i), needBr);
}
result.append("<td needline='true' style='vertical-align:top;word-break: break-all;' width='" + width_percent + "%'>").append(remarkHtml).append("</td>");
if(remarkcolumn - i >= 2){//意见分栏中间留出一部分空白区域
result.append("<td style=\"width:23px\"></td>");
}
}
result.append("</tr></table>");
}
return result.toString();
}
/**
*
*
* @param list
* @return
*/
private String getColumnString(List<String> list) {
return this.getColumnString(list, true);
}
/**
*
*
* @param list
* @return
*/
private String getColumnString(List<String> list, boolean needBr) {
String result = "";
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
if (i > 0 && needBr)
result += hr;
result += s;
}
return result;
}
/**
*
*
* @param remarkInfoDTO
* @param displayList
* @return
*/
public String getRemarkBySetting(RemarkInfoDTO remarkInfoDTO, List<RemarkDisplayDTO> displayList, int language) {
String result = "";
int enter = 0;
int i = 0;
int lastShowtype = -1;
int isShowTemp = 0;
//是否显示部门
boolean isshowDepartment = false;
boolean isshowOperator = false;
int departMentIndex = -1;
int operatorIndex = -1;
int index = 0;
for (RemarkDisplayDTO displayDTO : displayList) {
if (displayDTO.getShowtype() == 6) {//部门
if (displayDTO.getIsshow() == 1) {
isshowDepartment = true;
departMentIndex = index;
}
} else if (displayDTO.getShowtype() == 7) {
if (displayDTO.getIsshow() == 1) {
isshowOperator = true;
operatorIndex = index;
}
}
//有签章
if (!"".equals(remarkInfoDTO.getNameImg())) {
if (displayDTO.getShowtype() == 0) {
isShowTemp = displayDTO.getIsshow();
displayDTO.setIsshow(0);
}
//操作人应该在操作部门前面
if (displayDTO.getShowtype() == 7 && isshowDepartment) {
RemarkDisplayDTO departmentDTO = displayList.get(departMentIndex);
if (departmentDTO != null && departmentDTO.getShowtype() == 6 && departmentDTO.getIsshow() == 1) {
RemarkDisplayDTO temp = departmentDTO;
displayList.set(departMentIndex, displayDTO);
displayList.set(index, temp);
}
}
}else{ // 非签章
// 部门在操作人前面
if(displayDTO.getShowtype() == 6 && isshowDepartment && operatorIndex > -1){
RemarkDisplayDTO operatorDTO = displayList.get(operatorIndex);
if(operatorDTO!=null && operatorDTO.getShowtype() == 7 && operatorDTO.getIsshow() == 1){
RemarkDisplayDTO temp = operatorDTO;
displayList.set(index,temp);
displayList.set(operatorIndex,displayDTO);
}
}
}
index++;
}
//拼装签字意见信息
for (RemarkDisplayDTO displayDTO : displayList) {
//显示项内容
int showtype = displayDTO.getShowtype();
if (displayDTO.getIsshow() != 1)
continue;
String showText = "";
if (showtype == 0) {//文本内容
if (!isshowDepartment || !isshowOperator) {
continue;
}
showText = displayDTO.getTextvalue();
if (showText == null || "".equals(showText))
showText = "&nbsp;";
showText = showText.replaceAll(" ", "&nbsp;");
} else if (showtype == 1) {//处理意见
showText = remarkInfoDTO.getRemark();
} else if (showtype == 2) {//意见来源
showText = remarkInfoDTO.getRemarkSrc();
} else if (showtype == 3) {//相关文档
showText = remarkInfoDTO.getSignDocs();
} else if (showtype == 4) {//相关流程
showText = remarkInfoDTO.getSignFlows();
} else if (showtype == 5) {//相关附件
showText = remarkInfoDTO.getSignUploads();
} else if (showtype == 6) {//操作部门
showText = remarkInfoDTO.getDepartment();
} else if (showtype == 7) {//操作人
//有签章需要回车
if (!"".equals(remarkInfoDTO.getNameImg())) {
displayDTO.setEnter(1);
}else{
displayDTO.setEnter(0);
}
showText = remarkInfoDTO.getUsername();
String agentUser = Util.null2String(remarkInfoDTO.getAgentUser());
if (!"".equals(agentUser)) { //拼装代理信息
showText += "(" + SystemEnv.getHtmlLabelName(26241, language) + " ";
String agentDepartment = Util.null2String(remarkInfoDTO.getAgentDepartment());
if (isshowDepartment && !"".equals(agentDepartment)) {
showText += agentDepartment + "/";
}
showText += agentUser + ")";
}
} else if (showtype == 8) {//操作日期
showText = remarkInfoDTO.getOperatedate();
} else if (showtype == 9) {//操作时间
showText = remarkInfoDTO.getOperatetime();
} else if (showtype == 10) {//操作
showText = remarkInfoDTO.getOperateName();
} else if (showtype == 11) {//位置
showText = remarkInfoDTO.getPosition();
} else if(showtype == 12) {//分部
showText = remarkInfoDTO.getSubcompany();
} else if (showtype == 13) {//岗位
showText = remarkInfoDTO.getJobTitle();
} else if (showtype == 16) {
showText = remarkInfoDTO.getOperatorNodeName();
}
if (showText == null || "".equals(showText))
continue;
if (i == 0 || enter == 1) {
if (displayDTO.getAlign() == 0)
//text-align:left;
result += "<div style='width:100%;'>";
else
//text-align:right;
result += "<div style='width:100%;'>";
}
if (showtype == 0) {
if (i != 0 && enter != 1 && lastShowtype != 0)
result = result.substring(0, result.length() - 1); //如果是自定义文本,则去掉默认增加的空格
result += showText;
} else
result += showText + " ";
enter = displayDTO.getEnter();
if (enter == 1)
result += "</div>";
i++;
lastShowtype = showtype;
}
if (i > 0)
result += "</div>";
// 还原有签章格式 showtype==0 isShow改为原本的isshow的值
for (RemarkDisplayDTO displayDTO : displayList){
if(displayDTO.getShowtype() == 0 && displayDTO.getIsshow() == 0){
if(0 !=isShowTemp ){
displayDTO.setIsshow(isShowTemp);
}
}
}
return result;
}
public static void main(String[] args) {
String abc = " ";
String s = abc.replaceAll(" ", "&nbsp;");
System.out.println(s);
}
/**
* list
*
* @param in
* @return
*/
public List reverseList(List in) {
List out = new ArrayList();
int size = in.size();
if (size > 0) {
for (int i = size - 1; i >= 0; i--) {
out.add(in.get(i));
}
}
return out;
}
/**
*
*
* @param userid
* @param ismode
* @return
*/
public String getNameImg(int userid, int ismode) {
String filepath = "";
RecordSet recordSet = new RecordSet();
recordSet.executeSql("select * from DocSignature where hrmresid=" + userid + " and sealType=1 order by case when isdefault is null then ' ' else isdefault end desc,markid ");
if (recordSet.next()) {
filepath = Util.null2String(recordSet.getString(1));
}
if (!filepath.equals("")) {
OdocFileUtil odocfileutil = new OdocFileUtil();
String imgheight = recordSet.getPropValue("WFSignatureImg", "imgheight");
if (ismode == 2) {
if (StringUtils.isEmpty(imgheight)){
filepath = "<img class=\"signatureImg\" draggable=\"false\" src=\"" +weaver.general.GCONST.getContextPath()+ "/weaver/weaver.file.ImgFileDownload?userid=" + userid + "&sealType=1\"></img>";
}else {
String useridrandom = odocfileutil.changeParamToBase64Str(userid+"");
filepath = "<img class=\"signatureImg\" draggable=\"false\" style=\"max-height:"+imgheight+"px;\" src=\"" +weaver.general.GCONST.getContextPath()+ "/weaver/weaver.file.ImgFileDownload?userid=" + useridrandom + "&sealType=1\"></img>";
}
} else {
String useridrandom = odocfileutil.changeParamToBase64Str(userid+"");
filepath = weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.ImgFileDownload?userid=" + useridrandom + "&sealType=1" + getSeparator2();
}
}
return filepath;
}
/**
* remark
*
* @param remark
* @return
*/
private String checkRemark(String remark, int ismode) {
if (ismode == 2) {
try {
//Html模式下要考虑去掉最后一个</p>
if (remark.indexOf("initFlashVideo") > -1 && remark.indexOf("</p>") > -1) {
int index_1 = remark.lastIndexOf("</p>");
remark = remark.substring(0, index_1) + remark.substring(index_1 + 4);
}
} catch (Exception e) {
}
}
remark = remark.replaceAll("\n", "");
remark = remark.replaceAll("<br/></p>", "</p>");
remark = remark.replaceAll("</p><p", "</span><br><span");//两个<p>换行的,加上<br>
remark = remark.replaceAll("<p>", "<span>");
remark = remark.replaceAll("<P>", "<span>");
remark = remark.replaceAll("<p", "<span");
remark = remark.replaceAll("<P", "<span");
remark = remark.replaceAll("</p>", "</span>");
remark = remark.replaceAll("</P>", "</span>");
remark = remark.replaceAll("\r\n", "");
remark = remark.replaceAll("name=\".*?\"", "");
remark = remark.replaceAll("id=\".*?\"", "");
remark = remark.replaceAll("<br/>", "");
remark = remark.replaceAll("<br><br><span _target='wfautoapprove' style='font-size:11px;color:#666;'>", "<br><span _target='wfautoapprove' style='font-size:11px;color:#666;'>");
return remark;
}
/**
*
*
* @param docids
* @param languageid
* @return
*/
private String getSignDocs(String docids, int languageid) {
String tempname = "";
ArrayList templist = Util.TokenizerString(docids, ",");
for (int i = 0; i < templist.size(); i++) {
String _docid = (String) templist.get(i);
if (Util.getIntValue(_docid) <= 0) {
continue;
}
String tempdocname = docinf.getDocname(_docid);
if (0 == Isprint) {
tempdocname = "<a style=\"cursor:pointer\" onclick=\"addDocReadTag(" + _docid + ");openFullWindowHaveBar('/docs/docs/DocDsp.jsp?id=" + _docid + "&isrequest=1&requestid=" + Requestid + "')\">" + tempdocname + "</a>";
} else {
tempdocname = tempdocname;
}
if (tempdocname != null && !tempdocname.trim().equals("")) {
if (tempname.equals("")) {
tempname = tempdocname;
} else {
tempname += "," + tempdocname;
}
}
}
tempname = tempname.trim();
if (!"".equals(tempname))
tempname = SystemEnv.getHtmlLabelName(857, languageid) + ":" + tempname;
return tempname;
}
/**
*
*
* @param signworkflowids
* @param languageid
* @return
*/
private String getSignFlows(String signworkflowids, int languageid) {
ArrayList templist = Util.TokenizerString(signworkflowids, ",");
String tempname = "";
int tempnum = request == null ? 0 : Util.getIntValue(String.valueOf(request.getSession().getAttribute("slinkwfnum")));
for (int i = 0; i < templist.size(); i++) {
String temprequestname = wfrequestcominfo.getRequestName((String) templist.get(i));
//处理相关流程
tempnum++;
if (request != null)
request.getSession().setAttribute("resrequestid" + tempnum, "" + templist.get(i));
String temprequestnameL = "";
if (0 == Isprint)
temprequestnameL = "<a style=\"cursor:pointer\" onclick=\"openFullWindowHaveBar('/workflow/request/ViewRequestForwardSPA.jsp?isrequest=1&requestid=" + templist.get(i) + "&wflinkno=" + tempnum + "&desrequestid=" + remarkRequestid + "')\">" + temprequestname + "</a>";
else
temprequestnameL = temprequestname;
if (temprequestname != null && !temprequestname.trim().equals("")) {
if (tempname.equals("")) {
tempname = temprequestnameL;
} else {
tempname += "," + temprequestnameL;
}
}
}
if (request != null) {
request.getSession().setAttribute("slinkwfnum", "" + tempnum);
request.getSession().setAttribute("haslinkworkflow", "1");
}
tempname = tempname.trim();
if (!"".equals(tempname))
tempname = SystemEnv.getHtmlLabelName(1044, languageid) + ":" + tempname;
return tempname;
}
/**
*
*
* @param annexdocids
* @param languageid
* @return
*/
private String getSignUploads(String annexdocids, int languageid) {
ArrayList templist = Util.TokenizerString(annexdocids, ",");
String _tempdocids = ""; //记录已经添加的id
String tempname = "";
String _docid = "";
for (int i = 0; i < templist.size(); i++) {
_docid = (String) templist.get(i);
//过滤重复docid
if (("," + _tempdocids + ",").indexOf("," + _docid + ",") != -1) {
continue;
}
String tempdocname = docinf.getDocname((String) templist.get(i));
if (0 == Isprint) {
tempdocname = "<a style=\"cursor:pointer\" onclick=\"addDocReadTag(" + _docid + ");openFullWindowHaveBar('/docs/docs/DocDsp.jsp?id=" + _docid + "&isrequest=1&requestid=" + Requestid + "')\">" + tempdocname + "</a>";
} else {
tempdocname = tempdocname;
}
if (tempdocname != null && !tempdocname.trim().equals("")) {
if (tempname.equals("")) {
tempname = tempdocname;
} else {
tempname += "," + tempdocname;
}
}
_tempdocids += "," + _docid;
}
tempname = tempname.trim();
if (!"".equals(tempname))
tempname = SystemEnv.getHtmlLabelName(22194, languageid) + ":" + tempname;
return tempname;
}
/**
*
*
* @param workflowid
* @param nodeid
* @return
*/
public List<RemarkDisplayDTO> getDisplayList(int workflowid, int nodeid, int language) {
RecordSet rs = new RecordSet();
List<RemarkDisplayDTO> result = new ArrayList<RemarkDisplayDTO>();
rs.execute("select isfreenode,startnodeid from workflow_nodebase where id = " + nodeid);
int isprint = 0;
if (rs.next()) {
int isfreenode = rs.getInt(1);
if (isfreenode == 1) {
nodeid = rs.getInt(2);
}
String sql = "select * from workflow_remarkdisplay where workflowid = " + workflowid + " and nodeid = " + nodeid + " order by listorder asc";
RecordSetExtend recordSetExtend = new RecordSetExtend();
result = recordSetExtend.queryList(sql, RemarkDisplayDTO.class);
if (result.size() > 0) {
for (RemarkDisplayDTO dto : result) {
dto.setShowtypename(getShowtypeName(dto.getShowtype(), language));
}
} else {//如果之前没有设置,则返回初始设置
/* *********
/ */
for (int i = 1; i <= 10; i++) {
RemarkDisplayDTO remarkDisplayDTO = new RemarkDisplayDTO();
remarkDisplayDTO.setShowtype(i);
remarkDisplayDTO.setShowtypename(getShowtypeName(i, language));
remarkDisplayDTO.setAlign(0);//左对齐
int enter = 1;
if (i >= 6) //部门,人员,日期,时间 后不需要换行
enter = 0;
remarkDisplayDTO.setEnter(enter);
int isshow = 1;
if (i == 10)
isshow = 0;//操作默认不显示
remarkDisplayDTO.setIsshow(isshow);
result.add(remarkDisplayDTO);
if (i == 2) {//意见来源后面增加个 位置
RemarkDisplayDTO remarkDisplayDTO2 = new RemarkDisplayDTO();
remarkDisplayDTO2.setShowtype(11);
remarkDisplayDTO2.setAlign(0);//左对齐
remarkDisplayDTO2.setEnter(1);
remarkDisplayDTO2.setIsshow(1);
remarkDisplayDTO2.setShowtypename(getShowtypeName(11, language));
result.add(remarkDisplayDTO2);
}
if (i == 6) {//部门后面默认增加字符 /
RemarkDisplayDTO remarkDisplayDTO2 = new RemarkDisplayDTO();
remarkDisplayDTO2.setShowtype(0);
remarkDisplayDTO2.setAlign(0);//左对齐
remarkDisplayDTO2.setEnter(0);
remarkDisplayDTO2.setIsshow(1);
remarkDisplayDTO2.setTextvalue("/");
result.add(remarkDisplayDTO2);
}
}
}
}
return result;
}
/**
* (-1 -2 -3 -4 -5 -6 -7 -8 -9 -10 11--0)
*
* @param showtype
* @param language
* @return
*/
public String getShowtypeName(int showtype, int language) {
String result = "";
if (showtype == 1)
result = SystemEnv.getHtmlLabelName(21662, language);
else if (showtype == 2)
result = SystemEnv.getHtmlLabelName(129021, language);
else if (showtype == 3)
result = SystemEnv.getHtmlLabelName(857, language);
else if (showtype == 4)
result = SystemEnv.getHtmlLabelName(1044, language);
else if (showtype == 5)
result = SystemEnv.getHtmlLabelName(22194, language);
else if (showtype == 6)
result = SystemEnv.getHtmlLabelName(33826, language);
else if (showtype == 7)
result = SystemEnv.getHtmlLabelName(17482, language);
else if (showtype == 8)
result = SystemEnv.getHtmlLabelName(21663, language);
else if (showtype == 9)
result = SystemEnv.getHtmlLabelName(15502, language);
else if (showtype == 10)
result = SystemEnv.getHtmlLabelName(129022, language);
else if (showtype == 11)
result = SystemEnv.getHtmlLabelName(22981, language);
return result;
}
/**
* @param appHandWrittenSignID
* @param appSpeechAttahmentID
* @param remark
* @param mode 2HTML0
* @return
*/
private String appendSomeContent(String remark, int appHandWrittenSignID, int appSpeechAttahmentID, int mode, String remarkLocation) {
return appendSomeContent(remark,String.valueOf(appHandWrittenSignID),appSpeechAttahmentID,mode, remarkLocation,"");
}
private String appendSomeContent(String remark, String appHandWrittenSignID, int appSpeechAttahmentID, int mode, String remarkLocation,String speechAttachmente9) {
//处理手机版中所添加的来源的后缀。
String mobileSuffix = WorkflowSpeechAppend.getMobileSuffix(remark);
if (mobileSuffix != null) {
remark = remark.substring(0, remark.lastIndexOf(mobileSuffix));
}
if (mobileSuffix == null) {
String autoapprovsuffix = "<br/><br/><span _target='wfautoapprove' style='font-size:11px;color:#666;'>";
if (remark.indexOf(autoapprovsuffix) > 0) {
mobileSuffix = remark.substring(remark.indexOf(autoapprovsuffix));
remark = remark.substring(0, remark.indexOf(autoapprovsuffix));
}
}
//获取签字意见中的电子签章部分。
String eletriSignature = WorkflowSpeechAppend.getElectrSignatrue(remark);
if (eletriSignature != null) {
remark = remark.substring(0, remark.lastIndexOf(eletriSignature));
}
if (mode == 2) {
//HTML模式下追加手写签批、语音附件内容和电子签章图片
if(appHandWrittenSignID!=null && !"".equals(appHandWrittenSignID)) {
String[] appHandWrittenSignIds = appHandWrittenSignID.split(",");
for(int i = 0;i < appHandWrittenSignIds.length;i++) {
int appHandWrittenSignId = Util.getIntValue(appHandWrittenSignIds[i]);
if (appHandWrittenSignId > 0) {
remark += "<br><img name=\"handWrittenSign\" class=\"handWrittenSign\" src=\""+weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=" + DocDownloadCheckUtil.checkPermission(appHandWrittenSignId+"",user) + "\" ></img>";
}
}
}
if(appSpeechAttahmentID > 0) {
remark += "<br><embed name=\"speechAttachment\" height=\"25px\" width=\"300px\" name=\"speechPlayer\" src=\"audioPlayer.swf?audioUrl="+weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=" + DocDownloadCheckUtil.checkPermission(appSpeechAttahmentID+"",user) + "\" type=\"application/x-shockwave-flash\"/>";
}
if(!"".equals(speechAttachmente9)) {
String[] speechIds = Util.splitString(speechAttachmente9,",");
for(String speechid : speechIds) {
int _speechid = Util.getIntValue(speechid);
if (_speechid > 0) {
DocAttachment attenchmentDoc = WorkflowSpeechAppend.getAttachment(_speechid);
String fileType = attenchmentDoc.getFiletype();
if (fileType.indexOf("/") >= 0) {
fileType = fileType.substring(fileType.indexOf("/") + 1);
String audioSrc = "data:audio/" + fileType + ";base64," + WorkflowSpeechAppend.getAppend(_speechid);
remark += "<audio controls preload=\"auto\"><source src='" + audioSrc + "'/></audio>";
}
}
}
}
if (eletriSignature != null) {
remark += eletriSignature;
}
} else if (mode == 0) {
//模板模式下,只显示手写签批 电子签单,不显示语音附件
if(appHandWrittenSignID!=null && !"".equals(appHandWrittenSignID)) {
String[] appHandWrittenSignIds = appHandWrittenSignID.split(",");
for (int i = 0; i < appHandWrittenSignIds.length; i++) {
int appHandWrittenSignId = Util.getIntValue(appHandWrittenSignIds[i]);
if (appHandWrittenSignId > 0) {
remark += getSeparator2() + weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=" + DocDownloadCheckUtil.checkPermission(appHandWrittenSignId+"",user) + getSeparator2();
}
}
}
//处理电子签章
if (eletriSignature != null) {
Document docObj = Jsoup.parse(eletriSignature, weaver.general.GCONST.XML_UTF8);
Elements elementObjs = docObj.getElementsByTag("img");
if (elementObjs.size() > 0) {
String imgURL = elementObjs.get(0).attr("src");
remark += getSeparator2() + imgURL;
}
}
}
//追加来源信息。
if (mobileSuffix != null) {
if(appHandWrittenSignID!=null && !"".equals(appHandWrittenSignID)) {
String[] appHandWrittenSignIds = appHandWrittenSignID.split(",");
for (int i = 0; i < appHandWrittenSignIds.length; i++) {
int appHandWrittenSignId = Util.getIntValue(appHandWrittenSignIds[i]);
if (appHandWrittenSignId > 0 && mode == 0)
remark += mobileSuffix.replaceAll("<br/><br/>", "");
else
remark += "<br>" + mobileSuffix.replaceAll("<br/><br/>", "");
}
}
}
return remark;
}
/**
*
*
* @param remarkContent
* @return
*/
private String checkImage(String remarkContent) {
String result = "";
BaseBean baseBean = new BaseBean();
Matcher slashMatcher = Pattern.compile("<img").matcher(remarkContent);
Matcher slashMatcher2 = Pattern.compile("/>").matcher(remarkContent);
String separator = (char) 3 + "";
int start = 0;
int end = 0;
while (slashMatcher.find()) {
start = slashMatcher.start();
if (start > 0)
result += separator + remarkContent.substring(end, start);
boolean flag = true;
while (flag) {
slashMatcher2.find();
end = slashMatcher2.end();
if (end > start)
flag = false;
}
if (end > 0)
result += separator + remarkContent.substring(start, end);
}
result += separator + remarkContent.substring(end);
if ("".equals(result))
result = remarkContent;
else
result = result.substring(1);
return result;
}
/**
* imghttp /weaver/weaver.file.FileDownload?fileid=&type=netimag&urlstr=
*
* @param remarkContent
* @return
*/
private String checkNetImg(String remarkContent) {
String result = "";
Matcher slashMatcher = Pattern.compile("<img").matcher(remarkContent);
Matcher slashMatcher2 = Pattern.compile("/>").matcher(remarkContent);
String separator = (char) 3 + "";
int start = 0;
int end = 0;
while (slashMatcher.find()) {
start = slashMatcher.start();
if (start > 0)
result += remarkContent.substring(end, start);
boolean flag = true;
while (flag) {
slashMatcher2.find();
end = slashMatcher2.end();
if (end > start)
flag = false;
}
String img = remarkContent.substring(start, end);
String temp_img = "";
if (img.indexOf("src=\"http://") > -1) {
int ss = img.indexOf("src=\"http://") + 5;
int ee = img.lastIndexOf("\"");
String imgurl = img.substring(ss, ee);
temp_img += img.substring(0, ss);
int indexOf = imgurl.indexOf("/weaver/weaver.file.FileDownload");
if (indexOf >= 0)
temp_img += imgurl.substring(indexOf);
else
temp_img += weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=&type=netimag&urlstr=" + URLEncoder.encode(imgurl);
temp_img += img.substring(ee);
} else
temp_img = img;
if (end > 0)
result += temp_img;
}
result += remarkContent.substring(end);
return result;
}
/**
*
*
* @return
*/
public static char getNodeSeparator() {
return 3;
}
public static String getSeparator2() {
String result = (char) 1 + "";
return result;
}
/**
*
*
* @param fieldname
* @param isbill
*/
public void getSelectItem(String fieldname, String isbill) {
RecordSet rs = new RecordSet();
String item = "";
String itemvalue = "";
String isdefault = "n";
String cancel = "";
int fieldid = 0;
int indx = fieldname.indexOf("_");
if (indx > 0) {
fieldname = fieldname.substring(0, indx);
}
fieldid = Util.getIntValue(Util.StringReplace(fieldname, "field", ""), 0);
SelectDefaults = new ArrayList();
SelectItems = new ArrayList();
SelectItemValues = new ArrayList();
SelectCancelValues = new ArrayList();
rs.executeSql("select selectname, selectvalue,isdefault,cancel from workflow_SelectItem where fieldid=" + fieldid + " and isbill=" + isbill + " ORDER BY listorder");
while (rs.next()) {
item = Util.toHtmlMode(rs.getString("selectname"));
cancel = Util.null2String(rs.getString("cancel"));
itemvalue = Util.null2String(rs.getString("selectvalue"));
isdefault = Util.null2String(rs.getString("isdefault"));
SelectItems.add(item);
SelectCancelValues.add(cancel);
SelectItemValues.add(itemvalue);
SelectDefaults.add(isdefault);
}
}
/**
* BROWSER
*
* @param fieldvalue
* @param fieldtype
* @return
*/
public String getFieldName(String fieldvalue, int fieldtype) {
return getFieldName(fieldvalue, fieldtype, "");
}
/**
* BROWSER
*
* @param fieldvalue
* @param fieldtype
* @param fielddbtype
* @return
*/
public String getFieldName(String fieldvalue, int fieldtype, String fielddbtype){
return this.getFieldName(fieldvalue, fieldtype, fielddbtype, new HashMap<>());
}
public String getFieldName(String fieldvalue, int fieldtype, String fielddbtype, Map<String,Object> otherparams) {
RecordSet rs = new RecordSet();
String fieldname = "";
if (fieldtype != 2 && fieldtype != 290 && fieldtype != 19 && fieldtype != 402 && fieldtype != 403 && fieldvalue != null && !fieldvalue.trim().equals("") && fieldtype != 226) {
fieldvalue = fieldvalue.trim();
if (fieldvalue.substring(fieldvalue.length() - 1).equals(","))
fieldvalue = fieldvalue.substring(0, fieldvalue.length() - 1);
ArrayList tempshowidlist = Util.TokenizerString(fieldvalue, ",");
if (fieldtype == 8 || fieldtype == 135) {
//项目,多项目
for (int k = 0; k < tempshowidlist.size(); k++) {
fieldname += Util.StringReplace(prjcominfo.getProjectInfoname((String) tempshowidlist.get(k)), ",", "") + ",";
}
} else if (fieldtype == 1 || fieldtype == 17 || fieldtype == 160 || fieldtype == 165 || fieldtype == 166) {
//人员,多人员
for (int k = 0; k < tempshowidlist.size(); k++) {
fieldname += resourcecominfo.getLastname((String) tempshowidlist.get(k)) + ",";
}
} else if (fieldtype == 7 || fieldtype == 18) {
//客户,多客户
for (int k = 0; k < tempshowidlist.size(); k++) {
fieldname += Util.StringReplace(crmcominfo.getCustomerInfoname((String) tempshowidlist.get(k)), ",", "") + ",";
}
} else if (fieldtype == 4 || fieldtype == 57 || fieldtype == 167 || fieldtype == 168) {
//部门,多部门
for (int k = 0; k < tempshowidlist.size(); k++) {
String showdeptname = "";
String showdeptid = (String) tempshowidlist.get(k);
if (!"".equals(showdeptid)) {
showdeptname = orgShowBiz.getDepartmentShow("workflow", showdeptid);
}
fieldname += Util.StringReplace(showdeptname, ",", "") + ",";
}
} else if (fieldtype == 164 || fieldtype == 194 || fieldtype == 169 || fieldtype == 170) {
//分部,多分部
for (int k = 0; k < tempshowidlist.size(); k++) {
String showsubcompname = "";
String showsubcompid = (String) tempshowidlist.get(k);
if (!"".equals(showsubcompid)) {
showsubcompname = orgShowBiz.getSubcompanyShow("workflow", showsubcompid);
}
fieldname += Util.StringReplace(showsubcompname, ",", "") + ",";
}
} else if (fieldtype == 9 || fieldtype == 37) {
//文档,多文档
for (int k = 0; k < tempshowidlist.size(); k++) {
fieldname += Util.StringReplace(docominfo.getDocname((String) tempshowidlist.get(k)), ",", "") + ",";
}
} else if (fieldtype == 23) {
//资产
for (int k = 0; k < tempshowidlist.size(); k++) {
fieldname += Util.StringReplace(capitalcominfo.getCapitalname((String) tempshowidlist.get(k)), ",", "") + ",";
}
} else if (fieldtype == 16 || fieldtype == 152 || fieldtype == 171) {
//相关请求
for (int k = 0; k < tempshowidlist.size(); k++) {
fieldname += Util.StringReplace(wfrequestcominfo.getRequestName((String) tempshowidlist.get(k)), ",", "") + ",";
}
} else if (fieldtype == 161 || fieldtype == 162) {
boolean hasRowKey = otherparams.containsKey("detailRecordId");
int detailRecordId = hasRowKey ? Util.getIntValue(otherparams.get("detailRecordId")+"") : -1;
int rowIndex = otherparams.containsKey("rowIndex") ? Util.getIntValue(otherparams.get("rowIndex")+"") : -1;
int fieldid = Util.getIntValue(otherparams.get("fieldid")+"");
// String cacheKey = hasRowKey && fieldid>0 ? this.Requestid + "_field" + fieldid + "_" + detailRecordId : "";
// BrowserFieldValueComInfo valueComInfo = new BrowserFieldValueComInfo();
// String fieldValueCache = "".equals(cacheKey) ? "" : Util.null2String(valueComInfo.getFieldValue(cacheKey));
// String fieldValueShowNameCache = "".equals(cacheKey) ? "" : valueComInfo.getFieldValueShowName(cacheKey);
// List<String> fieldvalspanarr = Util.splitString2List(fieldValueShowNameCache, BrowserFieldUtil.BROWSER_SHOW_NAME_SPLITER);
// boolean isUseCache = !"".equals(fieldValueCache) && fieldValueCache.equals(fieldvalue) && fieldvalspanarr.size() == tempshowidlist.size();
if (false) { //走缓存
// for (int j = 0; j < tempshowidlist.size(); j++) {
// fieldname += Util.null2String(fieldvalspanarr.get(j)) + ",";
// }
} else {
int languageId = this.user != null ? user.getLanguage() : 7;
List<Object> browserInfo;
try {
BrowserValueInfoService browserValueInfoService = new BrowserValueInfoService();
Map<String, Object> customizeBrowserValueCache = new HashMap<>();
if (this.Requestid > 0)
customizeBrowserValueCache = BrowserFieldUtil.loadRequestCustomizeBrowserValues(this.Requestid);
browserValueInfoService.setParams(customizeBrowserValueCache);
HashMap<String,Object> cusDependFieldValues = this.calculateCusBrowserFieldValue(fieldid,String.valueOf(fieldtype),fielddbtype,String.valueOf(this.Requestid),detailRecordId);
Map<String, Object> browserOtherParams = new HashMap<>();
browserOtherParams.put("cusDependFieldValues", cusDependFieldValues);
browserOtherParams.put("detailRecordId", detailRecordId);
browserOtherParams.put("moduleName4Org", "workflow");
browserInfo = browserValueInfoService.getBrowserValueInfo(fieldtype, fielddbtype, fieldid, fieldvalue, languageId, this.Requestid, browserOtherParams);
for(Object value:browserInfo){
BrowserValueInfo browserValueInfo = (BrowserValueInfo)value;
String browserValue = browserValueInfo!=null?browserValueInfo.getName():"";
fieldname+=browserValue+",";
}
if(fieldname.endsWith(",")){
fieldname = fieldname.substring(0,fieldname.length()-1);
}
// fieldname = new CustomBrowserBiz().calculateBrowserName(fieldvalue, fielddbtype, fieldtype, this.Requestid, ",", rowIndex, detailRecordId);
// if (fieldtype == 161 && fieldname.length() > 0) {
// String fieldValName= fieldname;
// if(fieldname.endsWith(",")){
// fieldValName = fieldname.substring(0, fieldname.length()-1);
// }
// CustomizeBrowserRefreshCacheThread.addParaInQueue("field" + fieldid, fieldvalue, fieldValName, this.Requestid, detailRecordId);
// }
}catch (Exception e){
e.printStackTrace();
}
}
} else if (fieldtype == 256 || fieldtype == 257) {//自定义多选
for (int k = 0; k < tempshowidlist.size(); k++) {
try {
CustomTreeUtil customTreeUtil = new CustomTreeUtil();
String name = customTreeUtil.getTreeFieldShowName((String) tempshowidlist.get(k), fielddbtype, "onlyname");
fieldname += Util.StringReplace(name, "", ",") + ",";
} catch (Exception e) {
System.out.println(e);
}
}
} else if (fieldtype == 142) {
//收发文单位
for (int k = 0; k < tempshowidlist.size(); k++) {
fieldname += Util.StringReplace(docReceiveUnitComInfo.getReceiveUnitName("" + tempshowidlist.get(k)), ",", "") + ",";
}
} else if (fieldtype == 141) {
int languageId = this.user != null ? user.getLanguage() : 7;
ResourceConditionManager resourceConditionManager = new ResourceConditionManager();
fieldname = resourceConditionManager.getFormShowNameOfNoLink(fieldvalue, languageId);
} else if (fieldtype == 296) { //多维度预算周期
BudgetPeriodComInfo budgetPeriodComInfo = new BudgetPeriodComInfo();
fieldname = budgetPeriodComInfo.getPeriodName(fieldvalue);
} else if (fieldtype == 295) {// 多维度承担主体
BudgetBearerComInfo budgetBearerComInfo = new BudgetBearerComInfo();
fieldname = budgetBearerComInfo.getBudgetBearerName(fieldvalue);
} else if (fieldtype == 294) {//多维度预算科目
BudgetSubjectComInfo budgetSubjectComInfo = new BudgetSubjectComInfo();
fieldname = budgetSubjectComInfo.getSubjectname(fieldvalue);
} else if(fieldtype ==22){ //报销费用类型
FnaSystemSetComInfo fnaSystemSetComInfo = new FnaSystemSetComInfo();
RecordSet recordSet = new RecordSet();
String separator = Util.null2String(fnaSystemSetComInfo.get_separator()).trim();
int enableDispalyAll = Util.getIntValue(fnaSystemSetComInfo.get_enableDispalyAll());
String fullName = "";
if (enableDispalyAll == 1) {
BudgetfeeTypeComInfo budgetfeeTypeComInfo = new BudgetfeeTypeComInfo();
fullName = budgetfeeTypeComInfo.getSubjectFullName(fieldvalue, separator);
} else {
BrowserComInfo bci = new BrowserComInfo();
String tablename = bci.getBrowsertablename(fieldtype + ""); // 浏览框对应的表,比如人力资源表
String columname = bci.getBrowsercolumname(fieldtype + ""); // 浏览框对应的表名称字段
String keycolumname = bci.getBrowserkeycolumname(fieldtype + ""); // 浏览框对应的表值字段
recordSet.execute("select " + columname + " from " + tablename + " where " + keycolumname + " in (" + fieldvalue + ")");
if (recordSet.next()) {
fullName = recordSet.getString(1);
}
}
fieldname = fullName;
}else {
String tablename = urlcominfo.getBrowsertablename("" + fieldtype); //浏览框对应的表,比如人力资源表
String columname = urlcominfo.getBrowsercolumname("" + fieldtype); //浏览框对应的表名称字段
String keycolumname = urlcominfo.getBrowserkeycolumname("" + fieldtype); //浏览框对应的表值字段
String dbtype = urlcominfo.getBrowserdbtype("" + fieldtype); //浏览框对应的数据类型
// 多人力资源,多客户,多会议,多文档
//安全检查
if (tablename != null && !tablename.equals("")
&& columname != null && !columname.equals("")
&& keycolumname != null && !keycolumname.equals("")
) {
String sql = "";
if (fieldvalue.indexOf(",") != -1) {
String[] fieldvalues = fieldvalue.split(",");
for (int f = 0; f < fieldvalues.length; f++) {
if (dbtype != null && dbtype.indexOf("varchar") >= 0) {
sql = "select " + keycolumname + "," + columname + " from " + tablename + " where " + keycolumname + "='" + fieldvalues[f] + "'";
} else {
sql = "select " + keycolumname + "," + columname + " from " + tablename + " where " + keycolumname + "=" + fieldvalues[f];
}
rs.executeSql(sql);
while (rs.next()) {
fieldname += Util.StringReplace(rs.getString(2), ",", "") + ",";
}
}
} else {
if (dbtype != null && dbtype.indexOf("varchar") >= 0) {
sql = "select " + keycolumname + "," + columname + " from " + tablename + " where " + keycolumname + "='" + fieldvalue + "'";
} else {
sql = "select " + keycolumname + "," + columname + " from " + tablename + " where " + keycolumname + "=" + fieldvalue;
}
rs.executeSql(sql);
while (rs.next()) {
fieldname += Util.StringReplace(rs.getString(2), ",", "") + ",";
}
}
}
}
if (fieldname.length() > 0 && fieldname.endsWith(",")) {
fieldname = fieldname.substring(0, fieldname.length() - 1);
}
} else {
fieldname = fieldvalue;
}
return fieldname;
}
private HashMap<String, Object> calculateCusBrowserFieldValue(int fieldid, String detailtype, String fielddbtype, String requestId, int detailRecordId) {
RecordSet rs = new RecordSet();
int workflowid = -1;
rs.executeQuery("select mainrequestid,requestid,requestname,requestlevel,mainrequestid,creater,creatertype,createdate,createtime,workflowId,currentstatus,currentnodeid,currentnodetype,status,remindTypes,docids,crmids,prjids,cptids , lastnodeid from workflow_requestbase where requestid=?", requestId);
if (rs.next()) {
workflowid = (rs.getInt("workflowId"));
} else {
return null;
}
WorkflowAllComInfo comInfo = new WorkflowAllComInfo();
String isbill = comInfo.getIsBill(workflowid + "");
String formid = comInfo.getFormId(workflowid + "");
List<HashMap<String, Object>> fieldinfos = this.getFieldNameMapId(requestId,isbill,formid);
HashMap<String, Object> mainfieldinfomap = fieldinfos.get(0);
HashMap<String, Object> detailfieldinfomap = fieldinfos.get(1);
HashMap<String, Object> fieldNameMapId = fieldinfos.get(2);
BrowserInitUtil browserInitUtil = new BrowserInitUtil();
List<String> fieldList = null;
List<Map<String,String>> cusDependShip= new ArrayList<>();
BrowserBean browserbean = new BrowserBean(detailtype+"");
weaver.interfaces.workflow.browser.Browser browser = null;
if(user==null){
user=new User();
}
browser = browserInitUtil.initCustomizeBrow(browserbean, fielddbtype, Util.getIntValue(detailtype), user.getUID());
if (browser.getRequestFieldMap() != null) {
fieldList = new ArrayList<>(browser.getRequestFieldMap());
List<String> relateFieldid = new ArrayList<String>();
for (String fieldKey : fieldList) {
String dependfieldid = (String) fieldNameMapId.get(Util.null2String(fieldKey).toLowerCase());
if(dependfieldid == null)
continue;
boolean isMainField = mainfieldinfomap != null && mainfieldinfomap.containsKey(dependfieldid);
relateFieldid.add(dependfieldid + (isMainField ? "_0" : "_1"));
Map<String,String> dependShip = new HashMap<>();
dependShip.put("key", fieldKey);
dependShip.put("fieldid", dependfieldid);
dependShip.put("isDetail", isMainField ? "0" : "1");
cusDependShip.add(dependShip);
}
browserbean.setRelateFieldid(relateFieldid);
}
HashMap<String, Object> dependFieldValues = new HashMap<>();
boolean isCalDetailField = detailfieldinfomap != null && detailfieldinfomap.containsKey(fieldid);
if(cusDependShip != null && cusDependShip.size() > 0){
for(Map<String,String> item: cusDependShip){
boolean isDetail = "1".equals(item.get("isDetail"));
String key = item.get("key");
String fieldidDep = item.get("fieldid");
String dTableName = "";
if(isDetail){
HashMap<String, Object> fieldmap = (HashMap<String, Object>) detailfieldinfomap.get(fieldidDep);
dTableName = (String)fieldmap.get("tablename");
}
// String replaceStr = Util.null2String(isbill.equals("0") ? "detail" : dTableName);
// String fieldname = isDetail && !"".equals(replaceStr) ? key.replace(replaceStr+"_", "") : key;
RequestInfoEntity requestInfoEntity = FieldInfoBiz.getRequestinfo(requestId);
Map<String, Object> maindata = requestInfoEntity.getLazyMainTableInfoEntity().get().getDatas();
List<DetailTableInfoEntity> detailTableInfoEntities = requestInfoEntity.getLazyDetailTableInfos().get();
String fieldValue = "";
if(!isDetail){ //明细字段取主字段依赖
if(maindata.containsKey(fieldidDep))
fieldValue = (String)maindata.get(fieldidDep);
}else{
String detailtablename = key.substring(0, key.lastIndexOf("_"));
for (DetailTableInfoEntity dtinfo : detailTableInfoEntities) {
if (dtinfo.getTableDbName().equals(detailtablename)) {
if (dtinfo != null) {
for (DetailRowInfoEntity detailRowInfoEntity : dtinfo.getDetailRowInfos()) {
if (detailRowInfoEntity.getId() == detailRecordId) {
fieldValue = detailRowInfoEntity.getDatas() != null ? (String) detailRowInfoEntity.getDatas().get(fieldidDep) : "";
}
}
}
}
}
}
dependFieldValues.put(key, fieldValue);
}
}
return dependFieldValues;
}
private List<HashMap<String, Object>> getFieldNameMapId(String requestId,String isbill,String formid) {
HashMap<String,Object> fieldNameMapId = new HashMap<>();
HashMap<String,Object> mainfieldinfomap = new HashMap<>();
HashMap<String,Object> detailfieldinfomap = new HashMap<>();
String queryFormFieldSQL = NewReportBiz.getQueryFormFieldSQL(getIntValue(formid), getIntValue(isbill));
RecordSet rsform = new RecordSet();
rsform.executeQuery(queryFormFieldSQL);
List<HashMap<String, Object>> fieldInfos = new ArrayList<>();
while (rsform.next()) {
String fieldname = null2String(rsform.getString("name"));
String fieldid = null2String(rsform.getString("id"));
String dbtype = null2String(rsform.getString("dbtype"));
String htmltype = null2String(rsform.getString("httype"));
String filetype = null2String(rsform.getString("type"));
int viewtype = getIntValue(rsform.getString("viewtype"));
String maintablename = null2String(rsform.getString("maintablename"));
String detailtablename = null2String(rsform.getString("detailtable"));
if(viewtype==1){
HashMap<String ,String> fieldmap = new HashMap<>();
fieldmap.put("fieldname",fieldname);
fieldmap.put("tablename",detailtablename);
detailfieldinfomap.put(fieldid,fieldmap);
}else {
HashMap<String ,String> fieldmap = new HashMap<>();
fieldmap.put("fieldname",fieldname);
fieldmap.put("tablename",maintablename);
mainfieldinfomap.put(fieldid,fieldmap);
}
fieldNameMapId.put(((viewtype == 1 ? (detailtablename+"_") : "") + fieldname).toLowerCase() , fieldid+"");
}
fieldInfos.add(mainfieldinfomap);
fieldInfos.add(detailfieldinfomap);
fieldInfos.add(fieldNameMapId);
return fieldInfos;
}
/**
*
*
* @param fieldvalue
* @return
*/
public String getFileName(String fieldvalue) {
RecordSet rs = new RecordSet();
String filename = "";
if (fieldvalue != null && !fieldvalue.trim().equals("")) {
fieldvalue = fieldvalue.trim();
if (fieldvalue.substring(fieldvalue.length() - 1).equals(","))
fieldvalue = fieldvalue.substring(0, fieldvalue.length() - 1);
//String sql="select docsubject from docdetail where id in ("+fieldvalue+")";
String sql = "select t1.imageFileName as docsubject from DocImageFile t1,"
+ "(select docid,max(versionid) versionid from DocImageFile group by docid) t2"
+ " where t1.docid=t2.docid and t1.versionid=t2.versionid "
+ " and t1.docId in (" + fieldvalue + ") order by t1.id asc ";
rs.executeSql(sql);
while (rs.next()) {
if (!filename.equals("")) {
filename += ",";
}
filename += Util.StringReplace(rs.getString("docsubject"), ",", "");
}
}
return filename;
}
/**
*
*
* @param s
* @return
*/
public String toScreen(String s) {
char c[] = s.toCharArray();
char ch;
int i = 0;
StringBuffer buf = new StringBuffer();
while (i < c.length) {
ch = c[i++];
if (ch == '\r')
buf.append("");
else if (ch == '\n')
buf.append("");
else
buf.append(ch);
}
return buf.toString();
}
/**
*
*
* @param s
* @return
*/
public String toExcel(String s) {
if (s == null) return "";
//因本方法会将字符串 &符号转换故先将欧元符号转义符转换为其Unicode码
s = s.replaceAll("&euro;", "\u20AC");
String str = toScreen(s);
str = Util.StringReplace(str, "&ang;", "∠");
str = Util.StringReplace(str, "&phi;", "φ");
str = Util.StringReplace(str, "&quot;", "\"");
str = Util.StringReplace(str, "&nbsp", "%nbsp");
//str=Util.StringReplace(str,"'","");
str = Util.StringReplace(str, "&lt;", "<");
str = Util.StringReplace(str, "&gt;", ">");
str = Util.StringReplace(str, "&dt;&at;", "<br>");
str = Util.StringReplace(str, "&", "&amp;");
str = Util.StringReplace(str, "<br>", "&dt;&at;");
if ("&dt;&at;".equals(str)) {
str = "";
}
//在方法最后,又将欧元符号置换为转义符
str = str.replaceAll("\u20AC", "&euro;");
return str;
}
/**
*
*/
public String dropScript(String s) {
String retStr = "";
while (s.toLowerCase().indexOf("<script") != -1) {
int startindx = s.toLowerCase().indexOf("<script");
int endindx = s.toLowerCase().indexOf("</script>");
if (endindx != -1 && endindx > startindx) {
retStr += s.substring(0, startindx);
s = s.substring(endindx + 9);
}
if (endindx == -1) {
break;
}
}
retStr += s;
return retStr;
}
/**
*
*
* @param nodeMark
* @return
*/
public static List getNodeRemarkListOfBeenSplited(String nodeMark) {
List nodeRemarkListOfBeenSplited = new ArrayList();
//安全检查
if (nodeMark == null || nodeMark.trim().equals("")) {
return nodeRemarkListOfBeenSplited;
}
List tempList = new ArrayList();
StringBuffer sb = new StringBuffer();
char c[] = nodeMark.toCharArray();
char ch;
int i = 0;
while (i < c.length) {
ch = c[i++];
if (ch == Util.getSeparator()) {
if (!sb.toString().equals("")) {
tempList.add(sb.toString());
sb = new StringBuffer();
}
} else {
sb.append(ch);
}
}
if (!sb.toString().equals("")) {
tempList.add(sb.toString());
}
String tempString = null;
int indexOfBROne = 0;
Map nodeRemarkOfBeenSplitedMap = null;
for (i = 0; i < tempList.size(); i++) {
tempString = (String) tempList.get(i);
if (tempString == null || tempString.trim().equals("")) {
continue;
}
indexOfBROne = tempString.indexOf("<br>");
if (indexOfBROne >= 0) {
nodeRemarkOfBeenSplitedMap = new HashMap();
if (tempString.indexOf("/weaver/weaver.file.FileDownload?fileid=") >= 0
|| tempString.indexOf("/weaver/weaver.file.ImgFileDownload?userid=") >= 0) {
nodeRemarkOfBeenSplitedMap.put("imageNodeRemark", tempString.substring(0, indexOfBROne));
nodeRemarkOfBeenSplitedMap.put("strNodeRemark", tempString.substring(indexOfBROne + "<br>".length()));
} else {
nodeRemarkOfBeenSplitedMap.put("imageNodeRemark", "");
nodeRemarkOfBeenSplitedMap.put("strNodeRemark", tempString);
}
nodeRemarkListOfBeenSplited.add(nodeRemarkOfBeenSplitedMap);
} else {
if (tempString.indexOf("/weaver/weaver.file.FileDownload?fileid=") >= 0
|| tempString.indexOf("/weaver/weaver.file.ImgFileDownload?userid=") >= 0) {
nodeRemarkOfBeenSplitedMap = new HashMap();
nodeRemarkOfBeenSplitedMap.put("imageNodeRemark", tempString);
nodeRemarkOfBeenSplitedMap.put("strNodeRemark", "");
nodeRemarkListOfBeenSplited.add(nodeRemarkOfBeenSplitedMap);
} else {
nodeRemarkOfBeenSplitedMap = new HashMap();
nodeRemarkOfBeenSplitedMap.put("imageNodeRemark", "");
nodeRemarkOfBeenSplitedMap.put("strNodeRemark", tempString);
nodeRemarkListOfBeenSplited.add(nodeRemarkOfBeenSplitedMap);
}
}
}
return nodeRemarkListOfBeenSplited;
}
public static List getNodeRemarkList(String nodeRemark) {
try {
List lstResult = new ArrayList();
//安全检查
if (nodeRemark == null || nodeRemark.trim().equals("")) {
return lstResult;
}
String[] arrRequestLogs = nodeRemark.split(String.valueOf(getNodeSeparator()));
String nodeRemarknew = "";
for (String s : arrRequestLogs) {
if (s.indexOf("/weaver/weaver.file.FileDownload?fileid=") >= 0
|| s.indexOf("/weaver/weaver.file.ImgFileDownload?userid=") >= 0
|| s.indexOf("/weaver/weaver.file.SignatureDownLoad?markId=") >= 0) {
s = s.replaceAll("" + getSeparator2(), "" + getNodeSeparator());
} else
s = s.replaceAll("" + getSeparator2(), "");
if ("".equals(nodeRemarknew))
nodeRemarknew += s;
else
nodeRemarknew += getNodeSeparator() + s;
}
arrRequestLogs = nodeRemarknew.split(String.valueOf(getNodeSeparator()));
for (int m = 0; m < arrRequestLogs.length; m++) {
if (arrRequestLogs[m] == null || arrRequestLogs[m].trim().equals("")) {
continue;
}
String[] arrNodeString = arrRequestLogs[m].split(String.valueOf(Util.getSeparator()));
int lenArrNodeString = arrNodeString.length;
for (int i = 0; i < lenArrNodeString; i++) {
String tempString = arrNodeString[i];
//如果数组元素为空,则不作任何处理。
if (tempString.trim().equalsIgnoreCase("<br>") || tempString.trim().equalsIgnoreCase("<br/>")
|| tempString.trim().equals("") || tempString.trim().equalsIgnoreCase("<br><br/>")) {
continue;
}
if (tempString.endsWith("<br>")) {
tempString = tempString.substring(0, tempString.length() - 4);
}
//标识本次循环中,只包含纯文本信息不包含任何图片,则将该文本信息移到下一单元格来进行显示。
boolean flagOnlyText = (tempString.indexOf("/weaver/weaver.file.FileDownload") == -1)
&& (tempString.indexOf("/weaver/weaver.file.ImgFileDownload") == -1)
&& (tempString.indexOf("/weaver/weaver.file.SignatureDownLoad") == -1);
//另外,需要检查当前操作者所提交的签字意见是否仅包含文字内容。否则数组可能越界。
if (flagOnlyText && (i + 1) < lenArrNodeString) {
String nextNodeString = arrNodeString[i + 1];
int indexOf = nextNodeString.indexOf("<br>");
if (indexOf == -1) {
nextNodeString = nextNodeString + "<br>" + tempString;
} else {
nextNodeString = nextNodeString.substring(0, indexOf) + "<br>" + tempString + nextNodeString.substring(indexOf);
}
arrNodeString[i + 1] = nextNodeString;
continue;
}
Map mapTempObj = new HashMap();
boolean flag = tempString.startsWith("/weaver/weaver.file.FileDownload?")
|| tempString.startsWith("/weaver/weaver.file.ImgFileDownload?")
|| tempString.startsWith("/weaver/weaver.file.SignatureDownLoad?");
if (flag) {
//处理仅包含电子签章一种图片来源的数据片段
int indexOf = tempString.indexOf("<br>");
if (indexOf == -1) {
mapTempObj.put("imageNodeRemark", tempString);
mapTempObj.put("strNodeRemark", "");
lstResult.add(mapTempObj);
//处理仅包含表单签章一种图片来源的数据片段
} else {
mapTempObj.put("imageNodeRemark", tempString.substring(0, indexOf));
mapTempObj.put("strNodeRemark", tempString.substring(indexOf + 4));
lstResult.add(mapTempObj);
}
} else {
//处理既包含手写签批图片、又包含文字等片段的复杂数据片段。暂时仅处理包含一张图片的情况。
String imageNodeStrng = "";
Document docObj = Jsoup.parse(tempString, "UTF-8");
Elements elementObjs = docObj.getElementsByTag("img");
if (elementObjs.size() > 0) {
imageNodeStrng = elementObjs.get(0).attr("src");
elementObjs.get(0).remove();
}
Element bodyEle = docObj.getElementsByTag("body").first();
String textNodeString = (bodyEle != null) ? bodyEle.html() : "";
textNodeString = textNodeString.replaceAll("\r", "");
textNodeString = textNodeString.replaceAll("\n", "");
mapTempObj.put("imageNodeRemark", imageNodeStrng);
mapTempObj.put("strNodeRemark", textNodeString);
lstResult.add(mapTempObj);
}
}
}
return lstResult;
} catch (Exception e) {
log.error("Catch a exception.", e);
return new ArrayList();
}
}
/**
*
*
* @param nodeMark
* @param nodeRemarkListOfBeenSplited
* @return
*/
public static ArrayList getNodeRemarkListOfBeenSplited(String nodeMark, ArrayList nodeRemarkListOfBeenSplited) {
//安全检查
if (nodeMark == null || nodeMark.trim().equals("")) {
return nodeRemarkListOfBeenSplited;
}
String strNodeRemark = "";
String imageNodeRemark = "";
int indx = nodeMark.indexOf(Util.getSeparator());
if (indx > -1) {
strNodeRemark = nodeMark.substring(0, indx);
imageNodeRemark = nodeMark.substring(indx + 1);
nodeMark = nodeMark.substring(indx + 1);
indx = nodeMark.indexOf("<br>");
if (indx > -1) {
imageNodeRemark = nodeMark.substring(0, indx);
nodeMark = nodeMark.substring(indx + 4);
HashMap nodeRemarkOfBeenSplitedMap = new HashMap();
nodeRemarkOfBeenSplitedMap.put("imageNodeRemark", imageNodeRemark);
nodeRemarkOfBeenSplitedMap.put("strNodeRemark", strNodeRemark);
nodeRemarkListOfBeenSplited.add(nodeRemarkOfBeenSplitedMap);
nodeRemarkListOfBeenSplited = getNodeRemarkListOfBeenSplited(nodeMark, nodeRemarkListOfBeenSplited);
} else {
HashMap nodeRemarkOfBeenSplitedMap = new HashMap();
nodeRemarkOfBeenSplitedMap.put("imageNodeRemark", imageNodeRemark);
nodeRemarkOfBeenSplitedMap.put("strNodeRemark", strNodeRemark);
nodeRemarkListOfBeenSplited.add(nodeRemarkOfBeenSplitedMap);
}
}
return nodeRemarkListOfBeenSplited;
}
/**
*
*
* @param formid
* @param isbill
* @param workflowid
* @param nodeid
* @return
*/
public ArrayList getSaveMainFields(int formid, int isbill, int workflowid, int nodeid, ArrayList fieldids) {
fieldids = getEditMainFields(formid, isbill, workflowid, nodeid, fieldids);
fieldids = getManagerFields(formid, isbill, fieldids);
fieldids = getColcalFields(formid, fieldids);
fieldids = getTriggerFileds(workflowid, formid, isbill, fieldids);
fieldids = getHtmlAttrField(nodeid, fieldids);
fieldids = getViewAttrLinkageField(workflowid, nodeid, fieldids);
//add by wshen
fieldids = getSAPDetailField(formid, isbill, fieldids, 0);
//新版公式的赋值字段
fieldids = getFormulaNew(formid, isbill, workflowid, nodeid, fieldids);
if (getIsFreeNode(nodeid)) removeManagerFields(formid, isbill, fieldids);
return fieldids;
}
/**
*
*
* @return
*/
public boolean getIsFreeNode(int nodeid) {
boolean isFreeNode = false;
try {
RecordSet rs3 = new RecordSet();
rs3.execute("select IsFreeNode from workflow_nodebase where id=" + nodeid);
if (rs3.next()) {
String isFreeNode_temp = Util.null2String(rs3.getString("IsFreeNode"));
if (isFreeNode_temp.equals("1")) isFreeNode = true;
}
} catch (Exception e) {
}
return isFreeNode;
}
/**
* manager
*
* @param formid
* @param isbill
* @param fieldids
* @return
*/
public ArrayList removeManagerFields(int formid, int isbill, ArrayList fieldids) {
RecordSet rs = new RecordSet();
String sql = "";
//表单
if (isbill == 0) {
sql = "select fieldid from workflow_formfield where formid=" + formid + " and (isdetail is null or isdetail !='1') and exists(select 1 from workflow_formdict where fieldname='manager' and workflow_formfield.fieldid=id) order by fieldid";
rs.executeSql(sql);
while (rs.next()) {
String fieldid = rs.getString("fieldid");
if (fieldids.indexOf(fieldid) > -1) fieldids.remove(fieldids.indexOf(fieldid));
}
}
//单据
if (isbill == 1) {
sql = "select id as fieldid from workflow_billfield where billid=" + formid + " and viewtype=0 and fieldname='manager' order by id";
rs.executeSql(sql);
while (rs.next()) {
String fieldid = rs.getString("fieldid");
if (fieldids.indexOf(fieldid) > -1) fieldids.remove(fieldids.indexOf(fieldid));
}
}
return fieldids;
}
public ArrayList getHtmlAttrField(int nodeid, ArrayList fieldids) {
try {
RecordSet rs = new RecordSet();
rs.execute("select fieldid from workflow_nodefieldattr where nodeid=" + nodeid);
while (rs.next()) {
String fieldid = rs.getString("fieldid");
if (fieldids.indexOf(fieldid) == -1) {
fieldids.add(fieldid);
}
}
} catch (Exception e) {
}
return fieldids;
}
/**
*
*/
public ArrayList getViewAttrLinkageField(int workflowid, int nodeid, ArrayList fieldids){
try{
RecordSet rs = new RecordSet();
rs.executeQuery("select changefieldids,viewattr from workflow_viewattrlinkage where workflowid=? and (nodeid=? or nodeid='-1')", workflowid,nodeid);
while(rs.next()){
List<String> changefieldlist = Util.TokenizerString(Util.null2String(rs.getString("changefieldids")), ",");
for(String changefield : changefieldlist){
String changefieldid = changefield.split("_")[0];
if(fieldids.indexOf(changefieldid) == -1)
fieldids.add(changefieldid);
}
}
}catch(Exception e){
e.printStackTrace();
}
return fieldids;
}
/**
* fieldidsfield
*/
public ArrayList getHtmlAttrField_mobile(int nodeid, ArrayList fieldids) {
try {
RecordSet rs = new RecordSet();
rs.execute("select fieldid from workflow_nodefieldattr where nodeid=" + nodeid);
while (rs.next()) {
String fieldid = "field" + rs.getString("fieldid");
if (fieldids.indexOf(fieldid) == -1) {
fieldids.add(fieldid);
}
}
} catch (Exception e) {
}
return fieldids;
}
/**
* id
*
* @param formid
* @param isbill
* @param workflowid
* @param nodeid
* @return
*/
public ArrayList getEditMainFields(int formid, int isbill, int workflowid, int nodeid, ArrayList fieldids) {
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
String sql = "";
String ismode = "";
int modeid = 0;
int isform = 0;
int showdes = 0;
rs1.executeSql("select ismode,showdes from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + nodeid);
if (rs1.next()) {
ismode = Util.null2String(rs1.getString("ismode"));
showdes = Util.getIntValue(Util.null2String(rs1.getString("showdes")), 0);
}
DoSaveFreeExcelDesignBiz doSaveFreeExcelDesignBiz = new DoSaveFreeExcelDesignBiz(user);
int configid = doSaveFreeExcelDesignBiz.getLayoutConfigId(this.Requestid);
boolean isnewFreelayout = DoSaveFreeExcelDesignBiz.judgeIsFreeCustomFormByRequestId(Requestid);
if(isnewFreelayout){
ismode= "2";
}
if (ismode.equals("1") && showdes != 1) {
rs1.executeSql("select id from workflow_nodemode where isprint='0' and workflowid=" + workflowid + " and nodeid=" + nodeid);
if (rs1.next()) {
modeid = rs1.getInt("id");
} else {
rs1.executeSql("select id from workflow_formmode where isprint='0' and formid=" + formid + " and isbill='" + isbill + "'");
if (rs1.next()) {
modeid = rs1.getInt("id");
isform = 1;
}
}
}
//表单
if (isbill == 0) {
if (modeid > 0) {
if (isform == 1) {
sql = "select distinct fieldid from workflow_modeview where nodeid=0 and formid=" + formid + " and isbill=" + isbill + " and isedit='1' and exists(select 1 from workflow_formfield where formid=" + formid + " and (isdetail is null or isdetail !='1') and workflow_formfield.fieldid=workflow_modeview.fieldid) order by fieldid";
} else {
sql = "select distinct fieldid from workflow_modeview where nodeid=" + nodeid + " and formid=" + formid + " and isbill=" + isbill + " and isedit='1' and exists(select 1 from workflow_formfield where formid=" + formid + " and (isdetail is null or isdetail !='1') and workflow_formfield.fieldid=workflow_modeview.fieldid) order by fieldid";
}
} else {
sql = "select distinct fieldid from workflow_nodeform where nodeid=" + nodeid + " and isedit='1' and exists(select 1 from workflow_formfield where formid=" + formid + " and (isdetail is null or isdetail !='1') and workflow_formfield.fieldid=workflow_nodeform.fieldid) order by fieldid";
}
if(isnewFreelayout){
sql = "select distinct fieldid from workflow_freenode_nodeform where nodeid=" + nodeid + " and layoutconfigid = "+configid+" and isedit='1' and exists(select 1 from workflow_formfield where formid=" + formid + " and (isdetail is null or isdetail !='1') and workflow_formfield.fieldid=workflow_freenode_nodeform.fieldid) order by fieldid";
}
rs.executeSql(sql);
while (rs.next()) {
String fieldid = rs.getString("fieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
}
//单据
if (isbill == 1) {
if (modeid > 0) {
if (isform == 1) {
sql = "select distinct fieldid from workflow_modeview where nodeid=0 and formid=" + formid + " and isbill=" + isbill + " and isedit='1' and exists(select 1 from workflow_billfield where billid=" + formid + " and viewtype=0 and workflow_billfield.id=workflow_modeview.fieldid) order by fieldid";
} else {
sql = "select distinct fieldid from workflow_modeview where nodeid=" + nodeid + " and formid=" + formid + " and isbill=" + isbill + " and isedit='1' and exists(select 1 from workflow_billfield where billid=" + formid + " and viewtype=0 and workflow_billfield.id=workflow_modeview.fieldid) order by fieldid";
}
} else {
sql = "select distinct fieldid from workflow_nodeform where nodeid=" + nodeid + " and isedit='1' and exists(select 1 from workflow_billfield where billid=" + formid + " and viewtype=0 and workflow_billfield.id=workflow_nodeform.fieldid) order by fieldid";
}
if(isnewFreelayout){
sql = "select distinct fieldid from workflow_freenode_nodeform where nodeid=" + nodeid + " and layoutconfigid = "+configid+" and isedit='1' and exists(select 1 from workflow_billfield where billid=" + formid + " and viewtype=0 and workflow_billfield.id=workflow_freenode_nodeform.fieldid) order by fieldid";
}
rs.executeSql(sql);
while (rs.next()) {
String fieldid = rs.getString("fieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
}
return fieldids;
}
/**
*
*
* @param formid
* @param fieldids
* @return
*/
public ArrayList getColcalFields(int formid, ArrayList fieldids) {
RecordSet rs = new RecordSet();
String sql = "select maincalstr from workflow_formdetailinfo where formid=" + formid;
rs.executeSql(sql);
if (rs.next()) {
String maincalstr = Util.null2String(rs.getString("maincalstr"));
ArrayList maincalstrlist = Util.TokenizerString(maincalstr, ";");
for (int i = 0; i < maincalstrlist.size(); i++) {
String tempcal = (String) maincalstrlist.get(i);
int indx = tempcal.indexOf("mainfield_");
int indx1 = tempcal.indexOf("=");
if (indx != -1 && indx1 != -1 && indx1 > indx) {
tempcal = tempcal.substring(indx + 10, indx1);
if (fieldids.indexOf(tempcal) == -1) fieldids.add(tempcal);
}
}
}
return fieldids;
}
/**
*
*
* @param workflowid
* @param formid
* @param isbill
* @param fieldids
* @return
*/
public ArrayList getTriggerFileds(int workflowid, int formid, int isbill, ArrayList fieldids) {
RecordSet rs = new RecordSet();
String fieldidstr = "";
String sql = "select pagefieldname from Workflow_DataInput_field a where type=2 and exists(select 1 from Workflow_DataInput_main b where a.datainputid=b.id and exists(select 1 from Workflow_DataInput_entry c where b.entryid=c.id and c.workflowid=" + workflowid + "))";
rs.executeSql(sql);
while (rs.next()) {
String fieldname = Util.null2String(rs.getString("pagefieldname"));
int indx = fieldname.indexOf("field");
if (indx != -1 && fieldname.length() > 5) {
if (fieldidstr.equals("")) {
fieldidstr = fieldname.substring(5);
} else {
fieldidstr += "," + fieldname.substring(5);
}
}
}
if (!fieldidstr.equals("")) {
if (isbill == 1) {
sql = "select id as fieldid from workflow_billfield where billid=" + formid + " and viewtype=0 and id in(" + fieldidstr + ") order by id";
} else {
sql = "select fieldid from workflow_formfield where formid=" + formid + " and (isdetail is null or isdetail !='1') and fieldid in(" + fieldidstr + ") order by fieldid";
}
rs.executeSql(sql);
while (rs.next()) {
String tempfieldid = rs.getString("fieldid");
if (fieldids.indexOf(tempfieldid) == -1) fieldids.add(tempfieldid);
}
}
return fieldids;
}
/**
* manager
*
* @param formid
* @param isbill
* @param fieldids
* @return
*/
public ArrayList getManagerFields(int formid, int isbill, ArrayList fieldids) {
RecordSet rs = new RecordSet();
String sql = "";
//表单
if (isbill == 0) {
sql = "select fieldid from workflow_formfield where formid=" + formid + " and (isdetail is null or isdetail !='1') and exists(select 1 from workflow_formdict where fieldname='manager' and workflow_formfield.fieldid=id) order by fieldid";
rs.executeSql(sql);
while (rs.next()) {
String fieldid = rs.getString("fieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
}
//单据
if (isbill == 1) {
sql = "select id as fieldid from workflow_billfield where billid=" + formid + " and viewtype=0 and fieldname='manager' order by id";
rs.executeSql(sql);
while (rs.next()) {
String fieldid = rs.getString("fieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
}
return fieldids;
}
/**
*
*
* @param formid
* @param isbill
* @param workflowid
* @param nodeid
* @return
*/
public ArrayList getSaveDetailFields(int formid, int isbill, int workflowid, int nodeid, ArrayList fieldids) {
fieldids = getEditDetailFields(formid, isbill, workflowid, nodeid, fieldids);
fieldids = getRowcalFields(formid, fieldids);
fieldids = getTriggerDetailFileds(workflowid, formid, isbill, fieldids);
fieldids = getHtmlAttrField(nodeid, fieldids);
fieldids = getViewAttrLinkageField(workflowid, nodeid, fieldids);
//add by wshen
fieldids = getSAPDetailField(formid, isbill, fieldids, 1);
//新版公式的赋值字段
fieldids = getFormulaNew(formid, isbill, workflowid, nodeid, fieldids);
return fieldids;
}
/**
* id
*
* @param formid
* @param isbill
* @param workflowid
* @param nodeid
* @return
*/
public ArrayList getEditDetailFields(int formid, int isbill, int workflowid, int nodeid, ArrayList fieldids) {
RecordSet rs = new RecordSet();
RecordSet rs1 = new RecordSet();
String sql = "";
String ismode = "";
int modeid = 0;
int isform = 0;
int showdes = 0;
rs1.executeSql("select ismode,showdes from workflow_flownode where workflowid=" + workflowid + " and nodeid=" + nodeid);
if (rs1.next()) {
ismode = Util.null2String(rs1.getString("ismode"));
showdes = Util.getIntValue(Util.null2String(rs1.getString("showdes")), 0);
}
DoSaveFreeExcelDesignBiz doSaveFreeExcelDesignBiz = new DoSaveFreeExcelDesignBiz(user);
int configid = doSaveFreeExcelDesignBiz.getLayoutConfigId(this.Requestid);
boolean isnewFreelayout = DoSaveFreeExcelDesignBiz.judgeIsFreeCustomFormByRequestId(Requestid);
if(isnewFreelayout){
ismode= "2";
}
if (ismode.equals("1") && showdes != 1) {
rs1.executeSql("select id from workflow_nodemode where isprint='0' and workflowid=" + workflowid + " and nodeid=" + nodeid);
if (rs1.next()) {
modeid = rs1.getInt("id");
} else {
rs1.executeSql("select id from workflow_formmode where isprint='0' and formid=" + formid + " and isbill='" + isbill + "'");
if (rs1.next()) {
modeid = rs1.getInt("id");
isform = 1;
}
}
}
//表单
if (isbill == 0) {
if (modeid > 0) {
if (isform == 1) {
sql = "select distinct fieldid from workflow_modeview where nodeid=0 and formid=" + formid + " and isbill=" + isbill + " and isedit='1' and exists(select 1 from workflow_formfield where formid=" + formid + " and isdetail ='1' and workflow_formfield.fieldid=workflow_modeview.fieldid) order by fieldid";
} else {
sql = "select distinct fieldid from workflow_modeview where nodeid=" + nodeid + " and formid=" + formid + " and isbill=" + isbill + " and isedit='1' and exists(select 1 from workflow_formfield where formid=" + formid + " and isdetail ='1' and workflow_formfield.fieldid=workflow_modeview.fieldid) order by fieldid";
}
} else {
sql = "select distinct fieldid from workflow_nodeform where nodeid=" + nodeid + " and isedit='1' and exists(select 1 from workflow_formfield where formid=" + formid + " and isdetail ='1' and workflow_formfield.fieldid=workflow_nodeform.fieldid) order by fieldid";
}
if(isnewFreelayout){
sql = "select distinct fieldid from workflow_freenode_nodeform where nodeid=" + nodeid + " and layoutconfigid = "+configid+" and isedit='1' and exists(select 1 from workflow_formfield where formid=" + formid + " and isdetail ='1' and workflow_formfield.fieldid=workflow_freenode_nodeform.fieldid) order by fieldid";
}
rs.executeSql(sql);
while (rs.next()) {
String fieldid = rs.getString("fieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
}
//单据
if (isbill == 1) {
if (modeid > 0) {
if (isform == 1) {
sql = "select distinct fieldid from workflow_modeview where nodeid=0 and formid=" + formid + " and isbill=" + isbill + " and isedit='1' and exists(select 1 from workflow_billfield where billid=" + formid + " and viewtype=1 and workflow_billfield.id=workflow_modeview.fieldid) order by fieldid";
} else {
sql = "select distinct fieldid from workflow_modeview where nodeid=" + nodeid + " and formid=" + formid + " and isbill=" + isbill + " and isedit='1' and exists(select 1 from workflow_billfield where billid=" + formid + " and viewtype=1 and workflow_billfield.id=workflow_modeview.fieldid) order by fieldid";
}
} else {
sql = "select distinct fieldid from workflow_nodeform where nodeid=" + nodeid + " and isedit='1' and exists(select 1 from workflow_billfield where billid=" + formid + " and viewtype=1 and workflow_billfield.id=workflow_nodeform.fieldid) order by fieldid";
}
if(isnewFreelayout){
sql = "select distinct fieldid from workflow_freenode_nodeform where nodeid=" + nodeid + " and layoutconfigid = "+configid+" and isedit='1' and exists(select 1 from workflow_billfield where billid=" + formid + " and viewtype=1 and workflow_billfield.id=workflow_freenode_nodeform.fieldid) order by fieldid";
}
rs.executeSql(sql);
while (rs.next()) {
String fieldid = rs.getString("fieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
}
return fieldids;
}
/**
*
*
* @param formid
* @param fieldids
* @return
*/
public ArrayList getRowcalFields(int formid, ArrayList fieldids) {
RecordSet rs = new RecordSet();
String sql = "select rowcalstr from workflow_formdetailinfo where formid=" + formid;
rs.executeSql(sql);
if (rs.next()) {
String rowcalstr = Util.null2String(rs.getString("rowcalstr"));
ArrayList rowcalstrlist = Util.TokenizerString(rowcalstr, ";");
for (int i = 0; i < rowcalstrlist.size(); i++) {
String tempcal = (String) rowcalstrlist.get(i);
int indx = tempcal.indexOf("detailfield_");
int indx1 = tempcal.indexOf("=");
if (indx != -1 && indx1 != -1 && indx1 > indx) {
tempcal = tempcal.substring(indx + 12, indx1);
if (fieldids.indexOf(tempcal) == -1) fieldids.add(tempcal);
}
}
}
return fieldids;
}
/**
*
*
* @param workflowid
* @param formid
* @param isbill
* @param fieldids
* @return
*/
public ArrayList getTriggerDetailFileds(int workflowid, int formid, int isbill, ArrayList fieldids) {
RecordSet rs = new RecordSet();
String fieldidstr = "";
String sql = "select pagefieldname from Workflow_DataInput_field a where type=2 and exists(select 1 from Workflow_DataInput_main b where a.datainputid=b.id and exists(select 1 from Workflow_DataInput_entry c where b.entryid=c.id and c.workflowid=" + workflowid + "))";
rs.executeSql(sql);
while (rs.next()) {
String fieldname = Util.null2String(rs.getString("pagefieldname"));
int indx = fieldname.indexOf("field");
if (indx != -1 && fieldname.length() > 5) {
if (fieldidstr.equals("")) {
fieldidstr = fieldname.substring(5);
} else {
fieldidstr += "," + fieldname.substring(5);
}
}
}
if (!fieldidstr.equals("")) {
if (isbill == 1) {
sql = "select id as fieldid from workflow_billfield where billid=" + formid + " and viewtype=1 and id in(" + fieldidstr + ") order by id";
} else {
sql = "select fieldid from workflow_formfield where formid=" + formid + " and isdetail ='1' and fieldid in(" + fieldidstr + ") order by fieldid";
}
rs.executeSql(sql);
while (rs.next()) {
String tempfieldid = rs.getString("fieldid");
if (fieldids.indexOf(tempfieldid) == -1) fieldids.add(tempfieldid);
}
}
return fieldids;
}
public ArrayList getManTableChildFields() {
return ManTableChildFields;
}
public void setManTableChildFields(ArrayList manTableChildFields) {
ManTableChildFields = manTableChildFields;
}
public ArrayList getDetailTableChildFields() {
return DetailTableChildFields;
}
public void setDetailTableChildFields(ArrayList detailTableChildFields) {
DetailTableChildFields = detailTableChildFields;
}
public String getIswfshare() {
return iswfshare;
}
public void setIswfshare(String iswfshare) {
this.iswfshare = iswfshare;
}
private String getHr() {
BaseBean bb = getWfsbean();
int showdotted = Util.getIntValue(bb.getPropValue("WFShowDotted", "showdotted"), 0);
String hr = "";
if (showdotted == 1) {
hr = bb.getPropValue("WFShowDotted", "hr");
try {
hr = new String(hr.getBytes("ISO-8859-1"), "UTF-8").trim();
Pattern p_script;
Matcher m_script;
String regEx_script = "<[\\s]*?script[^>]*?>[\\s\\S]*?<[\\s]*?\\/[\\s]*?script[\\s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[\\s\\S]*?<\\/script>
p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);
m_script = p_script.matcher(hr);
hr = m_script.replaceAll(""); // 过滤script标签
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if ("".equals(hr)) { // 如果为空,显示默认分隔符
// 颜色
String color = bb.getPropValue("WFShowDotted", "color");
String colorStr = "black";
if ("1".equals(color)) {
colorStr = "black";
} else if ("2".equals(color)) {
colorStr = "blue";
} else if ("3".equals(color)) {
colorStr = "red";
} else if ("4".equals(color)) {
colorStr = "yellow";
} else if ("5".equals(color)) {
colorStr = "green";
} else if ("6".equals(color)) {
colorStr = "gray";
}
// 线型
String style = bb.getPropValue("WFShowDotted", "style");
String styleStr = "dotted";
if ("1".equals(style)) {
styleStr = "dotted";
} else if ("2".equals(style)) {
styleStr = "dashed";
} else if ("3".equals(style)) {
styleStr = "solid";
}
// 长度
int length = Util.getIntValue(bb.getPropValue("WFShowDotted", "length"), 60);
if (length < 0) {
length = 60;
}
hr = "<div size=\"1\" style=\"text-align:left;border:1px " + styleStr + ";color:" + colorStr + ";width:" + length + "%;\" ></div>";
}
} else {
hr = "<br>";
}
return hr;
}
/**
* filedid
*
* @param tableIndex
* @param colIndex
* @return
*/
public String getDetailTableField(int tableIndex, int colIndex) {
return (String) ((List) this.getDetailTableFields().get(tableIndex)).get(colIndex);
}
/**
*
*
* @param tableIndex
* @param rowIndex
* @param colIndex
* @return
*/
public String getFiledValue(int tableIndex, int rowIndex, int colIndex) {
String detailTableField = this.getDetailTableField(tableIndex, colIndex);
String fieldId = ((String) Util.TokenizerString((String) detailTableField, "_").get(0)).substring(5);
return ((Map<String, String>) ((List) this.getDetailFieldValues().get(tableIndex)).get(rowIndex)).get(fieldId);
}
public int getRowSize(int tableIndex) {
return ((List) this.getDetailFieldValues().get(tableIndex)).size();
}
/**
*
*
* @param tableIndex
* @param rowIndex
* @param colIndex
* @return
*/
public String getFieldExportCellValue(FieldInfo fi1, int tableIndex, int rowIndex, int colIndex) {
FnaSystemSetComInfo fnaSystemSetComInfo = new FnaSystemSetComInfo();
int wfDtlImpRole4Subject = Util.getIntValue(fnaSystemSetComInfo.get_wfDtlImpRole4Subject(), 0);//科目字段流程明细导入规则
int wfDtlImpRole4Fcc = Util.getIntValue(fnaSystemSetComInfo.get_wfDtlImpRole4Fcc(), 0);//成本中心字段流程明细导入规则
RecordSet rs = new RecordSet();
String filedValue = this.getFiledValue(tableIndex, rowIndex, colIndex);
if (!"".equals(filedValue)) {
filedValue = filedValue.replace("'", "''");
boolean isnull = false;
ArrayList tempfields = Util.TokenizerString(this.getDetailTableField(tableIndex, colIndex), "_");
int type = Util.getIntValue((String) tempfields.get(2));
int htmltype = Util.getIntValue((String) tempfields.get(3));
switch (htmltype) {
case 1:
case 2:
filedValue = filedValue.replace("<br>","\n");
break;
case 3:
if (type == 22 && wfDtlImpRole4Subject == 1) {//科目浏览按钮 && 开启了科目按编码导入
BudgetfeeTypeComInfo budgetfeeTypeComInfo = new BudgetfeeTypeComInfo();
filedValue = Util.null2String(budgetfeeTypeComInfo.getBudgetfeeTypeCodeName(String.valueOf(Util.getIntValue(filedValue.replace("'", ""))))).trim();
} else if (type == 22 && wfDtlImpRole4Subject == 2) {//科目浏览按钮 && 开启了科目按全路径名称导入
BudgetfeeTypeComInfo budgetfeeTypeComInfo = new BudgetfeeTypeComInfo();
filedValue = budgetfeeTypeComInfo.getSubjectFullName(String.valueOf(Util.getIntValue(filedValue.replace("'", "")))).trim();
} else if (type == 251 && wfDtlImpRole4Fcc == 1) {//成本中心浏览按钮 && 开启了成本中心按编码导入
RecordSet rs1 = new RecordSet();
rs1.executeQuery("select a.id, a.name, a.code from FnaCostCenter a where a.id = " + Util.getIntValue(filedValue.replace("'", "")));
if (rs1.next()) {
filedValue = Util.null2String(rs1.getString("code")).trim();
} else {
filedValue = "";
}
} else if (type == 251 && wfDtlImpRole4Fcc == 2) {//成本中心浏览按钮 && 开启了成本中心按全路径名称导入
filedValue = RequestDetailImportUtil.getCostCenterFullName(filedValue.replace("'", ""));
} else {
String fieldDBType = (String) ((List) fi1.getDetailFieldDBTypes().get(tableIndex)).get(colIndex);
Map<String,Object> otherparams = new HashMap<>();
otherparams.put("rowIndex", rowIndex);
filedValue = this.getFieldName(filedValue, type, fieldDBType, otherparams);
}
break;
case 4:
if ("1".equals(filedValue)) {
filedValue = SystemEnv.getHtmlLabelName(25104, user.getLanguage());
} else {
filedValue = "";
}
break;
case 5:
//复选框可以选择多个字段
if (type == 2) {
//整理已选择的值
String[] valueList = Util.TokenizerString2(filedValue, ",");
String totalvalue = "";
for (String value : valueList) {
if (!value.equals("")) {
totalvalue += "," + value;
}
}
if (totalvalue.length() > 0) {
String tempvalue = "";
totalvalue = totalvalue.substring(1);
rs.executeSql("SELECT selectname FROM workflow_selectitem WHERE selectvalue in(" + totalvalue + ") AND fieldid=" + ((String) tempfields.get(0)).substring(5));
while (rs.next()) {
tempvalue += "," + Util.null2String(rs.getString("selectname"));
}
if (tempvalue.startsWith(",")) tempvalue = tempvalue.substring(1);
filedValue = tempvalue;
} else {
filedValue = "";
}
} else {
rs.executeSql("SELECT selectname FROM workflow_selectitem WHERE selectvalue='" + filedValue + "' AND fieldid=" + ((String) tempfields.get(0)).substring(5));
if (rs.next()) {
filedValue = Util.null2String(rs.getString("selectname"));
} else {
filedValue = "";
}
}
break;
}
}
return filedValue;
}
/**
* SAPid
*
* @param formid
* @param isbill
* @param fieldids
* @param formType 1 0
* @return
* @author wshen
*/
private ArrayList getSAPDetailField(int formid, int isbill, ArrayList fieldids, int formType) {
RecordSet rs = new RecordSet();
String sql = "";
//处理输出表
sql = "select fromfieldid from sap_outTable where isbill=" + isbill + " and fromfieldid in (select id from workflow_billfield where billid =" + formid + " and viewtype=" + formType + ")";
rs.execute(sql);
while (rs.next()) {
String fieldid = rs.getString("fromfieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
//处理输出参数
sql = "select fromfieldid from sap_outParameter where isbill=" + isbill + " and fromfieldid in (select id from workflow_billfield where billid =" + formid + " and viewtype=" + formType + ")";
rs.execute(sql);
while (rs.next()) {
String fieldid = rs.getString("fromfieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
//处理输出结构
sql = "select fromfieldid from sap_outStructure where isbill=" + isbill + " and fromfieldid in (select id from workflow_billfield where billid =" + formid + " and viewtype=" + formType + ")";
rs.execute(sql);
while (rs.next()) {
String fieldid = rs.getString("fromfieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
//处理输入参数
sql = "select fromfieldid from sap_inParameter where isbill=" + isbill + " and fromfieldid in (select id from workflow_billfield where billid =" + formid + " and viewtype=" + formType + ")";
rs.execute(sql);
while (rs.next()) {
String fieldid = rs.getString("fromfieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
//处理输入结构
sql = "select fromfieldid from sap_inStructure where isbill=" + isbill + " and fromfieldid in (select id from workflow_billfield where billid =" + formid + " and viewtype=" + formType + ")";
rs.execute(sql);
while (rs.next()) {
String fieldid = rs.getString("fromfieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
//处理输入表
sql = "select fromfieldid from sap_inTable where isbill=" + isbill + " and fromfieldid in (select id from workflow_billfield where billid =" + formid + " and viewtype=" + formType + ")";
rs.execute(sql);
while (rs.next()) {
String fieldid = rs.getString("fromfieldid");
if (fieldids.indexOf(fieldid) == -1) fieldids.add(fieldid);
}
return fieldids;
}
/**
* id
* @param formid
* @param isbill
* @param workflowid
* @param nodeid
* @param fieldids
* @return
*/
private ArrayList getFormulaNew(int formid, int isbill, int workflowid, int nodeid, ArrayList fieldids) {
RecordSet rs = new RecordSet();
String sql = "";
//处理输出表
sql = "select destcell,formula from workflow_formula_htmllayout where formid= ? and isbill = ? and workflowid = ? and nodeid = ?";
rs.executeQuery(sql, formid, isbill, workflowid, nodeid);
JSONArray arr;
String fieldid;
while (rs.next()) {
//["main.34403","main.34408"]
String destcell = rs.getString("destcell");
arr = JSONArray.parseArray(destcell);
for (int i = 0 ; arr != null && i < arr.size(); i++) {
fieldid = arr.getString(i);
if (fieldid.indexOf(".") > -1) {
fieldid = fieldid.split("\\.")[1];
if (fieldids.indexOf(fieldid) == -1)
fieldids.add(fieldid);
}
}
//处理写在IF公式内部的赋值字段
String formula = rs.getString("formula");
//formula: IF([main.652248]==10,[main.652247]=5,[main.652249]=0) destcell: [""]
if((arr != null && arr.size() == 1) && formula.contains("IF")){
String pattern ="\\[([a-zA-Z0-9]|\\.)+\\](?<!=)=(?!=)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(formula);
fieldid = "";
while (m.find( )) {
//[main.652247]=
String match = m.group();
if (match.indexOf(".") > -1) {
String fieldStr= match.split("\\.")[1];
if (fieldStr.length() > 2)
fieldid = fieldStr.substring(0,fieldStr.length()-2);
if (fieldids.indexOf(fieldid) == -1)
fieldids.add(fieldid);
}
}
}
}
return fieldids;
}
private Map<Integer, String> getFreeNodeName(int requestId) {
RecordSet rs = new RecordSet();
String basesql = "select id,nodeName from workflow_freenode ";
if("".equals(this.mainSubSignEntity.getRequestids())){
rs.executeQuery(basesql + " where requestid = ?", requestId);
}else{
String requestidStr = requestId+","+this.mainSubSignEntity.getRequestids();
rs.executeQuery(basesql + " where " + Util.getSubINClause(requestidStr, "requestid", "IN"));
}
Map<Integer, String> nodeNameMap = new HashMap<>();
while (rs.next()) {
Integer nodeId = rs.getInt("id");
nodeNameMap.put(nodeId, rs.getString("nodeName"));
}
return nodeNameMap;
}
//处理默认签字意见大小的外层div防止签字意见独占一行的情况
private String processDefaultFontSizeDiv(String remark) {
String indexStr = "<div id=\"wea_rich_text_default_font\"";
if (Util.null2String(remark).indexOf(indexStr) > -1) {
remark = remark.replace(indexStr,"<span id=\"wea_rich_text_default_font\"");
if(remark.endsWith("</div>")) {
remark = remark.substring(0, remark.length() - 6);
remark += "</span>";
}
}
indexStr = "<div id=\"ck_rich_text_default_font\"";
if (Util.null2String(remark).indexOf(indexStr) > -1) {
remark = remark.replace(indexStr,"<span id=\"ck_rich_text_default_font\"");
if(remark.endsWith("</div>")) {
remark = remark.substring(0, remark.length() - 6);
remark += "</span>";
}
}
return remark;
}
/**
*
* @param remark
* @param fullTextAnnotation
* @return
*/
private String appendFullTextAnnotation(String remark, String fullTextAnnotation) {
if (!"".equals(fullTextAnnotation)) {
String[] fulltextannotationIds = Util.splitString(fullTextAnnotation, ",");
for (String fulltextannotationId : fulltextannotationIds) {
int __fulltextannoationid = Util.getIntValue(fulltextannotationId);
if (__fulltextannoationid <= 0) continue;
remark += "<BR/><img name=\"fulltextannotation\" src=\""+weaver.general.GCONST.getContextPath()+"/weaver/weaver.file.FileDownload?fileid=" + __fulltextannoationid + "\" />";
}
}
return remark;
}
public List<Integer> remarksort(List<Map<String,String>> remarkList_date,int groupOrderType) {
List<Integer> remarkKeys = new ArrayList<>();
if(groupOrderType==2){
Collections.sort(remarkList_date ,new Comparator<Map<String,String>>() {
@Override
public int compare(Map<String,String> m1, Map<String,String> m2) {
return m1.get(m1.keySet().iterator().next()).compareTo(m2.get(m2.keySet().iterator().next()));
}
});
}else{
Collections.sort(remarkList_date ,new Comparator<Map<String,String>>() {
@Override
public int compare(Map<String,String> m1, Map<String,String> m2) {
return m2.get(m2.keySet().iterator().next()).compareTo(m1.get(m1.keySet().iterator().next()));
}
});
}
for(Map<String,String> date:remarkList_date){
int key = Util.getIntValue(date.keySet().iterator().next());
if(!remarkKeys.contains(key)){
remarkKeys.add(key);
}
}
return remarkKeys;
}
//qc1642534 获取自由节点的签字意见 异步加载
public String GetfreeNodeRemark1(int workflowid, int currentnodeid, int ismode,NodeSignInputSetEntity entity,int requestid,String markKey) {
this.markkey = markKey+"_"+workflowid;//qc1679821
new Thread(new Runnable(){
@Override
public void run(){
// if (ismode == 1) //本需求这里ismode固定为2
// ismode = 0;
//-9999表示自由节点
String nodemark = GetNodeRemarkInner(workflowid, -9999, currentnodeid, 2,entity);
nodemark = checkNodemark(nodemark);
RecordSet rs = new RecordSet();
rs.executeUpdate("update qc1642534_temp set markcontent = ? where requestid = ? and cellmark = ?",nodemark,requestid,markKey);
}
}).start();
return "<div id='"+markKey+"'><div>";
}
//qc1642534 获取节点的签字意见 异步加载
public String GetNodeRemark1(int workflowid, int nodeid, int currentnodeid, int ismode, NodeSignInputSetEntity entity,int requestid,String markKey) {
this.markkey = markKey+"_"+workflowid;//qc1679821
try {
new Thread(new Runnable(){
@Override
public void run(){
String nodemark = GetNodeRemarkInner(workflowid, nodeid, currentnodeid, ismode,entity);
nodemark = checkNodemark(nodemark);
RecordSet rs = new RecordSet();
rs.writeLog(">>>qc1642534 :requestid="+requestid+",markKey="+markKey+"获取节点签字意见:"+nodemark);
rs.executeUpdate("update qc1642534_temp set markcontent = ? where requestid = ? and cellmark = ?",nodemark,requestid,markKey);
}
}).start();
return "<div id='"+markKey+"'><div>";
} catch (Exception e) {
log.info("Catch a exception.", e);
return "";
}
}
//qc1679821 是否是要折叠的流程 如果是 就设置markkey和needHide属性
public void initNeedHide(int workflowid,String efieldid,String markkey){
RecordSet rs = new RecordSet();
String wfid = workflowid+"";
rs.executeQuery("select * from uf_fieldremark");
List<String> configList = new ArrayList<>();
String configwfids = "";
if (rs.next()){
configwfids = rs.getString("workflowid");
}
if(!"".equals(configwfids)){
configList = new ArrayList<>(Arrays.asList(configwfids.split(",")));
}
if(configList == null) return;
if(efieldid.endsWith("_2") || efieldid.endsWith("_3") || efieldid.endsWith("_4")){//_2为主流程 _3为子流程 _4为本流程
String[] arr = efieldid.split("_");
if(arr.length == 3){
String worlflowid = Util.null2String(arr[0]);
if(configList.contains(worlflowid)){
this.needHide = true;
this.markkey = markkey+"_"+worlflowid;
new BaseBean().writeLog("[符合配置的流程]efieldid="+efieldid+",markkey(最后一个为主流程id)="+this.markkey);
return;
}
}else{
new BaseBean().writeLog("节点设置存在异常");
return ;
}
}
}
//qc1679821 将签字意见处理套一层div使得折叠组件生效并且加上隐藏的input存储折叠组件默认打开的配置信息
private String getColumnString1(List<String> list, boolean needBr){
log.info("【进入签字意见折叠方法==========】:"+list.toString());
String result = "";
Map<String,String> groupDeptRemark = new LinkedHashMap<>();//用map存储按照部门分组签字意见
for (int i = 0; i < list.size(); i++) {
String remarktemp = list.get(i);
Document doc = Jsoup.parse(remarktemp,"UTF-8");
Elements deptIdSpan = doc.select("[name=$remark_dept_id$");//获取部门id
String deptid = deptIdSpan.text();
if(groupDeptRemark.containsKey(deptid)){
String old = groupDeptRemark.get(deptid);
String newremark = old + remarktemp;//+hr控制是否换行
groupDeptRemark.replace(deptid,newremark);
}else{
groupDeptRemark.put(deptid,remarktemp);
}
}
log.info("【按照部门分组签字意见========】:"+groupDeptRemark);
for(Map.Entry<String, String> entry : groupDeptRemark.entrySet()){//遍历按部门分组后,该节点每个部门的签字意见
String remarkDeptid = entry.getKey();
String remarks = entry.getValue();
String depid = entry.getKey();
// String deptname = orgShowBiz.getDepartmentShow("workflow", depid);
String deptnameSql = "select departmentname from hrmdepartment where id = '"+depid+"'";
log.info("【查询部门名称deptnameSql========depid】"+depid);
RecordSet rsdDept = new RecordSet();
rsdDept.executeQuery(deptnameSql);
String deptname ="";
if(rsdDept.next()){
deptname = rsdDept.getString("departmentname");
}
log.info("【查询部门名称deptname========】:"+deptname);
if("".equals(deptname)){
deptname = "系统管理员";
}
String nowUserdeptid = user.getUserDepartment()+"";
//2023.02.15查询上级部门ID
String nowDeptSql = "select supdepid from hrmdepartment where id = '"+nowUserdeptid+"'";
RecordSet rsd = new RecordSet();
rsd.executeQuery(nowDeptSql);
if(rsd.next()){
nowUserdeptid= rsd.getString("supdepid");
}
log.info("【获取当前用户的部门ID==========】:"+nowUserdeptid);
String display="";
String icon = "";
if(nowUserdeptid.equals(remarkDeptid)){//当前用户的部门签字意见 默认展开
display = "bolck";
icon = "/workflow/qc1679821/image/minus.png";
}else{
display = "none";
icon = "/workflow/qc1679821/image/add.png";
}
//一个部门对应一个折叠div 每个折叠div在表单中的id要独立所以每次同一个请求的签字意见根据缓存设计独立的id
String onlyKey = markkey+"_"+depid;//表单坐标+流程id+部门id组成折叠区域的唯一key
new BaseBean().writeLog("onlykey="+onlyKey+",display:"+display);
String imgstyle="background: url("+icon+");background-repeat: no-repeat;background-position:center;" +
"display: inline-block;vertical-align:middle;border:1px solid #bfbfbf;" +
"margin-right:10px;width:12px;height:12px"; //图标样式
remarks = "<div>" +
"<p onclick=controlDisplay('"+onlyKey+"') class='dep_qc_sign' style=''>" +
"<span id='icon_qc_"+onlyKey+"' style='"+imgstyle+"' ></span>"+deptname+"</p>" +
"<div id='accordion_qc_"+onlyKey+"' style='display:"+display+";' >" + remarks + "</div>" +
"</div>";
result += remarks;
}
return result;
}
private boolean needHide = false; //qc1679821 控制是否隐藏的标识
private String markkey; //qc1679821 本次意见对应的表单行列标
}