aslp文件相关提交
This commit is contained in:
		
							parent
							
								
									c0968c16e4
								
							
						
					
					
						commit
						e6230929f6
					
				
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| Before Width: | Height: | Size: 1.2 MiB | 
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| Before Width: | Height: | Size: 1.2 MiB | 
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| Before Width: | Height: | Size: 1.2 MiB | 
| @ -0,0 +1,955 @@ | ||||
| package com.awspaas.user.bpa.aslp; | ||||
| 
 | ||||
| import com.actionsoft.apps.coe.pal.constant.CoEConstant; | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryQueryAPIManager; | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache; | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel; | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.upfile.constant.CoeFileConstant; | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.upfile.model.UpfileModel; | ||||
| import com.actionsoft.apps.resource.interop.aslp.ASLP; | ||||
| import com.actionsoft.apps.resource.interop.aslp.Meta; | ||||
| import com.actionsoft.apps.resource.plugin.profile.DCPluginProfile; | ||||
| import com.actionsoft.bpms.commons.mvc.view.ResponseObject; | ||||
| import com.actionsoft.bpms.server.UserContext; | ||||
| import com.actionsoft.bpms.server.fs.DCContext; | ||||
| import com.actionsoft.bpms.server.fs.dc.DCProfileManager; | ||||
| import com.actionsoft.bpms.util.DBSql; | ||||
| import com.actionsoft.bpms.util.UUIDGener; | ||||
| import com.actionsoft.bpms.util.UtilDate; | ||||
| import com.actionsoft.bpms.util.UtilString; | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| import com.alibaba.fastjson.JSONArray; | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| import com.awspaas.user.bpa.util.HSSFUtils; | ||||
| import com.awspaas.user.bpa.util.Utils; | ||||
| import org.apache.poi.hslf.usermodel.*; | ||||
| import org.apache.poi.hssf.usermodel.HSSFCell; | ||||
| import org.apache.poi.hssf.usermodel.HSSFRow; | ||||
| import org.apache.poi.hssf.usermodel.HSSFSheet; | ||||
| import org.apache.poi.hssf.usermodel.HSSFWorkbook; | ||||
| import org.apache.poi.ss.usermodel.Cell; | ||||
| import org.apache.poi.ss.usermodel.CellType; | ||||
| import org.apache.poi.ss.usermodel.Row; | ||||
| import org.apache.poi.xslf.usermodel.*; | ||||
| import org.apache.poi.xssf.usermodel.XSSFCell; | ||||
| import org.apache.poi.xssf.usermodel.XSSFRow; | ||||
| import org.apache.poi.xssf.usermodel.XSSFSheet; | ||||
| import org.apache.poi.xssf.usermodel.XSSFWorkbook; | ||||
| import org.springframework.util.StringUtils; | ||||
| 
 | ||||
| import java.io.*; | ||||
| import java.net.URLDecoder; | ||||
| import java.nio.charset.StandardCharsets; | ||||
| import java.sql.Timestamp; | ||||
| import java.util.ArrayList; | ||||
| import java.util.LinkedList; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class UpdatePptxAndExcelAslp implements ASLP { | ||||
|     @Override | ||||
|     @Meta(parameter = { "name: 'sid', required: true, desc: 'sid'", | ||||
|             "name: 'pl_uuid', required: true, desc: '文件id'", | ||||
|             "name: 'shape_uuid', required: true, desc: '文件内容id'", | ||||
|             "name: 'file_data', required: true, desc: '文件名称'" }) | ||||
|     public ResponseObject call(Map<String, Object> params) { | ||||
|         ResponseObject ro = ResponseObject.newWarnResponse("结果未知"); | ||||
|         String sid = (String) params.get("sid"); | ||||
|         if (!SDK.getPortalAPI().checkSession(sid)) { | ||||
|             ro = ResponseObject.newErrResponse("sid无效"); | ||||
|             return ro; | ||||
|         } | ||||
|         String pl_uuid = params.get("pl_uuid").toString(); | ||||
|         String shape_uuid = params.get("shape_uuid").toString(); | ||||
|         if (params.get("shape_uuid").toString().contains("obj_")){ | ||||
|             String name = null; | ||||
|             try { | ||||
|                 name = URLDecoder.decode(params.get("file_data").toString(), StandardCharsets.UTF_8.toString()); | ||||
|             } catch (UnsupportedEncodingException e) { | ||||
|                 e.printStackTrace(); | ||||
|             } | ||||
|             System.out.println("filename>>>>>>>>>>>"+name); | ||||
|             UpfileModel model = new UpfileModel(); | ||||
|             model.setUuid(UUIDGener.getUUID()); | ||||
|             model.setPl_uuid(pl_uuid); | ||||
|             model.setShape_uuid(shape_uuid); | ||||
|             model.setDownload(1); | ||||
|             model.setCreateUser(UserContext.fromSessionId(sid).getUID()); | ||||
|             model.setCreateTime(new Timestamp(System.currentTimeMillis())); | ||||
|             model.setType("s"); | ||||
|             // model.setFileType(fileType); | ||||
|             model.setFileName(name); | ||||
|             DCContext dcContext = getDCContext(model,UserContext.fromSessionId(sid)); | ||||
|             if (name.endsWith(".xlsx")||name.endsWith(".xls")){ | ||||
|                 try { | ||||
| 
 | ||||
|                     //d1d4b52a-d6e2-4a6f-acac-37e07d2ae6e5 | ||||
|                     UpfileModel model_old = new UpfileModel(); | ||||
|                     model_old.setUuid(UUIDGener.getUUID()); | ||||
|                     model_old.setPl_uuid("f9df56d7-a6b2-442c-9898-822619057493"); | ||||
|                     model_old.setShape_uuid("obj_7ebfdb24f36e469cb841988cbda035c8"); | ||||
|                     model_old.setDownload(1); | ||||
|                     model_old.setCreateUser(UserContext.fromSessionId(sid).getUID()); | ||||
|                     model_old.setCreateTime(new Timestamp(System.currentTimeMillis())); | ||||
|                     model_old.setType("s"); | ||||
|                     model_old.setFileName("制度文件模版"+name.substring(name.lastIndexOf("."))); | ||||
|                     DCContext dcContext_old = getDCContext(model_old,UserContext.fromSessionId(sid)); | ||||
|                     // 读取模版文件的Excel文件 | ||||
|                     String[] filePaths = {dcContext.getFilePath(), | ||||
|                             dcContext_old.getFilePath()}; | ||||
| 
 | ||||
|                     ArrayList<String> list = new ArrayList<>(); | ||||
| 
 | ||||
|                     for (String path : filePaths) { | ||||
|                         list.add(path); | ||||
|                     } | ||||
| 
 | ||||
|                     String path = dcContext.getPath(); | ||||
|                     String fileName = name; | ||||
| 
 | ||||
|                     if (name.contains(".xlsx")){ | ||||
|                         Utils.mergeExcel(list, path, fileName); | ||||
|                         FileInputStream file = new FileInputStream(new File(dcContext.getFilePath())); | ||||
|                         XSSFWorkbook workbook = new XSSFWorkbook(file); | ||||
|                         //  FileInputStream file2 = new FileInputStream(new File(dcContext.getFilePath())); | ||||
|                         //  XSSFWorkbook workbook2 = new XSSFWorkbook(file2); | ||||
|                         // 创建两个新的Sheet页 | ||||
|                         //    Sheet sheet1 = workbook.createSheet("封面"); | ||||
|                         //    Sheet sheet2 = workbook.createSheet("修订记录"); | ||||
|                         workbook.setSheetOrder("封面",0); | ||||
|                         workbook.setSheetOrder("修订记录",1); | ||||
|                         // 向新Sheet页中填充数据 | ||||
|                         //    fillData(sheet1); | ||||
|                         //    fillData(sheet2); | ||||
| 
 | ||||
|                         // 保存修改后的Excel文件 | ||||
|                         //      FileOutputStream outputStream = new FileOutputStream(dcContext.getFilePath()); | ||||
|                         //   workbook.write(outputStream); | ||||
|                         //   workbook.close(); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|                         try { | ||||
| 
 | ||||
|                             // 获取指定的 sheet 页 | ||||
|                             XSSFSheet sheet = workbook.getSheet("封面"); | ||||
| 
 | ||||
|                             // 查找并替换参数 | ||||
|                             //这个是替换文件编码 | ||||
|                             // | ||||
|                             // | ||||
|                             String file_number = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID IN ('file_number','form_number')"); | ||||
|                             if (StringUtils.isEmpty(file_number)){ | ||||
|                                 replaceParameter(sheet, "{{file_code}}", ""); | ||||
|                             }else { | ||||
| 
 | ||||
|                                 replaceParameter(sheet, "{{file_code}}", file_number); | ||||
|                             } | ||||
|                             //这个是替换生效日期 | ||||
|                             String file_date = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID IN('effective_date','form_effective_date') "); | ||||
|                             if (UtilString.isNotEmpty(file_date)){ | ||||
| 
 | ||||
|                                 replaceParameter(sheet, "{{file_date}}", file_date); | ||||
|                             }else { | ||||
|                                 replaceParameter(sheet, "{{file_date}}", ""); | ||||
|                             } | ||||
|                             //这个是替换适用范围 | ||||
|                             // | ||||
|                             String fanwei = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID in( 'application','form_Scope_application')"); | ||||
|                             if (UtilString.isNotEmpty(fanwei)){ | ||||
| 
 | ||||
|                                 replaceParameter(sheet, "{{fanwei}}", fanwei); | ||||
|                             }else { | ||||
|                                 replaceParameter(sheet, "{{fanwei}}", ""); | ||||
|                             } | ||||
|                             //这个是替换L1-L4 | ||||
|                             String L1 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L1'"); | ||||
|                             replaceParameter(sheet, "{{L1}}", L1); | ||||
|                             String L2 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L2'"); | ||||
|                             replaceParameter(sheet, "{{L2}}", L2); | ||||
|                             String L3 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L3'"); | ||||
|                             replaceParameter(sheet, "{{L3}}", L3); | ||||
|                             String L4 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L4'"); | ||||
|                             replaceParameter(sheet, "{{L4}}", L4); | ||||
|                             //这个是替换流程名称 | ||||
|                             String process_name = DBSql.getString("select PLNAME from app_act_coe_pal_repository where ID = '" + pl_uuid + "'"); | ||||
|                             replaceParameter(sheet, "{{process_name}}", process_name); | ||||
|                             file.close(); | ||||
| 
 | ||||
| 
 | ||||
|                             XSSFSheet sheet_xd = workbook.getSheet("修订记录"); | ||||
| 
 | ||||
|                             replaceParameter(sheet_xd, "{{process_name}}", process_name); | ||||
| 
 | ||||
|                             // 获取参数所在的行和列 | ||||
|                             int parameterRow = 3; // 假设参数在第二行 | ||||
|                             int parameterCol = 0; // 假设参数在第一列 | ||||
| 
 | ||||
|                             // 获取数据起始行 | ||||
|                             int dataStartRow = 3; // 假设数据从第四行开始 | ||||
| 
 | ||||
|                             // 定义要替换的参数数组 | ||||
|                             String[] parameters = {"{{number}}", "{{version}}", "{{company}}","{{creauser}}","{{date}}","{{shen_user}}","{{fuhe_user}}","{{shenpi_user}}","{{person}}"}; | ||||
| 
 | ||||
|                             /*// 定义要插入的数据数组 | ||||
|                             String[][] data = { | ||||
|                                     {"John Doe", "30", "New York"}, | ||||
|                                     {"Jane Smith", "25", "London"}, | ||||
|                                     {"Michael Johnson", "40", "Sydney"} | ||||
|                             }; | ||||
| */ | ||||
| 
 | ||||
|                             PALRepositoryModel palRepositoryModel =  PALRepositoryCache.getCache().get(pl_uuid); | ||||
|                             JSONArray versionHistoryTable = getVersionHistoryTable(palRepositoryModel); | ||||
|                             String[][] strArray2 = new String[versionHistoryTable.size()][]; | ||||
|                             System.out.println("jsonArray>>>>>>>>>>"+versionHistoryTable.toString()); | ||||
| 
 | ||||
|                             /** | ||||
|                              * [{"approver":"任国梁","Drafted_and_revised_date":"2023年5月08日" | ||||
|                              * ,"auditor":"杜薇","Issuing_department":"总部金融中心经营管理办公室", | ||||
|                              * "reviewer":"/","Contents_and_reasons_for_revision":"新增","P_versions":"V1.0","Drafted_and_revised_by":"赵苗"}] | ||||
|                              */ | ||||
|                             List<String[]> lists = new LinkedList<>(); | ||||
|                             for (int i = 0; i < versionHistoryTable.size(); i++) { | ||||
|                                 JSONObject obj2 = versionHistoryTable.getJSONObject(i); | ||||
|                                 String[] strArray = new String[9]; | ||||
|                                 strArray[0] = String.valueOf(i+1); | ||||
|                                 strArray[1] = obj2.getString("P_versions"); | ||||
|                                 strArray[2] = obj2.getString("Issuing_department"); | ||||
|                                 strArray[3] = obj2.getString("Drafted_and_revised_by"); | ||||
|                                 strArray[4] = obj2.getString("Drafted_and_revised_date"); | ||||
|                                 strArray[5] = obj2.getString("auditor"); | ||||
|                                 strArray[6] = obj2.getString("reviewer"); | ||||
|                                 strArray[7] = obj2.getString("approver"); | ||||
|                                 strArray[8] = obj2.getString("Contents_and_reasons_for_revision"); | ||||
|                                 lists.add(strArray); | ||||
|                                 strArray2[i] = strArray; | ||||
|                             } | ||||
|                             String[][] datas = strArray2; | ||||
| 
 | ||||
|                             // 循环替换参数 | ||||
|                             for (int i = 0; i < parameters.length; i++) { | ||||
|                                 String parameter = parameters[i]; | ||||
|                                 String replacement = datas[0][i]; | ||||
| 
 | ||||
|                                 replaceParameter(sheet_xd, parameter, replacement, parameterRow, parameterCol); | ||||
|                             } | ||||
| 
 | ||||
|                             // 循环插入数据 | ||||
|                             for (int i = 0; i < datas.length; i++) { | ||||
|                                 insertData(sheet_xd, datas[i], dataStartRow + i); | ||||
|                             } | ||||
| 
 | ||||
| 
 | ||||
|                             // 保存修改后的 Excel 文件 | ||||
|                             FileOutputStream outputStream = new FileOutputStream(dcContext.getFilePath()); | ||||
|                             workbook.write(outputStream); | ||||
|                             workbook.close(); | ||||
|                             outputStream.close(); | ||||
| 
 | ||||
|                             System.out.println("封面参数替换完成!"); | ||||
| 
 | ||||
|                         }catch (Exception e){ | ||||
| 
 | ||||
|                         } | ||||
|                     }else { | ||||
|                         HSSFUtils.mergeExcel(list, path, fileName); | ||||
|                         FileInputStream file = new FileInputStream(new File(dcContext.getFilePath())); | ||||
|                         HSSFWorkbook workbook = new HSSFWorkbook(file); | ||||
|                         //  FileInputStream file2 = new FileInputStream(new File(dcContext.getFilePath())); | ||||
|                         //  XSSFWorkbook workbook2 = new XSSFWorkbook(file2); | ||||
|                         // 创建两个新的Sheet页 | ||||
|                         //    Sheet sheet1 = workbook.createSheet("封面"); | ||||
|                         //    Sheet sheet2 = workbook.createSheet("修订记录"); | ||||
|                         workbook.setSheetOrder("封面",0); | ||||
|                         workbook.setSheetOrder("修订记录",1); | ||||
|                         // 向新Sheet页中填充数据 | ||||
|                         //    fillData(sheet1); | ||||
|                         //    fillData(sheet2); | ||||
| 
 | ||||
|                         // 保存修改后的Excel文件 | ||||
|                         //      FileOutputStream outputStream = new FileOutputStream(dcContext.getFilePath()); | ||||
|                         //   workbook.write(outputStream); | ||||
|                         //   workbook.close(); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|                         try { | ||||
| 
 | ||||
|                             // 获取指定的 sheet 页 | ||||
|                             HSSFSheet sheet = workbook.getSheet("封面"); | ||||
| 
 | ||||
|                             // 查找并替换参数 | ||||
|                             //这个是替换文件编码 | ||||
|                             String file_number = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID IN('form_number','file_number')"); | ||||
|                             if (StringUtils.isEmpty(file_number)){ | ||||
|                                 replaceParameter(sheet, "{{file_code}}", ""); | ||||
|                             }else { | ||||
| 
 | ||||
|                                 replaceParameter(sheet, "{{file_code}}", file_number); | ||||
|                             } | ||||
|                             //这个是替换生效日期 | ||||
|                             String file_date = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID IN('effective_date','form_effective_date')"); | ||||
|                             if (UtilString.isNotEmpty(file_date)){ | ||||
| 
 | ||||
|                                 replaceParameter(sheet, "{{file_date}}", file_date); | ||||
|                             }else { | ||||
|                                 replaceParameter(sheet, "{{file_date}}", ""); | ||||
|                             } | ||||
|                             //这个是替换适用范围 | ||||
|                             String fanwei = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID in( 'application','form_Scope_application')"); | ||||
|                             if (UtilString.isNotEmpty(fanwei)){ | ||||
| 
 | ||||
|                                 replaceParameter(sheet, "{{fanwei}}", fanwei); | ||||
|                             }else { | ||||
|                                 replaceParameter(sheet, "{{fanwei}}", ""); | ||||
|                             } | ||||
|                             //这个是替换L1-L4 | ||||
|                             String L1 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L1'"); | ||||
|                             replaceParameter(sheet, "{{L1}}", L1); | ||||
|                             String L2 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L2'"); | ||||
|                             replaceParameter(sheet, "{{L2}}", L2); | ||||
|                             String L3 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L3'"); | ||||
|                             replaceParameter(sheet, "{{L3}}", L3); | ||||
|                             String L4 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L4'"); | ||||
|                             replaceParameter(sheet, "{{L4}}", L4); | ||||
|                             //这个是替换流程名称 | ||||
|                             String process_name = DBSql.getString("select PLNAME from app_act_coe_pal_repository where ID = '" + pl_uuid + "'"); | ||||
|                             replaceParameter(sheet, "{{process_name}}", process_name); | ||||
|                             file.close(); | ||||
| 
 | ||||
| 
 | ||||
|                             HSSFSheet sheet_xd = workbook.getSheet("修订记录"); | ||||
|                             replaceParameter(sheet_xd, "{{process_name}}", process_name); | ||||
| 
 | ||||
| 
 | ||||
|                             // 获取参数所在的行和列 | ||||
|                             int parameterRow = 3; // 假设参数在第二行 | ||||
|                             int parameterCol = 0; // 假设参数在第一列 | ||||
| 
 | ||||
|                             // 获取数据起始行 | ||||
|                             int dataStartRow = 3; // 假设数据从第四行开始 | ||||
| 
 | ||||
|                             // 定义要替换的参数数组 | ||||
|                             String[] parameters = {"{{number}}", "{{version}}", "{{company}}","{{creauser}}","{{date}}","{{shen_user}}","{{fuhe_user}}","{{shenpi_user}}","{{person}}"}; | ||||
| 
 | ||||
|                             /*// 定义要插入的数据数组 | ||||
|                             String[][] data = { | ||||
|                                     {"John Doe", "30", "New York"}, | ||||
|                                     {"Jane Smith", "25", "London"}, | ||||
|                                     {"Michael Johnson", "40", "Sydney"} | ||||
|                             }; | ||||
| */ | ||||
| 
 | ||||
|                             PALRepositoryModel palRepositoryModel =  PALRepositoryCache.getCache().get(pl_uuid); | ||||
|                             JSONArray versionHistoryTable = getVersionHistoryTable(palRepositoryModel); | ||||
|                             String[][] strArray2 = new String[versionHistoryTable.size()][]; | ||||
|                             System.out.println("jsonArray>>>>>>>>>>"+versionHistoryTable.toString()); | ||||
| 
 | ||||
|                             /** | ||||
|                              * [{"approver":"任国梁","Drafted_and_revised_date":"2023年5月08日" | ||||
|                              * ,"auditor":"杜薇","Issuing_department":"总部金融中心经营管理办公室", | ||||
|                              * "reviewer":"/","Contents_and_reasons_for_revision":"新增","P_versions":"V1.0","Drafted_and_revised_by":"赵苗"}] | ||||
|                              */ | ||||
|                             List<String[]> lists = new LinkedList<>(); | ||||
|                             for (int i = 0; i < versionHistoryTable.size(); i++) { | ||||
|                                 JSONObject obj2 = versionHistoryTable.getJSONObject(i); | ||||
|                                 String[] strArray = new String[9]; | ||||
|                                 strArray[0] = String.valueOf(i+1); | ||||
|                                 strArray[1] = obj2.getString("P_versions"); | ||||
|                                 strArray[2] = obj2.getString("Issuing_department"); | ||||
|                                 strArray[3] = obj2.getString("Drafted_and_revised_by"); | ||||
|                                 strArray[4] = obj2.getString("Drafted_and_revised_date"); | ||||
|                                 strArray[5] = obj2.getString("auditor"); | ||||
|                                 strArray[6] = obj2.getString("reviewer"); | ||||
|                                 strArray[7] = obj2.getString("approver"); | ||||
|                                 strArray[8] = obj2.getString("Contents_and_reasons_for_revision"); | ||||
|                                 lists.add(strArray); | ||||
|                                 strArray2[i] = strArray; | ||||
|                             } | ||||
|                             String[][] datas = strArray2; | ||||
| 
 | ||||
|                             // 循环替换参数 | ||||
|                             for (int i = 0; i < parameters.length; i++) { | ||||
|                                 String parameter = parameters[i]; | ||||
|                                 String replacement = datas[0][i]; | ||||
| 
 | ||||
|                                 replaceParameter(sheet_xd, parameter, replacement, parameterRow, parameterCol); | ||||
|                             } | ||||
| 
 | ||||
|                             // 循环插入数据 | ||||
|                             for (int i = 0; i < datas.length; i++) { | ||||
|                                 insertData(sheet_xd, datas[i], dataStartRow + i); | ||||
|                             } | ||||
| 
 | ||||
| 
 | ||||
|                             // 保存修改后的 Excel 文件 | ||||
|                             FileOutputStream outputStream = new FileOutputStream(dcContext.getFilePath()); | ||||
|                             workbook.write(outputStream); | ||||
|                             workbook.close(); | ||||
|                             outputStream.close(); | ||||
| 
 | ||||
|                             System.out.println("封面参数替换完成!"); | ||||
| 
 | ||||
|                         }catch (Exception e){ | ||||
| 
 | ||||
|                         } | ||||
|                     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|                     //Utils.mergeExcel(list,path+fileName); | ||||
| 
 | ||||
|                     //Open the first excel file. | ||||
| 
 | ||||
| 
 | ||||
|                     // 读取上传的Excel文件 | ||||
| 
 | ||||
| 
 | ||||
|                     System.out.println("Excel文件修改成功!"); | ||||
|                 } catch ( Exception e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|             }else if (name.endsWith(".pptx")||name.endsWith(".ppt")){ | ||||
|                 UpfileModel model_old = new UpfileModel(); | ||||
|                 model_old.setUuid(UUIDGener.getUUID()); | ||||
|                 model_old.setPl_uuid("f9df56d7-a6b2-442c-9898-822619057493"); | ||||
|                 model_old.setShape_uuid("obj_7ebfdb24f36e469cb841988cbda035c8"); | ||||
|                 model_old.setDownload(1); | ||||
|                 model_old.setCreateUser(UserContext.fromSessionId(sid).getUID()); | ||||
|                 model_old.setCreateTime(new Timestamp(System.currentTimeMillis())); | ||||
|                 model_old.setType("s"); | ||||
|                 model_old.setFileName("ppt版本模板"+name.substring(name.lastIndexOf("."))); | ||||
|                 DCContext dcContext_old = getDCContext(model_old,UserContext.fromSessionId(sid)); | ||||
|                 String[] fileNames ={dcContext.getFilePath(),dcContext_old.getFilePath()} ; | ||||
|                 String mergedFileName = dcContext.getPath()+"dc.pptx"; | ||||
| 
 | ||||
|                 if (name.endsWith(".pptx")||name.endsWith(".ppt")){ | ||||
|                     try (FileOutputStream outputStream = new FileOutputStream(mergedFileName)) { | ||||
|                         XMLSlideShow mergedSlideShow = new XMLSlideShow(); | ||||
| 
 | ||||
|                         for (String fileName : fileNames) { | ||||
|                             XMLSlideShow slideShow = new XMLSlideShow(new FileInputStream(fileName)); | ||||
|                             for (XSLFSlide slide : slideShow.getSlides()) { | ||||
|                                 mergedSlideShow.setPageSize(slideShow.getPageSize()); | ||||
|                                 XSLFSlide newSlide = mergedSlideShow.createSlide().importContent(slide); | ||||
|                                 copyConditionalFormatting(slide, newSlide); | ||||
|                                 copyImages(slide, newSlide); | ||||
| 
 | ||||
|                             } | ||||
|                         } | ||||
|                         mergedSlideShow.write(outputStream); | ||||
|                         mergedSlideShow.close(); | ||||
|                         outputStream.close(); | ||||
|                         //生成之后的数据pptx | ||||
|                         XMLSlideShow slideShows = new XMLSlideShow(new FileInputStream(mergedFileName)); | ||||
|                         SDK.getLogAPI().consoleInfo("开始执行了吗"); | ||||
|                         // 获取幻灯片列表 | ||||
|                         List<XSLFSlide> slides = slideShows.getSlides(); | ||||
|                         SDK.getLogAPI().consoleInfo("幻灯片的大小是多少>>>>>>>"+slides.size()); | ||||
|                         //移动倒数第二个至第一张幻灯 | ||||
|                         XSLFSlide secondslide = slides.get(slides.size()-2); | ||||
|                         slideShows.setSlideOrder(secondslide, 0); | ||||
| 
 | ||||
|                         PALRepositoryModel palRepositoryModel =  PALRepositoryCache.getCache().get(pl_uuid); | ||||
|                         JSONArray versionHistoryTable = getVersionHistoryTable(palRepositoryModel); | ||||
|                         System.out.println("jsonArray>>>>>>>>>>"+versionHistoryTable.toString()); | ||||
| 
 | ||||
|                         String process_name = DBSql.getString("select PLNAME from app_act_coe_pal_repository where ID = '" + pl_uuid + "'"); | ||||
|                         int q = 0; | ||||
|                         for (XSLFSlide slide : slides) { | ||||
|                             for (XSLFShape shape : slide.getShapes()) { | ||||
|                                 if (shape instanceof XSLFTable) { | ||||
|                                     XSLFTable table = (XSLFTable) shape; | ||||
|                                     for (XSLFTableRow row : table.getRows()) { | ||||
|                                         for (XSLFTableCell cell : row.getCells()) { | ||||
|                                             for (XSLFTextParagraph paragraph : cell.getTextParagraphs()) { | ||||
|                                                 for (XSLFTextRun textRun : paragraph.getTextRuns()) { | ||||
|                                                     String text = textRun.getRawText(); | ||||
| 
 | ||||
|                                                     // 根据需要替换参数 | ||||
| 
 | ||||
|                                                     String L1 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L1'"); | ||||
|                                                     String L2 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L2'"); | ||||
|                                                     String L3 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L3'"); | ||||
|                                                     String L4 = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID = 'Process_Architecture_L4'"); | ||||
|                                                     String fanwei = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID in( 'application','form_Scope_application')"); | ||||
|                                                     String file_number = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID IN('form_number','file_number')"); | ||||
|                                                     String P_versions = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID IN('P_versions')"); | ||||
| 
 | ||||
|                                                     String file_date = DBSql.getString("select PROPERTYVALUE from APP_ACT_COE_PAL_PROP where PLID = '" + pl_uuid + "' and PROPERTYID IN('effective_date','form_effective_date') "); | ||||
| 
 | ||||
|                                                     if (UtilString.isNotEmpty(P_versions)) { | ||||
|                                                         text = text.replace("{{file_version}}", P_versions); | ||||
|                                                     } else { | ||||
|                                                         text = text.replace("{{file_version}}", ""); | ||||
|                                                     } | ||||
|                                                     if (UtilString.isNotEmpty(file_date)) { | ||||
|                                                         text = text.replace("{{file_data}}", file_date); | ||||
|                                                     } else { | ||||
|                                                         text = text.replace("{{file_data}}", ""); | ||||
|                                                     } | ||||
|                                                     if (UtilString.isNotEmpty(file_number)) { | ||||
| 
 | ||||
|                                                         text = text.replace("{{file_code}}", file_number); | ||||
|                                                     } else { | ||||
|                                                         text = text.replace("{{file_code}}", ""); | ||||
|                                                     } | ||||
|                                                     if (UtilString.isNotEmpty(fanwei)) { | ||||
| 
 | ||||
|                                                         text = text.replace("{{fanwei}}", fanwei); | ||||
|                                                     } else { | ||||
|                                                         text = text.replace("{{fanwei}}", ""); | ||||
|                                                     } | ||||
| 
 | ||||
|                                                     text = text.replace("{{L1}}", L1); | ||||
|                                                     text = text.replace("{{L2}}", L2); | ||||
|                                                     text = text.replace("{{L3}}", L3); | ||||
|                                                     text = text.replace("{{L4}}", L4); | ||||
|                                                     textRun.setText(text); | ||||
|                                                 } | ||||
|                                             } | ||||
|                                         } | ||||
|                                     } | ||||
| 
 | ||||
|                                     if (q!=0) { | ||||
|                                         XSLFTable tables = (XSLFTable) shape; | ||||
| 
 | ||||
|                                         XSLFTableRow firstRow = tables.getRows().get(1); | ||||
|                                         // 获取表格的第一行 | ||||
|                                         for (int i = 1; i < versionHistoryTable.size(); i++) { | ||||
|                                             XSLFTableRow newRow = table.addRow(); | ||||
|                                             for (int col = 0; col < firstRow.getCells().size(); col++) { | ||||
|                                                 XSLFTableCell cell = firstRow.getCells().get(col); | ||||
|                                                 XSLFTableCell newCell = newRow.addCell(); | ||||
|                                                 newCell.setText(cell.getText()); | ||||
|                                                 newCell.setFillColor(cell.getFillColor()); | ||||
|                                                 newCell.setBorderColor(XSLFTableCell.BorderEdge.bottom, cell.getBorderColor(XSLFTableCell.BorderEdge.bottom)); | ||||
|                                                 newCell.setBorderColor(XSLFTableCell.BorderEdge.top, cell.getBorderColor(XSLFTableCell.BorderEdge.top)); | ||||
|                                                 newCell.setBorderColor(XSLFTableCell.BorderEdge.left, cell.getBorderColor(XSLFTableCell.BorderEdge.left)); | ||||
|                                                 newCell.setBorderColor(XSLFTableCell.BorderEdge.right, cell.getBorderColor(XSLFTableCell.BorderEdge.right)); | ||||
|                                                 newCell.setBorderWidth(XSLFTableCell.BorderEdge.bottom, cell.getBorderWidth(XSLFTableCell.BorderEdge.bottom)); | ||||
|                                                 newCell.setBorderWidth(XSLFTableCell.BorderEdge.top, cell.getBorderWidth(XSLFTableCell.BorderEdge.top)); | ||||
|                                                 newCell.setBorderWidth(XSLFTableCell.BorderEdge.left, cell.getBorderWidth(XSLFTableCell.BorderEdge.left)); | ||||
|                                                 newCell.setBorderWidth(XSLFTableCell.BorderEdge.right, cell.getBorderWidth(XSLFTableCell.BorderEdge.right)); | ||||
|                                                 newCell.setVerticalAlignment(cell.getVerticalAlignment()); | ||||
|                                                 newCell.setHorizontalCentered(cell.isHorizontalCentered()); | ||||
|                                                 newCell.setLeftInset(cell.getLeftInset()); | ||||
|                                                 newCell.setRightInset(cell.getRightInset()); | ||||
|                                                 newCell.setTopInset(cell.getTopInset()); | ||||
|                                                 newCell.setBottomInset(cell.getBottomInset()); | ||||
|                                             } | ||||
|                                         } | ||||
| 
 | ||||
|                                         for (int i = 0; i < versionHistoryTable.size(); i++) { | ||||
| 
 | ||||
| 
 | ||||
|                                             JSONObject obj2 = versionHistoryTable.getJSONObject(i); | ||||
|                                             // 替换参数 | ||||
|                                             if (i == 0) { | ||||
|                                                 for (int col = 0; col < firstRow.getCells().size(); col++) { | ||||
|                                                     XSLFTableCell cell = firstRow.getCells().get(col); | ||||
|                                                     String text = cell.getText(); | ||||
| 
 | ||||
|                                                     text = text.replace("{{version}}", obj2.getString("P_versions")); | ||||
|                                                     text = text.replace("{{company}}", obj2.getString("Issuing_department")); | ||||
|                                                     text = text.replace("{{creauser}}", obj2.getString("Drafted_and_revised_by")); | ||||
|                                                     text = text.replace("{{date}}", obj2.getString("Drafted_and_revised_date")); | ||||
|                                                     text = text.replace("{{shen_user}}", obj2.getString("auditor")); | ||||
|                                                     text = text.replace("{{fuhe_user}}", obj2.getString("reviewer")); | ||||
|                                                     text = text.replace("{{shenpi_user}}", obj2.getString("approver")); | ||||
|                                                     text = text.replace("{{person}}", obj2.getString("Contents_and_reasons_for_revision")); | ||||
|                                                     cell.setText(text); | ||||
| 
 | ||||
|                                                 } | ||||
|                                             } else { | ||||
|                                                 System.out.println("版本2的时候怎么不进"); | ||||
|                                                 XSLFTableRow newRow = table.getRows().get(i+1); | ||||
|                                                 for (int col = 0; col < newRow.getCells().size(); col++) { | ||||
|                                                     XSLFTableCell cell = newRow.getCells().get(col); | ||||
|                                                     String text = cell.getText(); | ||||
| 
 | ||||
|                                                     text = text.replace("{{version}}", obj2.getString("P_versions")); | ||||
|                                                     text = text.replace("{{company}}", obj2.getString("Issuing_department")); | ||||
|                                                     text = text.replace("{{creauser}}", obj2.getString("Drafted_and_revised_by")); | ||||
|                                                     text = text.replace("{{date}}", obj2.getString("Drafted_and_revised_date")); | ||||
|                                                     text = text.replace("{{shen_user}}", obj2.getString("auditor")); | ||||
|                                                     text = text.replace("{{fuhe_user}}", obj2.getString("reviewer")); | ||||
|                                                     text = text.replace("{{shenpi_user}}", obj2.getString("approver")); | ||||
|                                                     text = text.replace("{{person}}", obj2.getString("Contents_and_reasons_for_revision")); | ||||
|                                                     cell.setText(text); | ||||
| 
 | ||||
|                                                 } | ||||
|                                             } | ||||
| 
 | ||||
|                                         } | ||||
|                                     } | ||||
|                                     SDK.getLogAPI().consoleInfo("asddasdasdas"); | ||||
|                                 } | ||||
| 
 | ||||
|                             } | ||||
|                             q++; | ||||
|                         } | ||||
| 
 | ||||
| 
 | ||||
|                         // 获取PPT的第一页 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|                         // 替换文本框中的参数 | ||||
|                         for (XSLFSlide slide : slides) { | ||||
|                             for (XSLFShape shape : slide.getShapes()) { | ||||
|                                 if (shape instanceof XSLFTextShape) { | ||||
|                                     XSLFTextShape textShape = (XSLFTextShape) shape; | ||||
|                                     for (XSLFTextParagraph paragraph : textShape.getTextParagraphs()) { | ||||
|                                         for (XSLFTextRun textRun : paragraph.getTextRuns()) { | ||||
|                                             String text = textRun.getRawText(); | ||||
|                                             // 根据需要替换参数 | ||||
|                                             text = text.replace("{{process_name}}", process_name); | ||||
|                                             textRun.setText(text); | ||||
|                                         } | ||||
|                                     } | ||||
|                                 } | ||||
|                             } | ||||
|                         } | ||||
|                         XSLFSlide secondslide_last = slides.get(slides.size()-1); | ||||
|                         slideShows.setSlideOrder(secondslide_last, 1); | ||||
|                         FileOutputStream out = new FileOutputStream(dcContext.getFilePath()); | ||||
|                         slideShows.write(out); | ||||
|                         slideShows.close(); | ||||
|                         out.close(); | ||||
|                         SDK.getLogAPI().consoleInfo("移动文件位置替换完成"); | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|                     } catch (IOException e) { | ||||
|                         e.printStackTrace(); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     private static void copyConditionalFormatting(HSLFSlide sourceSlide, HSLFSlide targetSlide) { | ||||
|         List<HSLFShape> shapes = sourceSlide.getShapes(); | ||||
|         for (HSLFShape shape : shapes) { | ||||
|             if (shape instanceof HSLFTextShape) { | ||||
|                 HSLFTextShape textShape = (HSLFTextShape) shape; | ||||
|                 HSLFTextShape newShape = targetSlide.createTextBox(); | ||||
|                 newShape.setText(textShape.getText()); | ||||
|                 newShape.setTextPlaceholder(textShape.getTextPlaceholder()); | ||||
|             } else { | ||||
|                 targetSlide.addShape(shape); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     private static HSLFTextShape getMatchingTextShape(HSLFSlide slide, HSLFTextShape sourceShape) { | ||||
|         List<HSLFShape> shapes = slide.getShapes(); | ||||
|         for (HSLFShape shape : shapes) { | ||||
|             if (shape instanceof HSLFTextShape) { | ||||
|                 HSLFTextShape textShape = (HSLFTextShape) shape; | ||||
|                 if (textShape.getTextParagraphs().size() == sourceShape.getTextParagraphs().size()) { | ||||
|                     return textShape; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
|     // 更新幻灯片ID列表 | ||||
|     // 更新幻灯片ID列表 | ||||
|     // 移动幻灯片位置 | ||||
| // 移动幻灯片位置 | ||||
| 
 | ||||
|     private static void copyConditionalFormatting(XSLFSlide sourceSlide, XSLFSlide targetSlide) { | ||||
|         List<XSLFShape> shapes = sourceSlide.getShapes(); | ||||
|         for (XSLFShape shape : shapes) { | ||||
|             if (shape instanceof XSLFTextShape) { | ||||
|                 XSLFTextShape textShape = (XSLFTextShape) shape; | ||||
|                 XSLFTextShape newShape = getMatchingTextShape(targetSlide, textShape); | ||||
|                 if (newShape != null && newShape.getXmlObject() != null && newShape.getXmlObject() != null) { | ||||
|                     textShape.getXmlObject().set(newShape.getXmlObject()); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private static XSLFTextShape getMatchingTextShape(XSLFSlide slide, XSLFTextShape sourceShape) { | ||||
|         List<XSLFShape> shapes = slide.getShapes(); | ||||
|         for (XSLFShape shape : shapes) { | ||||
|             if (shape instanceof XSLFTextShape) { | ||||
|                 XSLFTextShape textShape = (XSLFTextShape) shape; | ||||
|                 if (textShape.getTextParagraphs().size() == sourceShape.getTextParagraphs().size()) { | ||||
|                     return textShape; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     private static void copyImages(XSLFSlide sourceSlide, XSLFSlide targetSlide) { | ||||
|         for (XSLFShape shape : sourceSlide.getShapes()) { | ||||
|             if (shape instanceof XSLFPictureShape) { | ||||
|                 XSLFPictureShape pictureShape = (XSLFPictureShape) shape; | ||||
|                 XSLFPictureData pictureData = pictureShape.getPictureData(); | ||||
| 
 | ||||
|                 try { | ||||
|                     byte[] pictureBytes = pictureData.getData(); | ||||
|                     String pictureType = pictureData.getContentType(); | ||||
|                     XSLFPictureData pictureIndex = targetSlide.getSlideShow().addPicture(pictureBytes, pictureData.getType()); | ||||
| 
 | ||||
|                     XSLFPictureShape newPictureShape = targetSlide.createPicture(pictureIndex); | ||||
|                     newPictureShape.setAnchor(pictureShape.getAnchor()); | ||||
|                 } catch (Exception e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     private static void copyImages(HSLFSlide sourceSlide, HSLFSlide targetSlide) { | ||||
|         for (HSLFShape shape : sourceSlide.getShapes()) { | ||||
|             if (shape instanceof HSLFPictureShape) { | ||||
|                 HSLFPictureShape pictureShape = (HSLFPictureShape) shape; | ||||
|                 HSLFPictureData pictureData = pictureShape.getPictureData(); | ||||
| 
 | ||||
|                 try { | ||||
|                     byte[] pictureBytes = pictureData.getData(); | ||||
|                     String pictureType = pictureData.getContentType(); | ||||
|                     HSLFPictureData pictureIndex = targetSlide.getSlideShow().addPicture(pictureBytes, pictureData.getType()); | ||||
| 
 | ||||
|                     HSLFPictureShape newPictureShape = targetSlide.createPicture(pictureIndex); | ||||
|                     newPictureShape.setAnchor(pictureShape.getAnchor()); | ||||
|                 } catch (Exception e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      *获取修订记录 | ||||
|      * @param repositoryModel | ||||
|      * @return | ||||
|      */ | ||||
|     private JSONArray getVersionHistoryTable(PALRepositoryModel repositoryModel) { | ||||
|         JSONArray versionHistoryTable = new JSONArray();// 修订记录 | ||||
|         List<PALRepositoryModel> list = PALRepositoryCache.getByVersionId(repositoryModel.getVersionId()); | ||||
|         list.sort((m1, m2)-> { | ||||
|             return m1.getVersion() - m2.getVersion() > 0 ? 1 : -1; | ||||
|         }); | ||||
|         for (PALRepositoryModel model : list) { | ||||
|             if(model.getVersion()>repositoryModel.getVersion()) { | ||||
|                 continue; | ||||
|             } | ||||
|             JSONObject obj = new JSONObject(); | ||||
|             Map<String, JSONObject> map = PALRepositoryQueryAPIManager.queryRepositoryAttributeById(model.getId()); | ||||
|             // 版本P_versions | ||||
|             String attr = "P_versions"; | ||||
|             String val = ""; | ||||
|             String plvers = model.getVersion()+""; | ||||
|             String plver = ""; | ||||
|             if (!"".equals(plvers)) { | ||||
|                 if (plvers.length() > 1) { | ||||
|                     plver = plvers.substring(0, 1) + "." | ||||
|                             + plvers.substring(plvers.length() - 1, plvers.length()); | ||||
|                 } else { | ||||
|                     plver = plvers.substring(0, 1) + ".0"; | ||||
|                 } | ||||
|             } | ||||
|             //val = specialCharTransfer(map.containsKey(attr) ? (map.get(attr).getString("text")) : "").replace("\n", ""); | ||||
|             obj.put(attr, "V"+plver); | ||||
| 
 | ||||
|             // 拟制/修订单位Issuing_department | ||||
|             attr = "Issuing_department"; | ||||
|             val = specialCharTransfer(map.containsKey(attr) ? (map.get(attr).getString("text")) : "").replace("\n", ""); | ||||
|             obj.put(attr, val); | ||||
|             // 拟制/修订人Drafted_and_revised_by | ||||
|             attr = "Drafted_and_revised_by"; | ||||
|             val = specialCharTransfer(map.containsKey(attr) ? (map.get(attr).getString("text")) : "").replace("\n", ""); | ||||
|             obj.put(attr, val); | ||||
|             // 拟制/修订日期Drafted_and_revised_date | ||||
|             attr = "Drafted_and_revised_date"; | ||||
|             val = specialCharTransfer(map.containsKey(attr) ? (map.get(attr).getString("text")) : "").replace("\n", ""); | ||||
|             if (UtilString.isNotEmpty(val)) { | ||||
|                 try { | ||||
|                     Timestamp timestamp = UtilDate.parseTsFromDateTime(val); | ||||
|                     val = UtilDate.yearFormat(timestamp) + "年" + Integer.parseInt(UtilDate.monthFormat(timestamp)) + "月" + UtilDate.dayFormat(timestamp) + "日"; | ||||
|                 } catch (Exception e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|             } | ||||
|             obj.put(attr, val); | ||||
|             // 审核人auditor | ||||
|             attr = "auditor"; | ||||
|             val = specialCharTransfer(map.containsKey(attr) ? (map.get(attr).getString("text")) : "").replace("\n", ""); | ||||
|             obj.put(attr, val); | ||||
|             // 复核人reviewer | ||||
|             attr = "reviewer"; | ||||
|             val = specialCharTransfer(map.containsKey(attr) ? (map.get(attr).getString("text")) : "").replace("\n", ""); | ||||
|             obj.put(attr, val); | ||||
|             // 审批人approver | ||||
|             attr = "approver"; | ||||
|             val = specialCharTransfer(map.containsKey(attr) ? (map.get(attr).getString("text")) : "").replace("\n", ""); | ||||
|             obj.put(attr, val); | ||||
|             // 修订内容及理由Contents_and_reasons_for_revision | ||||
|             attr = "Contents_and_reasons_for_revision"; | ||||
|             val = specialCharTransfer(map.containsKey(attr) ? (map.get(attr).getString("text")) : "").replace("\n", ""); | ||||
|             obj.put(attr, val); | ||||
| 
 | ||||
|             versionHistoryTable.add(obj); | ||||
|         } | ||||
|         return versionHistoryTable; | ||||
|     } | ||||
| 
 | ||||
|     public static String specialCharTransfer(String str) { | ||||
|         if (str == null || "".equals(str.trim())) { | ||||
|             return str; | ||||
|         } | ||||
|         return str.replace("&", "&"); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 解决xlsx文件 | ||||
|      * @param sheet | ||||
|      * @param parameter | ||||
|      * @param replacement | ||||
|      * @param row | ||||
|      * @param col | ||||
|      */ | ||||
|     private static void replaceParameter(XSSFSheet sheet, String parameter, String replacement, int row, int col) { | ||||
|         XSSFRow rowData = sheet.getRow(row); | ||||
|         if (rowData == null) { | ||||
|             rowData = sheet.createRow(row); | ||||
|         } | ||||
| 
 | ||||
|         XSSFCell cell = rowData.getCell(col); | ||||
|         if (cell == null) { | ||||
|             cell = rowData.createCell(col); | ||||
|         } | ||||
| 
 | ||||
|         String cellValue = cell.getStringCellValue(); | ||||
|         if (cellValue.contains(parameter)) { | ||||
|             cell.setCellValue(cellValue.replace(parameter, replacement)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * 解决xls文件的 | ||||
|      * @param sheet | ||||
|      * @param parameter | ||||
|      * @param replacement | ||||
|      * @param row | ||||
|      * @param col | ||||
|      */ | ||||
|     private static void replaceParameter(HSSFSheet sheet, String parameter, String replacement, int row, int col) { | ||||
|         HSSFRow rowData = sheet.getRow(row); | ||||
|         if (rowData == null) { | ||||
|             rowData = sheet.createRow(row); | ||||
|         } | ||||
| 
 | ||||
|         HSSFCell cell = rowData.getCell(col); | ||||
|         if (cell == null) { | ||||
|             cell = rowData.createCell(col); | ||||
|         } | ||||
| 
 | ||||
|         String cellValue = cell.getStringCellValue(); | ||||
|         if (cellValue.contains(parameter)) { | ||||
|             cell.setCellValue(cellValue.replace(parameter, replacement)); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 插入数据xlsx的 | ||||
|      * @param sheet | ||||
|      * @param rowData | ||||
|      * @param row | ||||
|      */ | ||||
|     private static void insertData(XSSFSheet sheet, String[] rowData, int row) { | ||||
|         XSSFRow newRow = sheet.createRow(row); | ||||
|         for (int i = 0; i < rowData.length; i++) { | ||||
|             XSSFCell cell = newRow.createCell(i); | ||||
|             cell.setCellValue(rowData[i]); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 插入数据xls的 | ||||
|      * @param sheet | ||||
|      * @param rowData | ||||
|      * @param row | ||||
|      */ | ||||
|     private static void insertData(HSSFSheet sheet, String[] rowData, int row) { | ||||
|         HSSFRow newRow = sheet.createRow(row); | ||||
|         for (int i = 0; i < rowData.length; i++) { | ||||
|             HSSFCell cell = newRow.createCell(i); | ||||
|             cell.setCellValue(rowData[i]); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 替换参数xlsx的 | ||||
|      * @param sheet | ||||
|      * @param parameter | ||||
|      * @param replacement | ||||
|      */ | ||||
|     private static void replaceParameter(XSSFSheet sheet, String parameter, String replacement) { | ||||
|         for (Row row : sheet) { | ||||
|             for (Cell cell : row) { | ||||
|                 if (CellType.forInt(cell.getCellType()) == CellType.STRING) { | ||||
|                     String cellValue = cell.getStringCellValue(); | ||||
|                     if (cellValue.contains(parameter)) { | ||||
|                         cell.setCellValue(cellValue.replace(parameter, replacement)); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
|     /** | ||||
|      * 替换参数xls的 | ||||
|      * @param sheet | ||||
|      * @param parameter | ||||
|      * @param replacement | ||||
|      */ | ||||
|     private static void replaceParameter(HSSFSheet sheet, String parameter, String replacement) { | ||||
|         for (Row row : sheet) { | ||||
|             for (Cell cell : row) { | ||||
|                 if (CellType.forInt(cell.getCellType()) == CellType.STRING) { | ||||
|                     String cellValue = cell.getStringCellValue(); | ||||
|                     if (cellValue.contains(parameter)) { | ||||
|                         cell.setCellValue(cellValue.replace(parameter, replacement)); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     public DCContext getDCContext(UpfileModel model,UserContext userContext) { | ||||
|         DCContext dcContext = null; | ||||
|         DCPluginProfile dcProfile = DCProfileManager.getDCProfile(CoEConstant.APP_ID, CoeFileConstant.COE_UPFILE); | ||||
|         if (dcProfile != null) { | ||||
|             if ("f".equals(model.getType())) {// 文件 | ||||
|                 dcContext = new DCContext(userContext, dcProfile, CoEConstant.APP_ID, "file", | ||||
|                         model.getPl_uuid(), model.getFileName()); | ||||
|             } else {// 图形 | ||||
|                 dcContext = new DCContext(userContext, dcProfile, CoEConstant.APP_ID, model.getPl_uuid(), | ||||
|                         model.getShape_uuid(), model.getFileName()); | ||||
|             } | ||||
|         } | ||||
|         return dcContext; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,29 @@ | ||||
| package com.awspaas.user.bpa.at; | ||||
| 
 | ||||
| import com.actionsoft.bpms.bo.engine.BO; | ||||
| import com.actionsoft.bpms.commons.at.AbstExpression; | ||||
| import com.actionsoft.bpms.commons.at.ExpressionContext; | ||||
| import com.actionsoft.exception.AWSExpressionException; | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| 
 | ||||
| public class GetOrgPostByName extends AbstExpression { | ||||
|     public GetOrgPostByName(ExpressionContext atContext, String expressionValue) { | ||||
|         super(atContext, expressionValue); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String execute(String s) throws AWSExpressionException { | ||||
|         String boName = getParameter(s,1); | ||||
|         String zd_name = getParameter(s,2); | ||||
|         String name = getParameter(s,3); | ||||
|         String set_name = getParameter(s,4); | ||||
|         String names = zd_name.concat(" = "); | ||||
|         BO detail = SDK.getBOAPI().query(boName, true).addQuery(names, name).detail(); | ||||
|         if (detail!=null){ | ||||
|             String set_name1 = detail.getString(set_name); | ||||
|             return set_name1; | ||||
|         }else { | ||||
|             return ""; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,32 @@ | ||||
| package com.awspaas.user.bpa.at; | ||||
| 
 | ||||
| import com.actionsoft.bpms.bo.engine.BO; | ||||
| import com.actionsoft.bpms.commons.at.AbstExpression; | ||||
| import com.actionsoft.bpms.commons.at.ExpressionContext; | ||||
| import com.actionsoft.bpms.util.DBSql; | ||||
| import com.actionsoft.exception.AWSExpressionException; | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| 
 | ||||
| public class getSJNumsByprocess extends AbstExpression { | ||||
|     public getSJNumsByprocess(ExpressionContext atContext, String expressionValue) { | ||||
|         super(atContext, expressionValue); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public String execute(String s) throws AWSExpressionException { | ||||
|         String bindid = getParameter(s,1); | ||||
|         BO bo_eu_pal_pulbish_success = SDK.getBOAPI().query("BO_EU_PAL_PULBISH_SUCCESS", true).addQuery("BINDID = ", bindid).detail(); | ||||
|         if (bo_eu_pal_pulbish_success!=null){ | ||||
|             String processid = bo_eu_pal_pulbish_success.getString("PROCESSID"); | ||||
|             String num = DBSql.getString("select count(user_id) AS NUMBERS from BO_ACT_DATAID where 1=1 AND PROCESSID = '" + processid + "'"); | ||||
|             String read_num = DBSql.getString("select count(user_id) AS NUMBERS from BO_ACT_ALREADY_DATAID where 1=1 AND PROCESSID = '" + processid + "'"); | ||||
|             Integer data = Integer.parseInt(num)+Integer.parseInt(read_num); | ||||
|             System.out.println("data>>>>>>>>>>>"+data | ||||
|             ); | ||||
|             return String.valueOf(data); | ||||
|         }else { | ||||
|             return ""; | ||||
|         } | ||||
| 
 | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,117 @@ | ||||
| package com.awspaas.user.bpa.controller; | ||||
| 
 | ||||
| import com.actionsoft.bpms.bo.engine.BO; | ||||
| import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance; | ||||
| import com.actionsoft.bpms.bpmn.engine.model.run.delegate.TaskInstance; | ||||
| import com.actionsoft.bpms.commons.database.RowMap; | ||||
| import com.actionsoft.bpms.commons.mvc.view.ResponseObject; | ||||
| import com.actionsoft.bpms.server.UserContext; | ||||
| import com.actionsoft.bpms.server.bind.annotation.Controller; | ||||
| import com.actionsoft.bpms.server.bind.annotation.Mapping; | ||||
| import com.actionsoft.bpms.util.DBSql; | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| import com.alibaba.fastjson.JSON; | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| import com.awspaas.user.bpa.util.PalUtil; | ||||
| 
 | ||||
| @Controller | ||||
| public class GetOpenDataController { | ||||
|     @Mapping("com.awspaas.user.bpa.controller.GetOpenDataController.getHtmlPage") | ||||
|     //./w?sid=@sid&cmd=CLIENT_BPM_WORKLIST_PROCESSINST_CREATE_AJAX_PREPAGE&processGroupId=obj_049cd0b7cd864c078ae35e4a79dc0a76&processDefId=obj_19f3b1d5083841a6a44af73400d5305e | ||||
|     public String getHtmlPage(String sid,String processDefId){ | ||||
|         ResponseObject ro = ResponseObject.newOkResponse(); | ||||
|         UserContext userContext = UserContext.fromSessionId(sid); | ||||
|         ProcessInstance processInstance = SDK.getProcessAPI().createProcessInstance(processDefId, userContext.getUID(), ""); | ||||
|         //SDK.getProcessAPI().start(processInstance); | ||||
|         TaskInstance taskInst = SDK.getProcessAPI().start(processInstance).fetchActiveTasks().get(0); | ||||
|         String formPage = SDK.getFormAPI().getFormPage(userContext, processInstance, taskInst, 1, 1, null, null); | ||||
|         return formPage; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     // @Mapping("COE_PAL_OUTPUTREPORT_JSON_DATA") | ||||
|     @Mapping("com.actionsoft.apps.bpa.pal_report_json_data") | ||||
|     public String COEPALOutPutReportJsonData(UserContext me, String language, String templateOperate) { | ||||
|         PalUtil outPutReport = new PalUtil(); | ||||
|         return outPutReport.jsonData(me.getSessionId(),language, templateOperate); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     @Mapping("com.actionsoft.apps.bpa.getSjNumByprocess") | ||||
|     public JSONObject getSjNumByprocess(String sid, String bindid) { | ||||
|         JSONObject result = new JSONObject(); | ||||
|         BO bo_eu_pal_pulbish_success = SDK.getBOAPI().query("BO_EU_PAL_PULBISH_SUCCESS", true).addQuery("BINDID = ", bindid).detail(); | ||||
|         if (bo_eu_pal_pulbish_success!=null){ | ||||
|             String processid = bo_eu_pal_pulbish_success.getString("PROCESSID"); | ||||
|             String num = DBSql.getString("select count(user_id) AS NUMBERS from BO_ACT_DATAID where 1=1 AND PROCESSID = '" + processid + "'"); | ||||
|             String read_num = DBSql.getString("select count(user_id) AS NUMBERS from BO_ACT_ALREADY_DATAID where 1=1 AND PROCESSID = '" + processid + "'"); | ||||
|             Integer data = Integer.parseInt(num)+Integer.parseInt(read_num); | ||||
|             bo_eu_pal_pulbish_success.set("SENDNUMSJ",data); | ||||
|             SDK.getBOAPI().update("BO_EU_PAL_PULBISH_SUCCESS",bo_eu_pal_pulbish_success); | ||||
|             result.put("data",data); | ||||
|         } | ||||
|         return result; | ||||
|     } | ||||
| 
 | ||||
|     @Mapping("com.actionsoft.apps.bpa.IsHidden_Modeling_Guidance") | ||||
|     public String IsHidden_Modeling_Guidance(String sid) { | ||||
|         String property = SDK.getAppAPI().getProperty("com.awspaas.user.apps.app20221008163300", "JM_HIDDEN"); | ||||
|         return property; | ||||
|     } | ||||
| 
 | ||||
|     @Mapping("com.awspaas.user.bpa.controller.GetOpenDataController.GetName") | ||||
|     public JSONObject GetName(String sid, String boName, String zd_name, String name, String set_name) { | ||||
|         //String boName = getParameter(s,1); | ||||
|         //        String zd_name = getParameter(s,2); | ||||
|         //        String name = getParameter(s,3); | ||||
|         //        String set_name = getParameter(s,4); | ||||
|                 String names = zd_name.concat(" = "); | ||||
|         JSONObject result= new JSONObject(); | ||||
|         if (boName.contains("BO_")&&( boName.lastIndexOf("1")!=(boName.length()-1))){ | ||||
|             BO detail = SDK.getBOAPI().query(boName, true).addQuery(names, name).detail(); | ||||
|             if (detail!=null){ | ||||
|                 String set_name1 = detail.getString(set_name); | ||||
|                 System.out.println("数据>>>>>>>>>"+set_name1); | ||||
| 
 | ||||
|                 result.put("data",set_name1); | ||||
|                 return result; | ||||
|             }else { | ||||
|                 result.put("data",""); | ||||
|                 return result; | ||||
|             } | ||||
|         }else { | ||||
|             boName= boName.substring(0,boName.lastIndexOf("1")); | ||||
|             String sql = boName+"'" + name + "'"; | ||||
|             System.out.println("sql = >>>>>>>>"+sql); | ||||
|             RowMap map = DBSql.getMap(sql); | ||||
|             System.out.println("map>>>>>>>>"+map); | ||||
|             if (map!=null){ | ||||
|                 String set_name1 = map.getString(set_name); | ||||
|                 System.out.println("数据>>>>>>>>>"+set_name1); | ||||
|                 result.put("data",set_name1); | ||||
|                 return result; | ||||
|             }else { | ||||
|                 result.put("data",""); | ||||
|                 return result; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     @Mapping("com.awspaas.user.apps.app.controller.Delete_Pal_RePOSITORY") | ||||
|     public ResponseObject delete_pal(String sid,String plId) { | ||||
|         ResponseObject ro = ResponseObject.newOkResponse(); | ||||
|         String sql = "DELETE FROM BO_EU_PAL_REPOSITORY"; | ||||
|         int update = DBSql.update(sql); | ||||
|         if(update>0) { | ||||
|             ro.put("result", "ok"); | ||||
|         }else { | ||||
|             ro.put("result", "error"); | ||||
|         } | ||||
|         return ro; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,202 @@ | ||||
| package com.awspaas.user.apps.app.controller; | ||||
| 
 | ||||
| import com.actionsoft.bpms.bo.engine.BO; | ||||
| import com.actionsoft.bpms.bpmn.engine.model.run.delegate.ProcessInstance; | ||||
| import com.actionsoft.bpms.commons.database.RowMap; | ||||
| import com.actionsoft.bpms.server.UserContext; | ||||
| import com.actionsoft.sdk.local.api.BOQueryAPI; | ||||
| import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | ||||
| 
 | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.PALRepositoryQueryAPIManager; | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.cache.PALRepositoryCache; | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.dao.PALRepository; | ||||
| import com.actionsoft.apps.coe.pal.pal.repository.model.PALRepositoryModel; | ||||
| import com.actionsoft.bpms.commons.mvc.view.ResponseObject; | ||||
| import com.actionsoft.bpms.server.bind.annotation.Controller; | ||||
| import com.actionsoft.bpms.server.bind.annotation.Mapping; | ||||
| import com.actionsoft.bpms.util.DBSql; | ||||
| import com.actionsoft.bpms.util.UtilString; | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| 
 | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.Date; | ||||
| 
 | ||||
| /** | ||||
|  * 修改文件状态 | ||||
|  * @author lihongyu | ||||
|  * | ||||
|  */ | ||||
| @Controller | ||||
| public class UpateFileStateController { | ||||
|     private static Logger logger = LoggerFactory.getLogger(UpateFileStateController.class); | ||||
| 
 | ||||
|     // 修改文件发布状态 | ||||
|     @Mapping("com.awspaas.user.apps.app.controller.updatePalFileState_new") | ||||
|     public ResponseObject checkIsSend(UserContext me , String sid, String plIds, String state, String type) { | ||||
|         System.err.println("修改文件状态========>" + plIds + "/" + state + "/" + type); | ||||
|         ResponseObject ro = ResponseObject.newOkResponse(); | ||||
|         int count = 0; | ||||
|         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | ||||
|         String[] plIdList = plIds.split(","); | ||||
| 
 | ||||
|         for (String plId : plIdList){ | ||||
| 
 | ||||
|             String date = simpleDateFormat.format(new Date()); | ||||
|             if ("1".equals(type)) { | ||||
|                 BO bo_eu_pal_repository = SDK.getBOAPI().query("BO_EU_PAL_REPOSITORY").addQuery("PLID = ", plId).detail(); | ||||
|                 bo_eu_pal_repository.set("ISPUBLISH",state); | ||||
|                 SDK.getBOAPI().update("BO_EU_PAL_REPOSITORY",bo_eu_pal_repository); | ||||
|                 //修改发布状态 | ||||
|                 String updataSql = "UPDATE APP_ACT_COE_PAL_REPOSITORY SET ISPUBLISH = '" + state + "',MODIFYDATE = TO_DATE('"+date+"','YY-MM-DD HH24:MI:SS') WHERE ID = '" + plId | ||||
|                         + "'"; | ||||
|                 DBSql.update("UPDATE APP_ACT_COE_PAL_REPOSITORY SET EXT5 = '"+state+"',MODIFYDATE = TO_DATE('"+date+"','YY-MM-DD HH24:MI:SS') WHERE ID = '"+plId+"'"); | ||||
|                 count = DBSql.update(updataSql); | ||||
|                 String sqlt = "UPDATE BO_EU_PAL_FILE1 SET FILESTATE = '" + state + "'  WHERE FILEID = '" + plId + "'"; | ||||
|                 DBSql.update(sqlt); | ||||
| 			/* | ||||
| 			  String id = DBSql.getString("SELECT ID FROM APP_ACT_COE_PAL_PUBLISH_LIST WHERE PALREPOSITORYID='" + plId + "'"); | ||||
| 			 * if (UtilString.isNotEmpty(id)) { PALRepositoryModel model = | ||||
| 			 * PALRepositoryCache.getCache().get(plId); if | ||||
| 			 * ("control.policy".equals(model.getMethodId()) || | ||||
| 			 * "process.flowchart".equals(model.getMethodId()) || | ||||
| 			 * "data.form".equals(model.getMethodId()) || | ||||
| 			 * "process.epc".equals(model.getMethodId())) { String taskId = | ||||
| 			 * createOutputReport(model, "7d3ca852-a0bd-42e6-80b1-3dcea6f55083", "admin", | ||||
| 			 * "", plId); // 刷新预览加载的表 String sqlr = | ||||
| 			 * "UPDATE BO_EU_PAL_OUTPUTREPORT SET TASKID = '" + taskId + "'  WHERE PLID = '" | ||||
| 			 * + plId + "'"; DBSql.update(sqlr); System.err.println("重新生成手册:" + | ||||
| 			 * model.getName() + "--->taskId" + taskId); | ||||
| 			 * DBSql.update("UPDATE BO_ACT_COE_PUBLISH_N SET TASKID='" + taskId + | ||||
| 			 * "'WHERE PUBLISHFILEID ='" + plId + "'"); count = | ||||
| 			 * DBSql.update("UPDATE APP_ACT_COE_PAL_PUBLISH_LIST SET TASKID='" + taskId + | ||||
| 			 * "'WHERE PALREPOSITORYID='" + plId + "'"); } } | ||||
| 			 */ | ||||
| 
 | ||||
|                 PALRepositoryCache.getCache().reload(); | ||||
|                 SDK.getLogAPI().consoleInfo("更新状态后刷新缓存结束===========>"); | ||||
|                 if(Integer.valueOf(state) == 1){ | ||||
|                     createPermScopeData(plId , me); | ||||
|                     SDK.getLogAPI().consoleInfo("修改为发布状态后同步权限数据到权限阅览成功===========>"); | ||||
|                 } | ||||
|             } else if ("2".equals(type)) { | ||||
|                 BO bo_eu_pal_repository = SDK.getBOAPI().query("BO_EU_PAL_REPOSITORY").addQuery("PLID = ", plId).detail(); | ||||
|                 bo_eu_pal_repository.set("ISAPPROVAL",state); | ||||
|                 SDK.getBOAPI().update("BO_EU_PAL_REPOSITORY",bo_eu_pal_repository); | ||||
|                 // 修改流程文件的审批状态 | ||||
|                 String updataSql = "UPDATE APP_ACT_COE_PAL_REPOSITORY SET ISAPPROVAL = '" + state + "',MODIFYDATE =TO_DATE('"+date+"','YY-MM-DD HH24:MI:SS') WHERE ID = '" + plId | ||||
|                         + "'"; | ||||
|                 System.err.println("审批改为设计=======>" + updataSql); | ||||
|                 count = DBSql.update(updataSql); | ||||
|                 PALRepositoryCache.getCache().reload(); | ||||
|                 SDK.getLogAPI().consoleInfo("更新状态后刷新缓存结束===========>"); | ||||
|             } else if ("3".equals(type)) { | ||||
|                 // 重新生成手册 | ||||
|                 PALRepositoryModel model = PALRepositoryCache.getCache().get(plId); | ||||
|                 String taskId = createOutputReport(model, "7d3ca852-a0bd-42e6-80b1-3dcea6f55083", "admin", "", plId); | ||||
|                 System.err.println("======手动生成手册id======"+taskId); | ||||
|                 // 刷新预览加载的表 | ||||
|                 String sqlr = "UPDATE BO_EU_PAL_OUTPUTREPORT SET TASKID = '" + taskId + "'  WHERE PLID = '" + plId + "'"; | ||||
|                 DBSql.update(sqlr); | ||||
|                 String sql1 = "SELECT ID FROM BO_ACT_COE_PUBLISH_N WHERE PUBLISHFILEID = '" + plId + "'"; | ||||
|                 String sql2 = "SELECT ID FROM BO_ACT_COE_PUBLISH_C WHERE CHANGEDFILEIDNEW = '" + plId + "'"; | ||||
|                 if (UtilString.isNotEmpty(DBSql.getString(sql1))) { | ||||
|                     count = DBSql.update( | ||||
|                             "UPDATE BO_ACT_COE_PUBLISH_N SET TASKID='" + taskId + "'WHERE PUBLISHFILEID ='" + plId + "'"); | ||||
|                 } | ||||
|                 if (UtilString.isNotEmpty(DBSql.getString(sql2))) { | ||||
|                     count = DBSql.update( | ||||
|                             "UPDATE BO_ACT_COE_PUBLISH_C SET TASKID='" + taskId + "'WHERE CHANGEDFILEIDNEW ='" + plId + "'"); | ||||
|                 } | ||||
|                 if (count != 0) { | ||||
|                     DBSql.update("UPDATE APP_ACT_COE_PAL_PUBLISH_LIST SET TASKID='" + taskId + "'WHERE PALREPOSITORYID='" | ||||
|                             + plId + "'"); | ||||
|                 } | ||||
|                 System.err.println("重新生成手册成功=====》" + count); | ||||
|             }else if ("4".equals(type)) { | ||||
|                 BO bo_eu_pal_repository = SDK.getBOAPI().query("BO_EU_PAL_REPOSITORY").addQuery("PLID = ", plId).detail(); | ||||
|                 bo_eu_pal_repository.set("ISSTOP",state); | ||||
|                 SDK.getBOAPI().update("BO_EU_PAL_REPOSITORY",bo_eu_pal_repository); | ||||
|                 // 修改流程文件的停用状态 | ||||
|                 String updataSql = "UPDATE APP_ACT_COE_PAL_REPOSITORY SET ISSTOP = '" + state + "',MODIFYDATE = TO_DATE('"+date+"','YY-MM-DD HH24:MI:SS') WHERE ID = '" + plId | ||||
|                         + "'"; | ||||
|                 System.err.println("停用改设计=======>" + updataSql); | ||||
|                 count = DBSql.update(updataSql); | ||||
|                 PALRepositoryCache.getCache().reload(); | ||||
|                 SDK.getLogAPI().consoleInfo("更新状态后刷新缓存结束===========>"); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         if (count > 0) { | ||||
|             /* | ||||
|              * TeamPermCache.getCache().reload(); TeamMemberPermCache.getCache().reload(); | ||||
|              * PublishHistoryCache.getCache().reload(); | ||||
|              * PublishUserGroupCache.getCache().reload(); | ||||
|              * PublishUserGroupPermCache.getCache().reload(); | ||||
|              * PublishUserGroupRoleCache.getCache().reload(); | ||||
|              * PALDesignerFileCache.getCache().reload(); | ||||
|              * PALDesignerFileDragModelCache.getCache().reload(); | ||||
|              * PALRepositoryRemoveCache.getCache().reload(); | ||||
|              * CoeDesignerShapeCache.getCache().reload(); | ||||
|              * DesignerShapeRelationCache.getCache().reload(); | ||||
|              * PALRepositoryPropertyCache.getCache().reload(); | ||||
|              * PALRepositoryAttributeCache.getCache().reload(); | ||||
|              * PALRepositoryShapeConfigCache.getCache().reload(); | ||||
|              * PALRepositoryShapeAttributeCache.getCache().reload(); | ||||
|              * CoeProcessLevelCorrelateCache.getCache().reload(); | ||||
|              * CoeDesignerImageCache.getCache().reload(); | ||||
|              */ | ||||
| 
 | ||||
|             ro.put("result", "ok"); | ||||
|         } else { | ||||
|             ro.put("result", "error"); | ||||
|         } | ||||
|         return ro; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 文件修改为发布状态时同步权限数据到权限阅览 | ||||
|      * | ||||
|      * @param palId palid | ||||
|      * @param me    me | ||||
|      */ | ||||
|     private void createPermScopeData(String palId , UserContext me) { | ||||
|         PALRepositoryModel parentModel = PALRepositoryCache.getCache().get(palId); | ||||
|         String plVersionid = parentModel.getVersionId(); | ||||
|         BO oldBo = (BO) ((BOQueryAPI) SDK.getBOAPI().query("BO_ACT_PUBLISH_PERM_SCOPE").addQuery("PALVERSIONID = ", plVersionid)).detail(); | ||||
|         if (oldBo == null) { | ||||
|             BO scopeBo = new BO(); | ||||
|             scopeBo.set("PALVERSIONID" , plVersionid); | ||||
|             scopeBo.set("PALNAME" , parentModel.getName()); | ||||
|             ProcessInstance processInst = SDK.getProcessAPI().createBOProcessInstance("obj_e076b01bd0d04bc39e5af12e2c8c188c", me.getUID(), "权限阅览"); | ||||
|             SDK.getBOAPI().create("BO_ACT_PUBLISH_PERM_SCOPE", scopeBo, processInst, me); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     private String createOutputReport(PALRepositoryModel model, String wsId, String userId, String teamId, String uuid) { | ||||
|         String taskId = ""; | ||||
|         if (model.getMethodId().contains("process.")) { | ||||
|             taskId = PALRepositoryQueryAPIManager.getInstance().createOutputReportPr(wsId, userId, teamId, uuid); | ||||
|             JSONObject object = JSONObject.parseObject(taskId); | ||||
|             if ("ok".equals(object.getString("result"))) { | ||||
|                 taskId = object.getJSONObject("data").getString("taskId"); | ||||
|             } | ||||
|         } else if ("data.form".equals(model.getMethodId())) { | ||||
|             taskId = PALRepositoryQueryAPIManager.getInstance().createOutputReportBd(wsId, userId, teamId, uuid); | ||||
|             JSONObject object = JSONObject.parseObject(taskId); | ||||
|             if ("ok".equals(object.getString("result"))) { | ||||
|                 taskId = object.getJSONObject("data").getString("taskId"); | ||||
|             } | ||||
|         } else if ("control.policy".equals(model.getMethodId())) { | ||||
|             taskId = PALRepositoryQueryAPIManager.getInstance().createOutputReportZd(wsId, userId, teamId, uuid); | ||||
|             JSONObject object = JSONObject.parseObject(taskId); | ||||
|             if ("ok".equals(object.getString("result"))) { | ||||
|                 taskId = object.getJSONObject("data").getString("taskId"); | ||||
|             } | ||||
|         } | ||||
|         return taskId; | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,81 @@ | ||||
| package com.awspaas.user.bpa.job; | ||||
| 
 | ||||
| import com.actionsoft.bpms.bo.engine.BO; | ||||
| import com.actionsoft.bpms.bpmn.engine.model.run.delegate.HistoryTaskInstance; | ||||
| import com.actionsoft.bpms.schedule.IJob; | ||||
| import com.actionsoft.bpms.server.UserContext; | ||||
| import com.actionsoft.bpms.util.DBSql; | ||||
| import com.actionsoft.bpms.util.UtilString; | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| import com.alibaba.fastjson.JSON; | ||||
| import com.alibaba.fastjson.JSONArray; | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| import com.awspaas.user.bpa.util.UtilUrls; | ||||
| import org.dom4j.Document; | ||||
| import org.dom4j.DocumentHelper; | ||||
| import org.dom4j.Element; | ||||
| import org.quartz.JobExecutionContext; | ||||
| import org.quartz.JobExecutionException; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class CreateVER_ACTIVITYJob implements IJob { | ||||
|     @Override | ||||
|     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { | ||||
|         try { | ||||
|             DBSql.update("delete from APP_ACT_BPAD_P_VER_ACTIVITY"); | ||||
|             //jsonObject.put("createDateStart","2019-07-01 00:00:00");//SDK.getORGAPI().getDepartmentByUser(processExecutionContext.getProcessInstance().getCreateUser()).getNo() | ||||
|             //jsonObject.put("createDateEnd","2023-09-01 00:00:00");//processExecutionContext.getProcessInstance().getCreateUser() | ||||
|             String xmlStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"webservices.services.weaver.com.cn\">\n" + | ||||
|                     "   <soapenv:Header/>\n" + | ||||
|                     "   <soapenv:Body>\n" + | ||||
|                     "      <web:getAllWfId/>\n" + | ||||
|                     "   </soapenv:Body>\n" + | ||||
|                     "</soapenv:Envelope>"; | ||||
| 
 | ||||
|             System.out.println("参数==============="+xmlStr); | ||||
|             UserContext userContext = UserContext.fromUID("admin"); | ||||
|             //System.out.println("参数==============="+xmls); | ||||
|             //HttpClientUtil httpClientUtil = new HttpClientUtil(); | ||||
|             int timeout = 600000; | ||||
|             // HttpURLConnection 发送SOAP请求 | ||||
|             System.out.println("HttpURLConnection 发送SOAP请求"); | ||||
| 
 | ||||
|             String postSoap = UtilUrls.doPostSoap("http://10.119.22.207:80/services/WorkflowService", xmlStr, ""); | ||||
| 
 | ||||
| 
 | ||||
|             Document document = DocumentHelper.parseText(postSoap); | ||||
|             Element rootElement = document.getRootElement(); | ||||
|             //   System.out.println("rootElement>>>>>>"+rootElement); | ||||
|             Element result = rootElement.element("Body").element("getAllWfIdResponse").element("out"); | ||||
|             String resultString = result.getData().toString(); | ||||
|             //System.out.println("resultString=>>>>>>>>>>"+resultString); | ||||
|             JSONArray jsonArray = JSON.parseArray(resultString); | ||||
| 
 | ||||
|             for (int i=0;i<jsonArray.size();i++ | ||||
|             ) { | ||||
|                 JSONObject jsonObject = JSON.parseObject(jsonArray.get(i).toString()); | ||||
|                 if ((jsonObject.get("WORKFLOWNAME").toString().contains("废止")&&!jsonObject.get("WORKFLOWNAME").toString().contains("仅查询"))||jsonObject.get("WORKFLOWNAME").toString().contains("停止") | ||||
|                  ||jsonObject.get("WORKFLOWNAME").toString().contains("停用")||jsonObject.get("WORKFLOWNAME").toString().contains("(废)")||jsonObject.get("WORKFLOWNAME").toString().contains("作废")){ | ||||
| 
 | ||||
|                 }else { | ||||
|                     //insert into 表名(列名1,列名2,列名3.....)values(值1,值2,值3.....); | ||||
|                     Integer version = 1; | ||||
|                     if (UtilString.isNotEmpty(jsonObject.get("VERSION").toString())){ | ||||
|                          version = Integer.parseInt(jsonObject.get("VERSION").toString()); | ||||
|                     } | ||||
| 
 | ||||
|                     String sql = "insert into APP_ACT_BPAD_P_VER_ACTIVITY(ID,PROCESSVERSION,PROCESSVERNAME,PROCESSVERSIONID,PROCESSGROUPID,EXT1) values('"+jsonObject.get("ID").toString().trim()+"','"+version+"','"+jsonObject.get("WORKFLOWNAME")+"','"+jsonObject.get("ID").toString().trim()+"','"+jsonObject.get("ID").toString().trim()+"','"+i+"')"; | ||||
|                     DBSql.update(sql); | ||||
| 
 | ||||
|                 } | ||||
| 
 | ||||
| 
 | ||||
|             } | ||||
| 
 | ||||
| 
 | ||||
|         }catch (Exception e){ | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
							
								
								
									
										108
									
								
								com.awspaas.user.bpa/src/com/awspaas/user/bpa/job/ThirdJob.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								com.awspaas.user.bpa/src/com/awspaas/user/bpa/job/ThirdJob.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,108 @@ | ||||
| package com.awspaas.user.bpa.job; | ||||
| 
 | ||||
| import com.actionsoft.bpms.bo.engine.BO; | ||||
| import com.actionsoft.bpms.commons.database.RowMap; | ||||
| import com.actionsoft.bpms.schedule.IJob; | ||||
| import com.actionsoft.bpms.server.UserContext; | ||||
| import com.actionsoft.bpms.util.DBSql; | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| import com.alibaba.fastjson.JSON; | ||||
| import com.alibaba.fastjson.JSONArray; | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| import com.awspaas.user.bpa.util.UtilUrls; | ||||
| import org.dom4j.Document; | ||||
| import org.dom4j.DocumentException; | ||||
| import org.dom4j.DocumentHelper; | ||||
| import org.dom4j.Element; | ||||
| import org.quartz.JobExecutionContext; | ||||
| import org.quartz.JobExecutionException; | ||||
| 
 | ||||
| import java.util.LinkedHashMap; | ||||
| import java.util.List; | ||||
| import java.util.UUID; | ||||
| 
 | ||||
| public class ThirdJob implements IJob { | ||||
|     @Override | ||||
|     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { | ||||
|         List<RowMap> app_act_bpad_p_ver_activity = DBSql.getMaps("select * from APP_ACT_BPAD_P_VER_ACTIVITY"); | ||||
|         if (app_act_bpad_p_ver_activity!=null) { | ||||
|             JSONObject jsonObject = new JSONObject(new LinkedHashMap()); | ||||
|             for (RowMap bo : app_act_bpad_p_ver_activity | ||||
|             ) { | ||||
|                 int j = 1; | ||||
|                 int tale = Integer.valueOf(bo.getString("ID").trim()); | ||||
| 
 | ||||
|                 jsonObject.put("workflowId", tale); | ||||
|                 //   jsonObject.put("workflowId",bo.getString("WORKFLOWID")); | ||||
|                 //jsonObject.put("createDateStart","2019-07-01 00:00:00");//SDK.getORGAPI().getDepartmentByUser(processExecutionContext.getProcessInstance().getCreateUser()).getNo() | ||||
|                 //jsonObject.put("createDateEnd","2023-09-01 00:00:00");//processExecutionContext.getProcessInstance().getCreateUser() | ||||
|                 jsonObject.put("pageIndex", j); | ||||
|                 jsonObject.put("pageSize", 1000); | ||||
|                 String xmlStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"webservices.services.weaver.com.cn\">\n" + | ||||
|                         "   <soapenv:Header/>" + | ||||
|                         "   <soapenv:Body>" + | ||||
|                         "      <web:getFlowListByWfId>" + | ||||
|                         "         <web:in0>" + | ||||
|                         "" + jsonObject + "" + | ||||
|                         "         </web:in0>" + | ||||
|                         "      </web:getFlowListByWfId>" + | ||||
|                         "   </soapenv:Body>" + | ||||
|                         "</soapenv:Envelope>"; | ||||
| 
 | ||||
|                 System.out.println("参数===============" + xmlStr); | ||||
|                 //System.out.println("参数==============="+xmls); | ||||
|                 //HttpClientUtil httpClientUtil = new HttpClientUtil(); | ||||
|                 int timeout = 600000; | ||||
|                 // HttpURLConnection 发送SOAP请求 | ||||
|                 System.out.println("HttpURLConnection 发送SOAP请求"); | ||||
| 
 | ||||
|                 String postSoap = UtilUrls.doPostSoap("http://10.119.22.207:80/services/WorkflowService", xmlStr, ""); | ||||
| 
 | ||||
| 
 | ||||
|                 Document document = null; | ||||
|                 try { | ||||
|                     document = DocumentHelper.parseText(postSoap); | ||||
|                 } catch (DocumentException e) { | ||||
|                     e.printStackTrace(); | ||||
|                 } | ||||
|                 Element rootElement = document.getRootElement(); | ||||
|                 // System.out.println("rootElement>>>>>>"+rootElement); | ||||
|                 Element result = rootElement.element("Body").element("getFlowListByWfIdResponse").element("out"); | ||||
|                 String resultString = result.getData().toString(); | ||||
|                 //  System.out.println("resultString=>>>>>>>>>>"+resultString); | ||||
|                 //if (!StringUtils.isEmpty(resultString)){ | ||||
|                 JSONObject jsonObject1 = JSON.parseObject(resultString); | ||||
|                 String datas = jsonObject1.getString("datas"); | ||||
|                 System.out.println(""); | ||||
|                 JSONArray jsonArray = JSONArray.parseArray(datas); | ||||
|                 j++; | ||||
| 
 | ||||
|                 if (jsonArray != null && jsonArray.size() != 0) { | ||||
|                     UserContext userContext = UserContext.fromUID("admin"); | ||||
|                     for (int i = 0; i < jsonArray.size(); i++) { | ||||
|                         if (JSONObject.parseObject(jsonArray.get(i).toString()).get("ID")!=null&&JSONObject.parseObject(jsonArray.get(i).toString()).get("ID")!=""){ | ||||
|                             String select_sql = "select * from APP_ACT_BPAD_P_VNODE_ACTIVITY where  PROCESSVERID = '"+JSONObject.parseObject(jsonArray.get(i).toString()).get("ID")+"' AND ACTIVITYDEFID = '"+JSONObject.parseObject(jsonArray.get(i).toString()).get("nodeid")+"'"; | ||||
|                             RowMap map = DBSql.getMap(select_sql); | ||||
|                             if (map == null) { | ||||
|                                 String id = UUID.randomUUID().toString(); | ||||
|                                 String insert_sql = "insert into APP_ACT_BPAD_P_VNODE_ACTIVITY(ID,PROCESSVERID,TASKNAME,ACTIVITYDEFID)values('"+id+"','"+JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId")+"','"+JSONObject.parseObject(jsonArray.get(i).toString()).get("nodeName")+"','"+JSONObject.parseObject(jsonArray.get(i).toString()).get("nodeid")+"')"; | ||||
|                                 DBSql.update(insert_sql); | ||||
|                             } | ||||
|                         }else { | ||||
|                             String id = UUID.randomUUID().toString(); | ||||
|                             String select_sql = "select * from APP_ACT_BPAD_P_VNODE_ACTIVITY where   ACTIVITYDEFID = '"+JSONObject.parseObject(jsonArray.get(i).toString()).get("nodeid")+"'"; | ||||
|                             RowMap map = DBSql.getMap(select_sql); | ||||
|                             if (map == null) { | ||||
| 
 | ||||
|                                 String insert_sql = "insert into APP_ACT_BPAD_P_VNODE_ACTIVITY(ID,PROCESSVERID,TASKNAME,ACTIVITYDEFID)values('"+id | ||||
|                                         +"','"+JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId")+"','"+JSONObject.parseObject(jsonArray.get(i).toString()).get("nodeName")+"','"+JSONObject.parseObject(jsonArray.get(i).toString()).get("nodeid")+"')"; | ||||
|                                 DBSql.update(insert_sql); | ||||
|                             } | ||||
|                         } | ||||
| 
 | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,30 @@ | ||||
| package com.awspaas.user.bpa.plugins; | ||||
| 
 | ||||
| import com.actionsoft.apps.listener.PluginListener; | ||||
| import com.actionsoft.apps.resource.AppContext; | ||||
| import com.actionsoft.apps.resource.plugin.profile.ASLPPluginProfile; | ||||
| import com.actionsoft.apps.resource.plugin.profile.AWSPluginProfile; | ||||
| import com.actionsoft.apps.resource.plugin.profile.AtFormulaPluginProfile; | ||||
| import com.actionsoft.apps.resource.plugin.profile.HttpASLP; | ||||
| import com.awspaas.user.bpa.aslp.UpdatePptxAndExcelAslp; | ||||
| import com.awspaas.user.bpa.at.GetOrgPostByName; | ||||
| import com.awspaas.user.bpa.at.getSJNumsByprocess; | ||||
| 
 | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class Plugins implements PluginListener { | ||||
|     @Override | ||||
|     public List<AWSPluginProfile> register(AppContext appContext) { | ||||
|         // 存放本应用的全部插件扩展点描述 | ||||
|         List<AWSPluginProfile> list = new ArrayList<AWSPluginProfile>(); | ||||
|         // 注册AT公式 | ||||
|         list.add(new AtFormulaPluginProfile("获取当前名称的数据", "@getOrgPostByName(*bo_name,*zd_nme,*name,*set_name)", | ||||
|                 GetOrgPostByName.class.getName(), "获取当前名称的数据", "返回数据")); | ||||
|         list.add(new AtFormulaPluginProfile("获取已阅和待阅的总人数", "@getSJNumsByprocess(*bindid)", | ||||
|                 getSJNumsByprocess.class.getName(), "获取已阅和待阅的总人数", "获取已阅和待阅的总人数")); | ||||
| 
 | ||||
|         list.add(new ASLPPluginProfile("UpdatePptxAndExcelAslp", UpdatePptxAndExcelAslp.class.getName(), "根据上传的文件进行更新相关的excel或者ppt", (HttpASLP)null)); | ||||
|         return list; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										61
									
								
								com.awspaas.user.bpa/src/com/awspaas/user/bpa/test.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								com.awspaas.user.bpa/src/com/awspaas/user/bpa/test.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,61 @@ | ||||
| package com.awspaas.user.bpa; | ||||
| 
 | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| import com.awspaas.user.bpa.util.PptCreateUtil; | ||||
| import com.spire.presentation.*; | ||||
| import com.spire.presentation.drawing.IImageData; | ||||
| import com.spire.xls.Workbook; | ||||
| import com.spire.xls.Worksheet; | ||||
| import org.apache.commons.io.IOUtils; | ||||
| import org.apache.poi.hslf.extractor.PowerPointExtractor; | ||||
| import org.apache.poi.sl.usermodel.PictureData; | ||||
| import org.apache.poi.xslf.usermodel.*; | ||||
| import org.openxmlformats.schemas.drawingml.x2006.main.CTRegularTextRun; | ||||
| import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody; | ||||
| import org.openxmlformats.schemas.drawingml.x2006.main.CTTextParagraph; | ||||
| import org.openxmlformats.schemas.presentationml.x2006.main.CTGroupShape; | ||||
| import org.openxmlformats.schemas.presentationml.x2006.main.CTShape; | ||||
| import org.openxmlformats.schemas.presentationml.x2006.main.CTSlide; | ||||
| 
 | ||||
| import javax.imageio.ImageIO; | ||||
| import java.awt.*; | ||||
| import java.awt.image.BufferedImage; | ||||
| import java.io.File; | ||||
| import java.io.FileInputStream; | ||||
| import java.io.IOException; | ||||
| import java.util.ArrayList; | ||||
| import java.util.List; | ||||
| public class test { | ||||
|     public static void main(String[] args) throws Exception { | ||||
|         //新建PowerPoint文档 | ||||
|         Presentation ppt = new Presentation(); | ||||
| 
 | ||||
|         //加载Excel文档,将指定单元格数据保存为图片 | ||||
|         Workbook workbook = new Workbook(); | ||||
|         workbook.loadFromFile("test.xlsx"); | ||||
|         Worksheet sheet = workbook.getWorksheets().get(0); | ||||
|         sheet.saveToImage("image.png",1,1,8,7);//将指定单元格数据范围保存为图片 | ||||
| 
 | ||||
|         //加载保存的表格图片(作为OLE对象图标) | ||||
|         File file = new File("image.png"); | ||||
|         BufferedImage image = ImageIO.read(file); | ||||
|         IImageData oleImage = ppt.getImages().append(image); | ||||
|         Rectangle rec = new Rectangle(120, 30, image.getWidth()/2, image.getHeight()/2); | ||||
| 
 | ||||
|         //将Excel数据保存到流 | ||||
|         File oldFile = new File("test.xlsx"); | ||||
|         FileInputStream inputStream = new FileInputStream(oldFile); | ||||
|         byte[] data = new byte[(int)oldFile.length()]; | ||||
|         inputStream.read(data,0,data.length); | ||||
| 
 | ||||
|         //将Excel文档作为OLE对象插入到幻灯片 | ||||
|         IOleObject oleObject = ppt.getSlides().get(0).getShapes().appendOleObject("excel", data, rec); | ||||
|         oleObject.getSubstituteImagePictureFillFormat().getPicture().setEmbedImage(oleImage); | ||||
|         oleObject.setProgId("Excel.Sheet.12"); | ||||
| 
 | ||||
|         //保存文档 | ||||
|         ppt.saveToFile("EmbedExcelAsOLE.pptx", FileFormat.PPTX_2013); | ||||
|         inputStream.close(); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,188 @@ | ||||
| package com.awspaas.user.bpa.util; | ||||
| 
 | ||||
| import org.apache.poi.hssf.usermodel.*; | ||||
| import org.apache.poi.ss.usermodel.Cell; | ||||
| import org.apache.poi.ss.usermodel.CellType; | ||||
| import org.apache.poi.ss.usermodel.DateUtil; | ||||
| import org.apache.poi.ss.usermodel.Row; | ||||
| import org.apache.poi.ss.util.CellRangeAddress; | ||||
| 
 | ||||
| import java.io.*; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class HSSFUtils { | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * #合并多个excel文件 | ||||
|      * @param fileLists excel文件路径 | ||||
|      * @param path 目标文件保存目录 | ||||
|      * @param fileName 目标文件名称 | ||||
|      */ | ||||
|     public static void mergeExcel(List<String> fileLists, String path, String fileName) { | ||||
|         // 创建新的excel工作簿 | ||||
|         HSSFWorkbook newExcelWorkBook = new HSSFWorkbook(); | ||||
|         // 遍历需要合并的excel文件 | ||||
|         for (String excelName : fileLists) { | ||||
|             try (InputStream in = new FileInputStream(excelName)) { | ||||
|                 // 创建工作簿 | ||||
|                 HSSFWorkbook tmpWorkBook = new HSSFWorkbook(in); | ||||
|                 // 获取工作簿中的Sheet个数 | ||||
|                 int len = tmpWorkBook.getNumberOfSheets(); | ||||
|                 if (len <= 1) { | ||||
|                     HSSFSheet tmpSheet = tmpWorkBook.getSheetAt(0); | ||||
|                     HSSFSheet newExcelSheet = newExcelWorkBook.createSheet(tmpSheet.getSheetName()); | ||||
|                     // 复制sheet内容 | ||||
|                     copyExcelSheet(newExcelWorkBook, tmpSheet, newExcelSheet); | ||||
|                 } else { | ||||
|                     for (int i = 0; i < len; i++) { | ||||
|                         HSSFSheet tmpSheet = tmpWorkBook.getSheetAt(i); | ||||
|                         HSSFSheet newExcelSheet = newExcelWorkBook.createSheet(tmpSheet.getSheetName()); | ||||
|                         // 复制sheet内容 | ||||
|                         copyExcelSheet(newExcelWorkBook, tmpSheet, newExcelSheet); | ||||
|                     } | ||||
|                 } | ||||
|                 // 关闭tmpWorkBook工作簿 | ||||
|                 tmpWorkBook.close(); | ||||
|             } catch (IOException e) { | ||||
|                 e.printStackTrace(); | ||||
|             } | ||||
|         } | ||||
|         // 新生成的excel文件 | ||||
|         if (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls")) { | ||||
|             fileName += ".xlsx"; | ||||
|         } | ||||
|         String excelFileName = path + File.separator + fileName; | ||||
|         // 判断文件是否存在 | ||||
|         File excelFile = new File(excelFileName); | ||||
|         if (excelFile.exists()) { | ||||
|             // 存在则删除 | ||||
|             excelFile.delete(); | ||||
|         } | ||||
|         // 使用输出流写出 | ||||
|         try (FileOutputStream fos = new FileOutputStream(excelFileName)) { | ||||
|             newExcelWorkBook.write(fos); | ||||
|             fos.flush(); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         } finally { | ||||
|             try { | ||||
|                 newExcelWorkBook.close(); | ||||
|             } catch (IOException e) { | ||||
|                 e.printStackTrace(); | ||||
|             } | ||||
|         } | ||||
|         System.out.println("excel文件合并成功,合并后文件路径:" + excelFileName); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * #复制sheet到新的excel文件中 | ||||
|      * @param workbook excel工作簿 | ||||
|      * @param tmpSheet 来源sheet | ||||
|      * @param newExcelSheet 新生成的sheet | ||||
|      */ | ||||
|     public static void copyExcelSheet(HSSFWorkbook workbook, HSSFSheet tmpSheet, HSSFSheet newExcelSheet) { | ||||
|         // 合并单元格 | ||||
|         mergeSheetAllRegion(tmpSheet, newExcelSheet); | ||||
|         // 设置单元格列宽度 | ||||
|         // 获取最后一个单元格位置 | ||||
|         if (tmpSheet!=null) { | ||||
| 
 | ||||
| 
 | ||||
|             if (tmpSheet.getRow(tmpSheet.getFirstRowNum()) == null) { | ||||
| 
 | ||||
|             } else { | ||||
|                 int len = tmpSheet.getRow(tmpSheet.getFirstRowNum()).getLastCellNum(); | ||||
|                 for (int i = 0; i < len; i++) { | ||||
|                     newExcelSheet.setColumnWidth(i, tmpSheet.getColumnWidth(i)); | ||||
|                 } | ||||
|                 // 复制每行内容 | ||||
|                 Iterator<Row> it = tmpSheet.iterator(); | ||||
|                 while (it.hasNext()) { | ||||
|                     HSSFRow tmpRow = (HSSFRow) it.next(); | ||||
|                     // 创建新行 | ||||
|                     HSSFRow newExcelRow = newExcelSheet.createRow(tmpRow.getRowNum()); | ||||
|                     // 复制行 | ||||
|                     copyExcelRow(workbook, tmpRow, newExcelRow); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * #合并单元格 | ||||
|      * @param tmpSheet 来源sheet | ||||
|      * @param newExcelSheet 目标sheet | ||||
|      */ | ||||
|     private static void mergeSheetAllRegion(HSSFSheet tmpSheet, HSSFSheet newExcelSheet) { | ||||
|         int num = tmpSheet.getNumMergedRegions(); | ||||
|         CellRangeAddress cellRange = null; | ||||
|         for (int i = 0; i < num; i++) { | ||||
|             cellRange = tmpSheet.getMergedRegion(i); | ||||
|             newExcelSheet.addMergedRegion(cellRange); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * #复制excel中的行到新的sheet中 | ||||
|      * @param workbook 目标工作簿 | ||||
|      * @param tmpRow 来源excel行 | ||||
|      * @param newExcelRow 目标excel行 | ||||
|      */ | ||||
|     public static void copyExcelRow(HSSFWorkbook workbook, HSSFRow tmpRow, HSSFRow newExcelRow) { | ||||
|         // 设置行高 | ||||
|         newExcelRow.setHeight(tmpRow.getHeight()); | ||||
|         // 获取所有列 | ||||
|         Iterator<Cell> it = tmpRow.cellIterator(); | ||||
|         while (it.hasNext()) { | ||||
|             HSSFCell tmpCell = (HSSFCell) it.next(); | ||||
|             // 创建单元格 | ||||
|             HSSFCell newExcelCell = newExcelRow.createCell(tmpCell.getColumnIndex()); | ||||
|             // 复制单元格 | ||||
|             copyExcelCell(workbook, tmpCell, newExcelCell); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * #复制单元格 | ||||
|      * @param workbook 目标工作簿 | ||||
|      * @param tmpCell 来源excel单元格 | ||||
|      * @param newExcelCell 目标excel单元格 | ||||
|      */ | ||||
|     public static void copyExcelCell(HSSFWorkbook workbook, HSSFCell tmpCell, HSSFCell newExcelCell) { | ||||
|         HSSFCellStyle newExcelStyle = workbook.createCellStyle(); | ||||
|         // 复制单元格样式 | ||||
|         newExcelStyle.cloneStyleFrom(tmpCell.getCellStyle()); | ||||
|         // 单元格样式 | ||||
|         newExcelCell.setCellStyle(newExcelStyle); | ||||
|         if (tmpCell.getCellComment() != null) { | ||||
|             newExcelCell.setCellComment(tmpCell.getCellComment()); | ||||
|         } | ||||
|         // 不同数据类型处理 | ||||
|         CellType tmpCellType = CellType.forInt(tmpCell.getCellType()); | ||||
| 
 | ||||
|         newExcelCell.setCellType(tmpCellType); | ||||
|         if (tmpCellType == CellType.NUMERIC) { | ||||
|             if (DateUtil.isCellDateFormatted(tmpCell)) { | ||||
|                 newExcelCell.setCellValue(tmpCell.getDateCellValue()); | ||||
|             } else { | ||||
|                 newExcelCell.setCellValue(tmpCell.getNumericCellValue()); | ||||
|             } | ||||
|         } else if (tmpCellType == CellType.STRING) { | ||||
|             newExcelCell.setCellValue(tmpCell.getRichStringCellValue()); | ||||
|         } else if (tmpCellType == CellType.BLANK) { | ||||
|         } else if (tmpCellType == CellType.BOOLEAN) { | ||||
|             newExcelCell.setCellValue(tmpCell.getBooleanCellValue()); | ||||
|         } else if (tmpCellType == CellType.ERROR) { | ||||
|             newExcelCell.setCellErrorValue(tmpCell.getErrorCellValue()); | ||||
|         } else if (tmpCellType == CellType.FORMULA) { | ||||
|             newExcelCell.setCellFormula(tmpCell.getCellFormula()); | ||||
|         } else { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
							
								
								
									
										105
									
								
								com.awspaas.user.bpa/src/com/awspaas/user/bpa/util/PalUtil.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								com.awspaas.user.bpa/src/com/awspaas/user/bpa/util/PalUtil.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,105 @@ | ||||
| package com.awspaas.user.bpa.util; | ||||
| 
 | ||||
| import com.actionsoft.apps.coe.pal.constant.CoEConstant; | ||||
| import com.actionsoft.apps.coe.pal.pal.output.extend.OutputAppManager; | ||||
| import com.actionsoft.apps.coe.pal.pal.output.extend.OutputAppProfile; | ||||
| import com.actionsoft.bpms.commons.htmlframework.HtmlPageTemplate; | ||||
| import com.actionsoft.bpms.util.UtilString; | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| import com.alibaba.fastjson.JSONArray; | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| 
 | ||||
| import java.util.Arrays; | ||||
| import java.util.HashMap; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| 
 | ||||
| public class PalUtil { | ||||
|     public String jsonData(String sid | ||||
|             ,String language, String templateOperate) { | ||||
|         // 多语言过滤, 暂时没有实现多语言 | ||||
|         if (!"cn".equals(language)) { | ||||
|             return ""; | ||||
|         } | ||||
|         List<OutputAppProfile> list = OutputAppManager.getList(); | ||||
|         JSONArray jsonArray = new JSONArray(); | ||||
| 
 | ||||
|         // 加载报告类型 | ||||
|         Map<String, OutputAppProfile> appMap = new HashMap<String, OutputAppProfile>(); | ||||
|         for (OutputAppProfile model : list) { | ||||
|             String appId = model.getAppContext().getId(); | ||||
|             //System.out.println("role>>>>>>>>>>"+model.getGroupName()); | ||||
|             if (model.getGroupName().contains("岗位手册")){ | ||||
|                 appMap.put(appId.substring(appId.lastIndexOf(".") + 1), model); | ||||
|             } | ||||
|         } | ||||
|         String raciDataType = SDK.getAppAPI().getProperty("com.actionsoft.apps.coe.pal.output.raci", "raciDataType");// raci | ||||
|         if (raciDataType == null) { | ||||
|             raciDataType = "pal"; | ||||
|         } | ||||
|         String orDataType = SDK.getAppAPI().getProperty("com.actionsoft.apps.coe.pal.output.or", "orDataType");// or | ||||
|         if (orDataType == null) { | ||||
|             orDataType = "pal"; | ||||
|         } | ||||
|         for (Map.Entry<String, OutputAppProfile> entry : appMap.entrySet()) { | ||||
|             OutputAppProfile profile = entry.getValue(); | ||||
|             JSONObject json = new JSONObject(); | ||||
|             json.put("id", "output_" + entry.getKey()); | ||||
|             json.put("name", profile.getGroupName()); | ||||
|             json.put("open", true); | ||||
|             json.put("icon", "../apps/" + profile.getAppContext().getId() + "/img/parent16.png"); | ||||
|             jsonArray.add(json); | ||||
|         } | ||||
|         // 排序 pr or raci risk,加入制度手册与表单手册排序 | ||||
|         if (jsonArray != null && !jsonArray.isEmpty()) { | ||||
|             JSONArray temp = new JSONArray(); | ||||
|             String [] arr = { "output_or",}; | ||||
|             for (int i = 0; i < arr.length; i++) { | ||||
|                 for (int j = 0; j < jsonArray.size(); j++) { | ||||
|                     if (arr[i].equals(jsonArray.getJSONObject(j).getString("id"))) { | ||||
|                         temp.add(jsonArray.getJSONObject(j)); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             List<String> tempList = Arrays.asList(arr); | ||||
|             for (int j = 0; j < jsonArray.size(); j++) { | ||||
|                 if (!tempList.contains(jsonArray.getJSONObject(j).getString("id"))) { | ||||
|                     temp.add(jsonArray.getJSONObject(j)); | ||||
|                 } | ||||
|             } | ||||
|             jsonArray = temp; | ||||
|         } | ||||
|         // 加载每种报告类型中的具体类型 | ||||
|         for (OutputAppProfile model : list) { | ||||
|             createJsonData(jsonArray, model); | ||||
|         } | ||||
|         Map<String, Object> map = new HashMap<String, Object>(); | ||||
|         map.put("sid", sid); | ||||
|         map.put("treeData", jsonArray.toString()); | ||||
|         map.put("raciDataType", raciDataType); | ||||
|         map.put("orDataType", orDataType); | ||||
|         map.put("templateOperate", UtilString.isEmpty(templateOperate) ? "0" : templateOperate); | ||||
|         return HtmlPageTemplate.merge(CoEConstant.APP_ID, "pal.pl.repository.outputreport.tree.htm", map); | ||||
|     } | ||||
| 
 | ||||
|     private void createJsonData(JSONArray jsonArray, OutputAppProfile model) { | ||||
|         JSONObject json; | ||||
|         json = new JSONObject(); | ||||
|         json.put("id", model.getId()); | ||||
|         json.put("name", model.getTitle()); | ||||
|         json.put("groupName", model.getGroupName()); | ||||
|         String appId = model.getAppContext().getId(); | ||||
|         json.put("pid", "output_" + appId.substring(appId.lastIndexOf(".") + 1)); | ||||
|         json.put("targetMethodScope", model.getTargetMethodScope()); | ||||
|         json.put("targetMethodType", model.getTargetMethodType()); | ||||
|         json.put("relationMethodScope", model.getRelationMethodScope()); | ||||
|         json.put("lang", model.getLang()); | ||||
|         json.put("optionClass", model.getOptionClass()); | ||||
|         json.put("generClass", model.getGenerClass()); | ||||
|         json.put("icon", "../apps/" + model.getAppContext().getId() + "/img/icon16.png"); | ||||
|         json.put("isDownload", model.isDownload()); | ||||
|         json.put("templates", model.getTemplates()); | ||||
|         json.put("appId", model.getAppContext().getId()); | ||||
|         jsonArray.add(json); | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,154 @@ | ||||
| package com.awspaas.user.bpa.util; | ||||
| 
 | ||||
| import org.apache.poi.sl.usermodel.PictureData; | ||||
| import org.apache.poi.sl.usermodel.TableCell; | ||||
| import org.apache.poi.xslf.usermodel.XMLSlideShow; | ||||
| import org.apache.poi.xslf.usermodel.XSLFPictureData; | ||||
| import org.apache.poi.xslf.usermodel.XSLFPictureShape; | ||||
| import org.apache.poi.xslf.usermodel.XSLFSlide; | ||||
| import org.apache.poi.xslf.usermodel.XSLFSlideLayout; | ||||
| import org.apache.poi.xslf.usermodel.XSLFTable; | ||||
| import org.apache.poi.xslf.usermodel.XSLFTableCell; | ||||
| import org.apache.poi.xslf.usermodel.XSLFTableRow; | ||||
| import org.apache.poi.xslf.usermodel.XSLFTextBox; | ||||
| import org.apache.poi.xslf.usermodel.XSLFTextRun; | ||||
| import javax.servlet.ServletOutputStream; | ||||
| import java.awt.*; | ||||
| import java.awt.geom.Rectangle2D; | ||||
| import java.io.FileOutputStream; | ||||
| import java.io.IOException; | ||||
| import java.util.List; | ||||
| import java.util.Objects; | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * @Author: Yangy | ||||
|  * @Date: 2020/11/4 16:12 | ||||
|  * @Description ppt生成工具类 | ||||
|  */ | ||||
| public class PptCreateUtil { | ||||
|     /** | ||||
|      * @Author Yangy | ||||
|      * @Description 获取一个ppt实例 | ||||
|      * @Date 16:37 2020/11/4 | ||||
|      * @Param [] | ||||
|      * @return org.apache.poi.xslf.usermodel.XMLSlideShow | ||||
|      **/ | ||||
|     public static XMLSlideShow getPptInstance(){ | ||||
|         // 创建ppt: | ||||
|         XMLSlideShow ppt = new XMLSlideShow(); | ||||
|         //设置幻灯片的大小: | ||||
|         Dimension pageSize = ppt.getPageSize(); | ||||
|         pageSize.setSize(800,700); | ||||
|         return ppt; | ||||
|     } | ||||
|     /** | ||||
|      * @Author Yangy | ||||
|      * @Description 创建幻灯片 | ||||
|      * @Date 16:39 2020/11/4 | ||||
|      * @Param ppt | ||||
|      * @return org.apache.poi.xslf.usermodel.XSLFSlideMaster | ||||
|      **/ | ||||
|     public static XSLFSlide createSlide(XMLSlideShow ppt, XSLFSlideLayout layout){ | ||||
|         //通过布局样式创建幻灯片 | ||||
|         XSLFSlide slide = ppt.createSlide(layout); | ||||
|         //清理掉模板内容 | ||||
|         slide.clear(); | ||||
|         return slide; | ||||
|     } | ||||
|     /** | ||||
|      * @Author Yangy | ||||
|      * @Description 生成一个文本框及内容 | ||||
|      * @Date 10:10 2020/11/5 | ||||
|      * @Param content=内容,fontSize=字大小,fontFamily=字体风格,color=字颜色 | ||||
|      * @return org.apache.poi.xslf.usermodel.XMLSlideShow | ||||
|      **/ | ||||
|     public static void addTextBox(XSLFSlide slide,String content,Double fontSize, | ||||
|                                   String fontFamily,Color color, | ||||
|                                   int x,int y,int w,int h){ | ||||
|         XSLFTextBox textBox = slide.createTextBox(); | ||||
|         //设置坐标、宽高 | ||||
|         textBox.setAnchor(new Rectangle2D.Double(x, y, w, h)); | ||||
|         XSLFTextRun projectInfo = textBox.addNewTextParagraph().addNewTextRun(); | ||||
|         projectInfo.setText(content); | ||||
|         projectInfo.setFontSize(fontSize); | ||||
|         projectInfo.setFontFamily(fontFamily); | ||||
|         projectInfo.setFontColor(color); | ||||
|     } | ||||
|     /** | ||||
|      * @Author Yangy | ||||
|      * @Description 添加图片,设置图片坐标、宽高 | ||||
|      * @Date 16:47 2020/11/4 | ||||
|      * @Param slide=幻灯片实例,picBytes=图片字节流,picType=图片类型 | ||||
|      * @return org.apache.poi.xslf.usermodel.XMLSlideShow | ||||
|      **/ | ||||
|     public static void addPicture(XMLSlideShow ppt, XSLFSlide slide, byte [] picBytes, PictureData.PictureType picType, | ||||
|                                   int x, int y, int w, int h){ | ||||
|         XSLFPictureData idx = ppt.addPicture(picBytes, picType); | ||||
|         XSLFPictureShape pic = slide.createPicture(idx); | ||||
|         //设置当前图片在ppt中的位置,以及图片的宽高 | ||||
|         pic.setAnchor(new java.awt.Rectangle(x, y, w, h)); | ||||
|     } | ||||
|     /** | ||||
|      * @Author Yangy | ||||
|      * @Description 添加表格 | ||||
|      * @Date 16:55 2020/11/4 | ||||
|      * @Param [ppt] | ||||
|      * @return org.apache.poi.xslf.usermodel.XMLSlideShow | ||||
|      **/ | ||||
|     public static void addTable(XSLFSlide slide,List<List<String>> dataList,int x,int y,int w,int h){ | ||||
|         XSLFTable table = slide.createTable(); | ||||
|         //此处还可以自行添加表格样式参数 | ||||
|         //dataList第一个列表为行数据,内嵌列表为每一行的列数据 | ||||
|         for (int i = 0; i < dataList.size(); i++) { | ||||
|             List<String> row = dataList.get(i); | ||||
|             if (Objects.isNull(row)) continue; | ||||
|             XSLFTableRow row1 = table.addRow(); | ||||
|             for (int j = 0; j < row.size(); j++) { | ||||
|                 XSLFTableCell cell = row1.addCell(); | ||||
|                 cell.setBorderColor(TableCell.BorderEdge.top,Color.BLACK); | ||||
|                 cell.setBorderColor(TableCell.BorderEdge.right,Color.BLACK); | ||||
|                 cell.setBorderColor(TableCell.BorderEdge.bottom,Color.BLACK); | ||||
|                 cell.setBorderColor(TableCell.BorderEdge.left,Color.BLACK); | ||||
|                 cell.setText(row.get(j)); | ||||
|             } | ||||
|         } | ||||
|         //这个设置必须有,否则表格不显示 | ||||
|         Rectangle2D rectangle2D = new Rectangle2D.Double(x,y,w,h); | ||||
|         table.setAnchor(rectangle2D); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @Author Yangy | ||||
|      * @Description 写入指定路径的ppt文件 | ||||
|      * @Date 16:59 2020/11/4 | ||||
|      * @Param [ppt, fileOutputStream] | ||||
|      * @return void | ||||
|      **/ | ||||
|     public static void pptWirteOut(XMLSlideShow ppt, FileOutputStream fileOutputStream){ | ||||
|         try { | ||||
|             ppt.write(fileOutputStream); | ||||
|             System.out.println("create PPT successfully"); | ||||
|             fileOutputStream.close(); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
|     /** | ||||
|      * @Author Yangy | ||||
|      * @Description | ||||
|      * @Date 14:22 2020/11/5 | ||||
|      * @Param [ppt, outputStream] | ||||
|      * @return void | ||||
|      **/ | ||||
|     public static void pptWirteOut(XMLSlideShow ppt, ServletOutputStream outputStream){ | ||||
|         try { | ||||
|             ppt.write(outputStream); | ||||
|             System.out.println("download PPT successfully"); | ||||
|             outputStream.close(); | ||||
|             ppt.close(); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @ -0,0 +1,52 @@ | ||||
| package com.awspaas.user.bpa.util; | ||||
| 
 | ||||
| import org.apache.http.HttpEntity; | ||||
| import org.apache.http.client.config.RequestConfig; | ||||
| import org.apache.http.client.methods.CloseableHttpResponse; | ||||
| import org.apache.http.client.methods.HttpPost; | ||||
| import org.apache.http.entity.StringEntity; | ||||
| import org.apache.http.impl.client.CloseableHttpClient; | ||||
| import org.apache.http.impl.client.HttpClientBuilder; | ||||
| import org.apache.http.util.EntityUtils; | ||||
| 
 | ||||
| import java.nio.charset.Charset; | ||||
| 
 | ||||
| /** | ||||
|  * @PackageName: com.awspaas.user.apps.yili.integration.util | ||||
|  * @ClassName: UtilUrl | ||||
|  * @author: yujh | ||||
|  * @date: 2022/5/18 21:41 | ||||
|  */ | ||||
| public class UtilUrls { | ||||
| 
 | ||||
|     //使用SOAP1.1发送消息 | ||||
|     public static String doPostSoap(String postUrl, String soapXml, String soapAction) { | ||||
|         String retStr = ""; | ||||
|         // 创建HttpClientBuilder | ||||
|         HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); | ||||
|         // HttpClient | ||||
|         CloseableHttpClient closeableHttpClient = httpClientBuilder.build(); | ||||
|         HttpPost httpPost = new HttpPost(postUrl); | ||||
|         // 设置请求和传输超时时间 | ||||
|         RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(999999999) | ||||
|                 .setConnectTimeout(999999999).build(); | ||||
|         httpPost.setConfig(requestConfig); | ||||
|         try { | ||||
|             httpPost.setHeader("Content-Type", "text/xml;charset=UTF-8"); | ||||
|             httpPost.setHeader("SOAPAction", soapAction); | ||||
|             StringEntity data = new StringEntity(soapXml, Charset.forName("UTF-8")); | ||||
|             httpPost.setEntity(data); | ||||
|             CloseableHttpResponse response = closeableHttpClient.execute(httpPost); | ||||
|             HttpEntity httpEntity = response.getEntity(); | ||||
|             if (httpEntity != null) { | ||||
|                 // 打印响应内容 | ||||
|                 retStr = EntityUtils.toString(httpEntity, "UTF-8"); | ||||
|             } | ||||
|             // 释放资源 | ||||
|             closeableHttpClient.close(); | ||||
|         } catch (Exception e) { | ||||
|             e.printStackTrace(); | ||||
|         } | ||||
|         return retStr; | ||||
|     } | ||||
| } | ||||
							
								
								
									
										184
									
								
								com.awspaas.user.bpa/src/com/awspaas/user/bpa/util/Utils.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										184
									
								
								com.awspaas.user.bpa/src/com/awspaas/user/bpa/util/Utils.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,184 @@ | ||||
| package com.awspaas.user.bpa.util; | ||||
| 
 | ||||
| import org.apache.poi.ss.usermodel.Cell; | ||||
| import org.apache.poi.ss.usermodel.CellType; | ||||
| import org.apache.poi.ss.usermodel.DateUtil; | ||||
| import org.apache.poi.ss.usermodel.Row; | ||||
| import org.apache.poi.ss.util.CellRangeAddress; | ||||
| import org.apache.poi.xssf.usermodel.*; | ||||
| 
 | ||||
| import java.io.*; | ||||
| import java.util.Iterator; | ||||
| import java.util.List; | ||||
| 
 | ||||
| public class Utils { | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * #合并多个excel文件 | ||||
|      * @param fileLists excel文件路径 | ||||
|      * @param path 目标文件保存目录 | ||||
|      * @param fileName 目标文件名称 | ||||
|      */ | ||||
|     public static void mergeExcel(List<String> fileLists, String path, String fileName) { | ||||
|         // 创建新的excel工作簿 | ||||
|         XSSFWorkbook newExcelWorkBook = new XSSFWorkbook(); | ||||
|         // 遍历需要合并的excel文件 | ||||
|         for (String excelName : fileLists) { | ||||
|             try (InputStream in = new FileInputStream(excelName)) { | ||||
|                 // 创建工作簿 | ||||
|                 XSSFWorkbook tmpWorkBook = new XSSFWorkbook(in); | ||||
|                 // 获取工作簿中的Sheet个数 | ||||
|                 int len = tmpWorkBook.getNumberOfSheets(); | ||||
|                 if (len <= 1) { | ||||
|                     XSSFSheet tmpSheet = tmpWorkBook.getSheetAt(0); | ||||
|                     XSSFSheet newExcelSheet = newExcelWorkBook.createSheet(tmpSheet.getSheetName()); | ||||
|                     // 复制sheet内容 | ||||
|                     copyExcelSheet(newExcelWorkBook, tmpSheet, newExcelSheet); | ||||
|                 } else { | ||||
|                     for (int i = 0; i < len; i++) { | ||||
|                         XSSFSheet tmpSheet = tmpWorkBook.getSheetAt(i); | ||||
|                         XSSFSheet newExcelSheet = newExcelWorkBook.createSheet(tmpSheet.getSheetName()); | ||||
|                         // 复制sheet内容 | ||||
|                         copyExcelSheet(newExcelWorkBook, tmpSheet, newExcelSheet); | ||||
|                     } | ||||
|                 } | ||||
|                 // 关闭tmpWorkBook工作簿 | ||||
|                 tmpWorkBook.close(); | ||||
|             } catch (IOException e) { | ||||
|                 e.printStackTrace(); | ||||
|             } | ||||
|         } | ||||
|         // 新生成的excel文件 | ||||
|         if (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls")) { | ||||
|             fileName += ".xlsx"; | ||||
|         } | ||||
|         String excelFileName = path + File.separator + fileName; | ||||
|         // 判断文件是否存在 | ||||
|         File excelFile = new File(excelFileName); | ||||
|         if (excelFile.exists()) { | ||||
|             // 存在则删除 | ||||
|             excelFile.delete(); | ||||
|         } | ||||
|         // 使用输出流写出 | ||||
|         try (FileOutputStream fos = new FileOutputStream(excelFileName)) { | ||||
|             newExcelWorkBook.write(fos); | ||||
|             fos.flush(); | ||||
|         } catch (IOException e) { | ||||
|             e.printStackTrace(); | ||||
|         } finally { | ||||
|             try { | ||||
|                 newExcelWorkBook.close(); | ||||
|             } catch (IOException e) { | ||||
|                 e.printStackTrace(); | ||||
|             } | ||||
|         } | ||||
|         System.out.println("excel文件合并成功,合并后文件路径:" + excelFileName); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * #复制sheet到新的excel文件中 | ||||
|      * @param workbook excel工作簿 | ||||
|      * @param tmpSheet 来源sheet | ||||
|      * @param newExcelSheet 新生成的sheet | ||||
|      */ | ||||
|     public static void copyExcelSheet(XSSFWorkbook workbook, XSSFSheet tmpSheet, XSSFSheet newExcelSheet) { | ||||
|         // 合并单元格 | ||||
|         mergeSheetAllRegion(tmpSheet, newExcelSheet); | ||||
|         // 设置单元格列宽度 | ||||
|         // 获取最后一个单元格位置 | ||||
|         if (tmpSheet.getRow(tmpSheet.getFirstRowNum())==null){ | ||||
| 
 | ||||
|         }else { | ||||
|             int len = tmpSheet.getRow(tmpSheet.getFirstRowNum()).getLastCellNum(); | ||||
|             for (int i = 0; i < len; i++) { | ||||
|                 newExcelSheet.setColumnWidth(i, tmpSheet.getColumnWidth(i)); | ||||
|             } | ||||
|             // 复制每行内容 | ||||
|             Iterator<Row> it = tmpSheet.iterator(); | ||||
|             while (it.hasNext()) { | ||||
|                 XSSFRow tmpRow = (XSSFRow) it.next(); | ||||
|                 // 创建新行 | ||||
|                 XSSFRow newExcelRow = newExcelSheet.createRow(tmpRow.getRowNum()); | ||||
|                 // 复制行 | ||||
|                 copyExcelRow(workbook, tmpRow, newExcelRow); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * #合并单元格 | ||||
|      * @param tmpSheet 来源sheet | ||||
|      * @param newExcelSheet 目标sheet | ||||
|      */ | ||||
|     private static void mergeSheetAllRegion(XSSFSheet tmpSheet, XSSFSheet newExcelSheet) { | ||||
|         int num = tmpSheet.getNumMergedRegions(); | ||||
|         CellRangeAddress cellRange = null; | ||||
|         for (int i = 0; i < num; i++) { | ||||
|             cellRange = tmpSheet.getMergedRegion(i); | ||||
|             newExcelSheet.addMergedRegion(cellRange); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * #复制excel中的行到新的sheet中 | ||||
|      * @param workbook 目标工作簿 | ||||
|      * @param tmpRow 来源excel行 | ||||
|      * @param newExcelRow 目标excel行 | ||||
|      */ | ||||
|     public static void copyExcelRow(XSSFWorkbook workbook, XSSFRow tmpRow, XSSFRow newExcelRow) { | ||||
|         // 设置行高 | ||||
|         newExcelRow.setHeight(tmpRow.getHeight()); | ||||
|         // 获取所有列 | ||||
|         Iterator<Cell> it = tmpRow.cellIterator(); | ||||
|         while (it.hasNext()) { | ||||
|             XSSFCell tmpCell = (XSSFCell) it.next(); | ||||
|             // 创建单元格 | ||||
|             XSSFCell newExcelCell = newExcelRow.createCell(tmpCell.getColumnIndex()); | ||||
|             // 复制单元格 | ||||
|             copyExcelCell(workbook, tmpCell, newExcelCell); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * #复制单元格 | ||||
|      * @param workbook 目标工作簿 | ||||
|      * @param tmpCell 来源excel单元格 | ||||
|      * @param newExcelCell 目标excel单元格 | ||||
|      */ | ||||
|     public static void copyExcelCell(XSSFWorkbook workbook, XSSFCell tmpCell, XSSFCell newExcelCell) { | ||||
|         XSSFCellStyle newExcelStyle = workbook.createCellStyle(); | ||||
|         // 复制单元格样式 | ||||
|         newExcelStyle.cloneStyleFrom(tmpCell.getCellStyle()); | ||||
|         // 单元格样式 | ||||
|         newExcelCell.setCellStyle(newExcelStyle); | ||||
|         if (tmpCell.getCellComment() != null) { | ||||
|             newExcelCell.setCellComment(tmpCell.getCellComment()); | ||||
|         } | ||||
|         // 不同数据类型处理 | ||||
|         CellType tmpCellType = CellType.forInt(tmpCell.getCellType()); | ||||
| 
 | ||||
|         newExcelCell.setCellType(tmpCellType); | ||||
|         if (tmpCellType == CellType.NUMERIC) { | ||||
|             if (DateUtil.isCellDateFormatted(tmpCell)) { | ||||
|                 newExcelCell.setCellValue(tmpCell.getDateCellValue()); | ||||
|             } else { | ||||
|                 newExcelCell.setCellValue(tmpCell.getNumericCellValue()); | ||||
|             } | ||||
|         } else if (tmpCellType == CellType.STRING) { | ||||
|             newExcelCell.setCellValue(tmpCell.getRichStringCellValue()); | ||||
|         } else if (tmpCellType == CellType.BLANK) { | ||||
|         } else if (tmpCellType == CellType.BOOLEAN) { | ||||
|             newExcelCell.setCellValue(tmpCell.getBooleanCellValue()); | ||||
|         } else if (tmpCellType == CellType.ERROR) { | ||||
|             newExcelCell.setCellErrorValue(tmpCell.getErrorCellValue()); | ||||
|         } else if (tmpCellType == CellType.FORMULA) { | ||||
|             newExcelCell.setCellFormula(tmpCell.getCellFormula()); | ||||
|         } else { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
| @ -0,0 +1,548 @@ | ||||
| package com.awspaas.user.bpa.webapi; | ||||
| 
 | ||||
| import com.actionsoft.bpms.bo.engine.BO; | ||||
| import com.actionsoft.bpms.commons.database.RowMap; | ||||
| import com.actionsoft.bpms.org.model.UserModel; | ||||
| import com.actionsoft.bpms.server.UserContext; | ||||
| import com.actionsoft.bpms.server.bind.annotation.Controller; | ||||
| import com.actionsoft.bpms.server.bind.annotation.HandlerType; | ||||
| import com.actionsoft.bpms.server.bind.annotation.Param; | ||||
| import com.actionsoft.bpms.util.DBSql; | ||||
| import com.actionsoft.bpms.util.UtilString; | ||||
| import com.actionsoft.sdk.local.SDK; | ||||
| import com.alibaba.fastjson.JSON; | ||||
| import com.alibaba.fastjson.JSONArray; | ||||
| import com.alibaba.fastjson.JSONObject; | ||||
| import com.awspaas.user.bpa.util.UtilUrls; | ||||
| import org.dom4j.Document; | ||||
| import org.dom4j.DocumentException; | ||||
| import org.dom4j.DocumentHelper; | ||||
| import org.dom4j.Element; | ||||
| 
 | ||||
| import javax.ws.rs.GET; | ||||
| import javax.ws.rs.POST; | ||||
| import javax.ws.rs.Path; | ||||
| import java.text.ParseException; | ||||
| import java.text.SimpleDateFormat; | ||||
| import java.util.Date; | ||||
| import java.util.LinkedHashMap; | ||||
| import java.util.LinkedList; | ||||
| import java.util.List; | ||||
| 
 | ||||
| 
 | ||||
| @Controller(type = HandlerType.RESTFUL, apiName = "workfolwapi", desc = "伊利新版BPA接口") | ||||
| @Path("/workfolw") | ||||
| public class WorkFlowAPI { | ||||
| 
 | ||||
|     @GET | ||||
|     public String sayHello() { | ||||
|         return "hello,world! - get请求"; | ||||
|     } | ||||
| 
 | ||||
|     @POST | ||||
|     public String sayHelloPost() { | ||||
|         return "hello,world!- post请求"; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     /** | ||||
|      * 这个是传流程结束的json数据的 | ||||
|      * @return  activiti流程信息 | ||||
|      * @throws DocumentException | ||||
|      * @throws ParseException | ||||
|      */ | ||||
|     @Path("/process/endprocess") | ||||
|     @GET | ||||
|     public String   getEndProcess( | ||||
|                                   @Param String starttime, | ||||
|                                   @Param String endtime) throws DocumentException, ParseException { | ||||
|         JSONArray jsonArray_new = new JSONArray(new LinkedList<>()); | ||||
|         JSONObject results = new JSONObject(new LinkedHashMap<>()); | ||||
|         System.out.println("这里是end_process流程的伊利OA数据"); | ||||
| 
 | ||||
| 
 | ||||
|         //List<BO> bo_eu_oa_process = SDK.getBOAPI().query("BO_EU_MODEL", true).list(); | ||||
|         List<RowMap> maps = DBSql.getMaps("select * from APP_ACT_BPAD_P_VER_ACTIVITY  where ID = '124'  order by CAST(EXT1 as int) asc"); | ||||
|         int q=0; | ||||
|         for (RowMap bos:maps | ||||
|         ) { | ||||
|             if (q<=maps.size()){ | ||||
| 
 | ||||
|                 JSONObject jsonObject = new JSONObject(new LinkedHashMap()); | ||||
|                 String soap_page = SDK.getAppAPI().getProperty("com.awspaas.user.apps.performance_indicator_library", "soap_page");//这里是获取配置的SOAP接口传的多少页,如果3500左右不够可以自行往上增加 | ||||
| 
 | ||||
| 
 | ||||
|                 int size = Integer.valueOf(soap_page); | ||||
| 
 | ||||
|                 for (int j = 1; j < size; j++) { | ||||
| 
 | ||||
|                     int tale = Integer.valueOf(bos.getString("ID").trim()); | ||||
| 
 | ||||
|                     jsonObject.put("workflowId", tale); | ||||
|                     //   jsonObject.put("workflowId",bo.getString("WORKFLOWID")); | ||||
|                     //jsonObject.put("createDateStart","2019-07-01 00:00:00");//SDK.getORGAPI().getDepartmentByUser(processExecutionContext.getProcessInstance().getCreateUser()).getNo() | ||||
|                     //jsonObject.put("createDateEnd","2023-09-01 00:00:00");//processExecutionContext.getProcessInstance().getCreateUser() | ||||
|                     jsonObject.put("pageIndex", j); | ||||
|                     jsonObject.put("pageSize", 1000); | ||||
|                     String xmlStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"webservices.services.weaver.com.cn\">\n" + | ||||
|                             "   <soapenv:Header/>" + | ||||
|                             "   <soapenv:Body>" + | ||||
|                             "      <web:getFlowListByWfId>" + | ||||
|                             "         <web:in0>" + | ||||
|                             "" + jsonObject + "" + | ||||
|                             "         </web:in0>" + | ||||
|                             "      </web:getFlowListByWfId>" + | ||||
|                             "   </soapenv:Body>" + | ||||
|                             "</soapenv:Envelope>"; | ||||
| 
 | ||||
|                     System.out.println("参数===============" + xmlStr); | ||||
|                     //System.out.println("参数==============="+xmls); | ||||
|                     //HttpClientUtil httpClientUtil = new HttpClientUtil(); | ||||
|                     int timeout = 600000; | ||||
|                     // HttpURLConnection 发送SOAP请求 | ||||
|                     System.out.println("HttpURLConnection 发送SOAP请求"); | ||||
| 
 | ||||
|                     String postSoap = UtilUrls.doPostSoap("http://10.119.22.207:80/services/WorkflowService", xmlStr, ""); | ||||
| 
 | ||||
| 
 | ||||
|                     Document document = DocumentHelper.parseText(postSoap); | ||||
|                     Element rootElement = document.getRootElement(); | ||||
|                     // System.out.println("rootElement>>>>>>"+rootElement); | ||||
|                     Element result = rootElement.element("Body").element("getFlowListByWfIdResponse").element("out"); | ||||
|                     String resultString = result.getData().toString(); | ||||
|                       System.out.println("resultString=>>>>>>>>>>"+resultString); | ||||
|                     //if (!StringUtils.isEmpty(resultString)){ | ||||
|                     JSONObject jsonObject1 = JSON.parseObject(resultString); | ||||
|                     String datas = jsonObject1.getString("datas"); | ||||
|                     JSONArray jsonArray = JSONArray.parseArray(datas); | ||||
|                     if (jsonArray != null && jsonArray.size() != 0) { | ||||
|                         for (int i = 0; i < jsonArray.size(); i++) { | ||||
|                             // JSONObject.parseObject(jsonArray.get(i).toString()).get("requestId") | ||||
|                             JSONObject end_process = new JSONObject(new LinkedHashMap<>()); | ||||
|                             end_process.put("processinstid", JSONObject.parseObject(jsonArray.get(i).toString()).get("requestId").toString().trim());//流程实例id | ||||
|                             end_process.put("processdefid", JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId").toString().trim());//流程定义id | ||||
|                             RowMap workflowId = DBSql.getMap("select * from APP_ACT_BPAD_P_VER_ACTIVITY where ID = '" + JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId") + "'"); | ||||
|                             if (workflowId.getString("PROCESSVERSION") != null) { | ||||
|                                 end_process.put("processdefverid", workflowId.getString("VERSION"));//流程版本定义 | ||||
|                             } else { | ||||
|                                 end_process.put("processdefverid", "1"); | ||||
|                             } | ||||
|                             end_process.put("starttime", JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate"));//开始时间 | ||||
|                             end_process.put("endtime", JSONObject.parseObject(jsonArray.get(i).toString()).get("receiveDate"));//结束时间 | ||||
|                             end_process.put("createtime", JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate"));//创建时间 | ||||
| 
 | ||||
| 
 | ||||
|                             UserModel operatorWorkCode = SDK.getORGAPI().getUser(JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode").toString()); | ||||
|                             if (operatorWorkCode != null) { | ||||
|                                 end_process.put("createuser", JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode"));//创建人 | ||||
|                                 UserContext userContext = UserContext.fromUID(JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode").toString()); | ||||
|                                 end_process.put("createuserorgid", userContext.getCompanyModel().getId());//公司id | ||||
|                                 end_process.put("createuserdeptid", userContext.getDepartmentModel().getId());//部门id | ||||
|                                 end_process.put("createuserroleid", userContext.getRoleModel().getId());//角色id | ||||
|                             } else { | ||||
|                                 end_process.put("createuser", "admin");//创建人 | ||||
|                                 UserContext userContext = UserContext.fromUID("admin"); | ||||
|                                 end_process.put("createuserorgid", userContext.getCompanyModel().getId());//公司id | ||||
|                                 end_process.put("createuserdeptid", userContext.getDepartmentModel().getId());//部门id | ||||
|                                 end_process.put("createuserroleid", userContext.getRoleModel().getId());//角色id | ||||
|                             } | ||||
| 
 | ||||
|                             end_process.put("controlstate", JSONObject.parseObject(jsonArray.get(i).toString()).get("status")); | ||||
|                             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | ||||
|                             Date beginDate = sdf.parse(JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate").toString()); | ||||
|                             if (UtilString.isNotEmpty(JSONObject.parseObject(jsonArray.get(i).toString()).get("receiveDate").toString())) { | ||||
|                                 Date endDate = sdf.parse(JSONObject.parseObject(jsonArray.get(i).toString()).get("receiveDate").toString()); | ||||
|                                 long dates = (endDate.getTime() - beginDate.getTime()) / (1000 * 60); | ||||
|                                 end_process.put("executecosttime", dates);//开始时间-结束时间如果结束时间为空,则这个时间也为空 | ||||
|                             } else { | ||||
|                                 end_process.put("executecosttime", "");//开始时间-结束时间如果结束时间为空,则这个时间也为空 | ||||
|                             } | ||||
|                             end_process.put("timedur", ""); | ||||
|                             end_process.put("warningtimedur", ""); | ||||
|                             jsonArray_new.add(end_process); | ||||
|                         } | ||||
|                     } else { | ||||
|                         break; | ||||
|                     } | ||||
| 
 | ||||
|                 } | ||||
|             }else { | ||||
|                 break; | ||||
|             } | ||||
|             q++; | ||||
|         } | ||||
|         System.out.println("jsonArray_new.toString()>>>>>>>>>>>>>"+jsonArray_new.toString()); | ||||
|         return jsonArray_new.toString(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * 2.这里是传开始流程的startprocess的json数据的 | ||||
|      * @return   开始流程 | ||||
|      * @throws DocumentException | ||||
|      * @throws ParseException | ||||
|      */ | ||||
| 
 | ||||
|     @Path("/process/startprocess") | ||||
|     @GET | ||||
|     public String getStartProcess( | ||||
|                                   @Param String starttime, | ||||
|                                   @Param String endtime) throws DocumentException, ParseException { | ||||
|         System.out.println("这里是开始流程的接口数据传递"); | ||||
|         JSONArray jsonArray_new = new JSONArray(new LinkedList<>()); | ||||
|         JSONObject results = new JSONObject(new LinkedHashMap<>()); | ||||
|         List<RowMap> maps = DBSql.getMaps("select * from APP_ACT_BPAD_P_VER_ACTIVITY  where ID = '124'  order by CAST(EXT1 as int) asc"); | ||||
|         int q = 0; | ||||
|         for (RowMap bos:maps | ||||
|         ) { | ||||
|             if (q<=maps.size()){ | ||||
| 
 | ||||
|                 JSONObject jsonObject = new JSONObject(new LinkedHashMap()); | ||||
|                 String soap_page = SDK.getAppAPI().getProperty("com.awspaas.user.apps.performance_indicator_library", "soap_page");//这里是获取配置的SOAP接口传的多少页,如果3500左右不够可以自行往上增加 | ||||
| 
 | ||||
| 
 | ||||
|                 int size = Integer.valueOf(soap_page); | ||||
| 
 | ||||
|                 for (int j = 1; j < size; j++) { | ||||
| 
 | ||||
|                     int tale = Integer.valueOf(bos.getString("ID").trim()); | ||||
|                     BO  bo = new BO(); | ||||
|                     UserContext userContexts = UserContext.fromUID("admin"); | ||||
|                     bo.set("WORKID",bos.getString("ID")); | ||||
|                     SDK.getBOAPI().createDataBO("BO_EU_TEST2",bo,userContexts); | ||||
|                     jsonObject.put("workflowId", tale); | ||||
|                     //   jsonObject.put("workflowId",bo.getString("WORKFLOWID")); | ||||
|                     //jsonObject.put("createDateStart","2019-07-01 00:00:00");//SDK.getORGAPI().getDepartmentByUser(processExecutionContext.getProcessInstance().getCreateUser()).getNo() | ||||
|                     //jsonObject.put("createDateEnd","2023-09-01 00:00:00");//processExecutionContext.getProcessInstance().getCreateUser() | ||||
|                     jsonObject.put("pageIndex", j); | ||||
|                     jsonObject.put("pageSize", 1000); | ||||
|                     String xmlStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"webservices.services.weaver.com.cn\">\n" + | ||||
|                             "   <soapenv:Header/>" + | ||||
|                             "   <soapenv:Body>" + | ||||
|                             "      <web:getFlowListByWfId>" + | ||||
|                             "         <web:in0>" + | ||||
|                             "" + jsonObject + "" + | ||||
|                             "         </web:in0>" + | ||||
|                             "      </web:getFlowListByWfId>" + | ||||
|                             "   </soapenv:Body>" + | ||||
|                             "</soapenv:Envelope>"; | ||||
| 
 | ||||
|                     System.out.println("参数===============" + xmlStr); | ||||
|                     //System.out.println("参数==============="+xmls); | ||||
|                     //HttpClientUtil httpClientUtil = new HttpClientUtil(); | ||||
|                     int timeout = 600000; | ||||
|                     // HttpURLConnection 发送SOAP请求 | ||||
|                     System.out.println("HttpURLConnection 发送SOAP请求"); | ||||
| 
 | ||||
|                     String postSoap = UtilUrls.doPostSoap("http://10.119.22.207:80/services/WorkflowService", xmlStr, ""); | ||||
| 
 | ||||
| 
 | ||||
|                     Document document = DocumentHelper.parseText(postSoap); | ||||
|                     Element rootElement = document.getRootElement(); | ||||
|                     // System.out.println("rootElement>>>>>>"+rootElement); | ||||
|                     Element result = rootElement.element("Body").element("getFlowListByWfIdResponse").element("out"); | ||||
|                     String resultString = result.getData().toString(); | ||||
|                       System.out.println("resultString=>>>>>>>>>>"+resultString); | ||||
|                     //if (!StringUtils.isEmpty(resultString)){ | ||||
|                     JSONObject jsonObject1 = JSON.parseObject(resultString); | ||||
|                     String datas = jsonObject1.getString("datas"); | ||||
|                     JSONArray jsonArray = JSONArray.parseArray(datas); | ||||
|                     if (jsonArray != null && jsonArray.size() != 0) { | ||||
|                         for (int i = 0; i < jsonArray.size(); i++) { | ||||
|                             // JSONObject.parseObject(jsonArray.get(i).toString()).get("requestId") | ||||
|                             JSONObject start_process = new JSONObject(new LinkedHashMap<>()); | ||||
|                             start_process.put("processinstid", JSONObject.parseObject(jsonArray.get(i).toString()).get("requestId"));//流程实例id | ||||
|                             start_process.put("processdefid", JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId"));//流程定义id | ||||
|                             RowMap workflowId = DBSql.getMap("select * from APP_ACT_BPAD_P_VER_ACTIVITY where ID = '" + JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId") + "'"); | ||||
|                             if (workflowId != null) { | ||||
|                                 start_process.put("processdefverid", workflowId.getString("PROCESSVERSION"));//流程版本定义 | ||||
|                             } else { | ||||
|                                 start_process.put("processdefverid", "1"); | ||||
|                             } | ||||
|                             start_process.put("starttime", JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate"));//开始时间 | ||||
|                             start_process.put("createtime", JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate"));//创建时间 | ||||
|                             UserModel operatorWorkCode = SDK.getORGAPI().getUser(JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode").toString()); | ||||
|                             if (operatorWorkCode != null) { | ||||
|                                 start_process.put("createuser", JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode"));//创建人 | ||||
|                                 UserContext userContext = UserContext.fromUID(JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode").toString()); | ||||
|                                 start_process.put("createuserorgid", userContext.getCompanyModel().getId());//公司id | ||||
|                                 start_process.put("createuserdeptid", userContext.getDepartmentModel().getId());//部门id | ||||
|                                 start_process.put("createuserroleid", userContext.getRoleModel().getId());//角色id | ||||
|                             } else { | ||||
|                                 start_process.put("createuser", "admin");//创建人 | ||||
|                                 UserContext userContext = UserContext.fromUID("admin"); | ||||
|                                 start_process.put("createuserorgid", userContext.getCompanyModel().getId());//公司id | ||||
|                                 start_process.put("createuserdeptid", userContext.getDepartmentModel().getId());//部门id | ||||
|                                 start_process.put("createuserroleid", userContext.getRoleModel().getId());//角色id | ||||
|                             } | ||||
|                             start_process.put("timedur", ""); | ||||
|                             start_process.put("warningtimedur", ""); | ||||
|                             start_process.put("controlstate", JSONObject.parseObject(jsonArray.get(i).toString()).get("status")); | ||||
|                             jsonArray_new.add(start_process); | ||||
|                         } | ||||
|                     } else { | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|             }else { | ||||
|                 break; | ||||
|             } | ||||
|             q++; | ||||
|         } | ||||
|         System.out.println("jsonArray_new.toString()>>>>>>>>>>>>>"+jsonArray_new.toString()); | ||||
|         return jsonArray_new.toString(); | ||||
|     } | ||||
| 
 | ||||
|     @Path("/task/startTask") | ||||
|     @GET | ||||
|     public String getStartTask( | ||||
|                                @Param String starttime, | ||||
|                                @Param String endtime) throws DocumentException { | ||||
|         System.out.println("开始任务数据对应的json数据"); | ||||
|         JSONArray jsonArray_new = new JSONArray(new LinkedList<>()); | ||||
|         JSONObject results = new JSONObject(new LinkedHashMap<>()); | ||||
|         List<RowMap> maps = DBSql.getMaps("select * from APP_ACT_BPAD_P_VER_ACTIVITY  where ID = '124'  order by CAST(EXT1 as int) asc"); | ||||
|         int q=0; | ||||
|         for (RowMap bos:maps | ||||
|         ) { | ||||
|             if (q<=maps.size()){ | ||||
| 
 | ||||
|                 JSONObject jsonObject = new JSONObject(new LinkedHashMap()); | ||||
|                 String soap_page = SDK.getAppAPI().getProperty("com.awspaas.user.apps.performance_indicator_library", "soap_page");//这里是获取配置的SOAP接口传的多少页,如果3500左右不够可以自行往上增加 | ||||
| 
 | ||||
| 
 | ||||
|                 int size = Integer.valueOf(soap_page); | ||||
| 
 | ||||
|                 for (int j = 1; j < size; j++) { | ||||
| 
 | ||||
|                     int tale = Integer.valueOf(bos.getString("ID").trim()); | ||||
| 
 | ||||
|                     jsonObject.put("workflowId", tale); | ||||
|                     //   jsonObject.put("workflowId",bo.getString("WORKFLOWID")); | ||||
|                     //jsonObject.put("createDateStart","2019-07-01 00:00:00");//SDK.getORGAPI().getDepartmentByUser(processExecutionContext.getProcessInstance().getCreateUser()).getNo() | ||||
|                     //jsonObject.put("createDateEnd","2023-09-01 00:00:00");//processExecutionContext.getProcessInstance().getCreateUser() | ||||
|                     jsonObject.put("pageIndex", j); | ||||
|                     jsonObject.put("pageSize", 1000); | ||||
|                     String xmlStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"webservices.services.weaver.com.cn\">\n" + | ||||
|                             "   <soapenv:Header/>" + | ||||
|                             "   <soapenv:Body>" + | ||||
|                             "      <web:getFlowListByWfId>" + | ||||
|                             "         <web:in0>" + | ||||
|                             "" + jsonObject + "" + | ||||
|                             "         </web:in0>" + | ||||
|                             "      </web:getFlowListByWfId>" + | ||||
|                             "   </soapenv:Body>" + | ||||
|                             "</soapenv:Envelope>"; | ||||
| 
 | ||||
|                     System.out.println("参数===============" + xmlStr); | ||||
|                     //System.out.println("参数==============="+xmls); | ||||
|                     //HttpClientUtil httpClientUtil = new HttpClientUtil(); | ||||
|                     int timeout = 600000; | ||||
|                     // HttpURLConnection 发送SOAP请求 | ||||
|                     System.out.println("HttpURLConnection 发送SOAP请求"); | ||||
| 
 | ||||
|                     String postSoap = UtilUrls.doPostSoap("http://10.119.22.207:80/services/WorkflowService", xmlStr, ""); | ||||
| 
 | ||||
| 
 | ||||
|                     Document document = DocumentHelper.parseText(postSoap); | ||||
|                     Element rootElement = document.getRootElement(); | ||||
|                     // System.out.println("rootElement>>>>>>"+rootElement); | ||||
|                     Element result = rootElement.element("Body").element("getFlowListByWfIdResponse").element("out"); | ||||
|                     String resultString = result.getData().toString(); | ||||
|                       System.out.println("resultString=>>>>>>>>>>"+resultString); | ||||
|                     //if (!StringUtils.isEmpty(resultString)){ | ||||
|                     JSONObject jsonObject1 = JSON.parseObject(resultString); | ||||
|                     String datas = jsonObject1.getString("datas"); | ||||
|                     JSONArray jsonArray = JSONArray.parseArray(datas); | ||||
|                     if (jsonArray != null && jsonArray.size() != 0) { | ||||
|                         for (int i = 0; i < jsonArray.size(); i++) { | ||||
|                             // JSONObject.parseObject(jsonArray.get(i).toString()).get("requestId") | ||||
|                             JSONObject start_task = new JSONObject(new LinkedHashMap<>()); | ||||
|                             start_task.put("taskinstid", JSONObject.parseObject(jsonArray.get(i).toString()).get("id"));//流程实例id | ||||
|                             start_task.put("processdefid", JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId"));//流程定义id | ||||
|                             RowMap workflowId = DBSql.getMap("select * from APP_ACT_BPAD_P_VER_ACTIVITY where ID = '" + JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId") + "'"); | ||||
|                             if (workflowId.getString("PROCESSVERSION") != null) { | ||||
|                                 start_task.put("processdefverid", workflowId.getString("PROCESSVERSION"));//流程版本定义 | ||||
|                             } else { | ||||
|                                 start_task.put("processdefverid", "1"); | ||||
|                             } | ||||
|                             start_task.put("processinstid", JSONObject.parseObject(jsonArray.get(i).toString()).get("requestId")); | ||||
|                             start_task.put("state", JSONObject.parseObject(jsonArray.get(i).toString()).get("status")); | ||||
|                             start_task.put("begintime", JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate"));//开始时间 | ||||
|                             UserModel operatorWorkCode = SDK.getORGAPI().getUser(JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode").toString()); | ||||
|                             if (operatorWorkCode != null) { | ||||
|                                 start_task.put("createuser", JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode"));//创建人 | ||||
|                                 UserContext userContext = UserContext.fromUID(JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode").toString()); | ||||
|                                 start_task.put("createuserorgid", userContext.getCompanyModel().getId());//公司id | ||||
|                                 start_task.put("createuserdeptid", userContext.getDepartmentModel().getId());//部门id | ||||
|                                 start_task.put("createuserroleid", userContext.getRoleModel().getId());//角色id | ||||
|                             } else { | ||||
|                                 start_task.put("createuser", "admin");//创建人 | ||||
|                                 UserContext userContext = UserContext.fromUID("admin"); | ||||
|                                 start_task.put("createuserorgid", userContext.getCompanyModel().getId());//公司id | ||||
|                                 start_task.put("createuserdeptid", userContext.getDepartmentModel().getId());//部门id | ||||
|                                 start_task.put("createuserroleid", userContext.getRoleModel().getId());//角色id | ||||
|                             } | ||||
| 
 | ||||
|                             start_task.put("activitydefid", JSONObject.parseObject(jsonArray.get(i).toString()).get("nodeid"));//角色id | ||||
|                             start_task.put("timedur", ""); | ||||
|                             start_task.put("warningtimedur", ""); | ||||
|                             start_task.put("createtime", JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate")); | ||||
|                             jsonArray_new.add(start_task); | ||||
|                         } | ||||
|                     } else { | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|             }else { | ||||
|                 break; | ||||
|             } | ||||
|             q++; | ||||
|         } | ||||
|         System.out.println("jsonArray_new.toString()>>>>>>>>>>>>>"+jsonArray_new.toString()); | ||||
|         return jsonArray_new.toString(); | ||||
|     } | ||||
| 
 | ||||
|     @Path("/task/endTask") | ||||
|     /** | ||||
|      *  structFieldList.add(DataTypes.createStructField("activitydefid", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("executecosttime", DataTypes.LongType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("processdefverid", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("processdefid", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("processinstid", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("taskinstid", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("actionname", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("state", DataTypes.IntegerType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("timedur", DataTypes.LongType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("warningtimedur", DataTypes.LongType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("begintime", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("endtime", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("createuser", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("createuserorgid", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("createuserdeptid", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("createuserroleid", DataTypes.StringType, true)); | ||||
|      *         structFieldList.add(DataTypes.createStructField("createtime", DataTypes.TimestampType, true)); | ||||
|      */ | ||||
|     @GET | ||||
|     public String getEndTask( | ||||
|                              @Param String starttime, | ||||
|                              @Param String endtime) throws DocumentException, ParseException { | ||||
|         System.out.println("结束任务开始获取数据"); | ||||
|         JSONArray jsonArray_new = new JSONArray(new LinkedList<>()); | ||||
|         JSONObject results = new JSONObject(new LinkedHashMap<>()); | ||||
|         List<RowMap> maps = DBSql.getMaps("select * from APP_ACT_BPAD_P_VER_ACTIVITY where ID = '124'  order by CAST(EXT1 as int) asc"); | ||||
|         int q=0; | ||||
|         for (RowMap bos:maps | ||||
|         ) { | ||||
|             if (q<=maps.size()){ | ||||
| 
 | ||||
|                 JSONObject jsonObject = new JSONObject(new LinkedHashMap()); | ||||
|                 String soap_page = SDK.getAppAPI().getProperty("com.awspaas.user.apps.performance_indicator_library", "soap_page");//这里是获取配置的SOAP接口传的多少页,如果3500左右不够可以自行往上增加 | ||||
| 
 | ||||
|                 int size = Integer.valueOf(soap_page); | ||||
| 
 | ||||
|                 for (int j = 1; j < size; j++) { | ||||
| 
 | ||||
|                     int tale = Integer.valueOf(bos.getString("ID").trim()); | ||||
| 
 | ||||
|                     jsonObject.put("workflowId", tale); | ||||
|                     //   jsonObject.put("workflowId",bo.getString("WORKFLOWID")); | ||||
|                     //jsonObject.put("createDateStart","2019-07-01 00:00:00");//SDK.getORGAPI().getDepartmentByUser(processExecutionContext.getProcessInstance().getCreateUser()).getNo() | ||||
|                     //jsonObject.put("createDateEnd","2023-09-01 00:00:00");//processExecutionContext.getProcessInstance().getCreateUser() | ||||
|                     jsonObject.put("pageIndex", j); | ||||
|                     jsonObject.put("pageSize", 1000); | ||||
|                     String xmlStr = "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"webservices.services.weaver.com.cn\">\n" + | ||||
|                             "   <soapenv:Header/>" + | ||||
|                             "   <soapenv:Body>" + | ||||
|                             "      <web:getFlowListByWfId>" + | ||||
|                             "         <web:in0>" + | ||||
|                             "" + jsonObject + "" + | ||||
|                             "         </web:in0>" + | ||||
|                             "      </web:getFlowListByWfId>" + | ||||
|                             "   </soapenv:Body>" + | ||||
|                             "</soapenv:Envelope>"; | ||||
| 
 | ||||
|                     System.out.println("参数===============" + xmlStr); | ||||
|                     //System.out.println("参数==============="+xmls); | ||||
|                     //HttpClientUtil httpClientUtil = new HttpClientUtil(); | ||||
|                     int timeout = 600000; | ||||
|                     // HttpURLConnection 发送SOAP请求 | ||||
|                     System.out.println("HttpURLConnection 发送SOAP请求"); | ||||
| 
 | ||||
|                     String postSoap = UtilUrls.doPostSoap("http://10.119.22.207:80/services/WorkflowService", xmlStr, ""); | ||||
| 
 | ||||
| 
 | ||||
|                     Document document = DocumentHelper.parseText(postSoap); | ||||
|                     Element rootElement = document.getRootElement(); | ||||
|                     // System.out.println("rootElement>>>>>>"+rootElement); | ||||
|                     Element result = rootElement.element("Body").element("getFlowListByWfIdResponse").element("out"); | ||||
|                     String resultString = result.getData().toString(); | ||||
|                       System.out.println("resultString=>>>>>>>>>>"+resultString); | ||||
|                     //if (!StringUtils.isEmpty(resultString)){ | ||||
|                     JSONObject jsonObject1 = JSON.parseObject(resultString); | ||||
|                     String datas = jsonObject1.getString("datas"); | ||||
|                     JSONArray jsonArray = JSONArray.parseArray(datas); | ||||
|                     if (jsonArray != null && jsonArray.size() != 0) { | ||||
|                         for (int i = 0; i < jsonArray.size(); i++) { | ||||
|                             // JSONObject.parseObject(jsonArray.get(i).toString()).get("requestId") | ||||
|                             JSONObject end_task = new JSONObject(new LinkedHashMap<>()); | ||||
|                             end_task.put("taskinstid", JSONObject.parseObject(jsonArray.get(i).toString()).get("id"));//流程实例id | ||||
|                             end_task.put("processdefid", JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId"));//流程定义id | ||||
|                             RowMap workflowId = DBSql.getMap("select * from APP_ACT_BPAD_P_VER_ACTIVITY where ID = '" + JSONObject.parseObject(jsonArray.get(i).toString()).get("workflowId") + "'"); | ||||
|                             if (workflowId.getString("PROCESSVERSION") != null) { | ||||
|                                 end_task.put("processdefverid", workflowId.getString("VERSION"));//流程版本定义 | ||||
|                             } else { | ||||
|                                 end_task.put("processdefverid", "1"); | ||||
|                             } | ||||
|                             end_task.put("processinstid", JSONObject.parseObject(jsonArray.get(i).toString()).get("requestId")); | ||||
|                             end_task.put("state", JSONObject.parseObject(jsonArray.get(i).toString()).get("status")); | ||||
|                             end_task.put("begintime", JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate"));//开始时间 | ||||
|                             end_task.put("createuser", JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode"));//创建人 | ||||
| 
 | ||||
| 
 | ||||
|                             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | ||||
|                             Date beginDate = sdf.parse(JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate").toString()); | ||||
|                             if (UtilString.isNotEmpty(JSONObject.parseObject(jsonArray.get(i).toString()).get("receiveDate").toString())) { | ||||
|                                 Date endDate = sdf.parse(JSONObject.parseObject(jsonArray.get(i).toString()).get("receiveDate").toString()); | ||||
|                                 long dates = (endDate.getTime() - beginDate.getTime()) / (1000 * 60); | ||||
|                                 end_task.put("executecosttime", dates);//开始时间-结束时间如果结束时间为空,则这个时间也为空 | ||||
|                             } else { | ||||
|                                 end_task.put("executecosttime", "");//开始时间-结束时间如果结束时间为空,则这个时间也为空 | ||||
|                             } | ||||
| 
 | ||||
|                             end_task.put("endtime", JSONObject.parseObject(jsonArray.get(i).toString()).get("receiveDate")); | ||||
| 
 | ||||
|                             UserModel operatorWorkCode = SDK.getORGAPI().getUser(JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode").toString()); | ||||
|                             if (operatorWorkCode != null) { | ||||
|                                 UserContext userContext = UserContext.fromUID(JSONObject.parseObject(jsonArray.get(i).toString()).get("operatorWorkCode").toString()); | ||||
|                                 end_task.put("createuserorgid", userContext.getCompanyModel().getId());//公司id | ||||
|                                 end_task.put("createuserdeptid", userContext.getDepartmentModel().getId());//部门id | ||||
|                                 end_task.put("createuserroleid", userContext.getRoleModel().getId());//角色id | ||||
|                             } else { | ||||
|                                 UserContext userContext = UserContext.fromUID("admin"); | ||||
|                                 end_task.put("createuserorgid", userContext.getCompanyModel().getId());//公司id | ||||
|                                 end_task.put("createuserdeptid", userContext.getDepartmentModel().getId());//部门id | ||||
|                                 end_task.put("createuserroleid", userContext.getRoleModel().getId());//角色id | ||||
|                             } | ||||
| 
 | ||||
|                             end_task.put("activitydefid", JSONObject.parseObject(jsonArray.get(i).toString()).get("nodeid"));//角色id | ||||
|                             end_task.put("timedur", ""); | ||||
|                             end_task.put("warningtimedur", ""); | ||||
|                             end_task.put("createtime", JSONObject.parseObject(jsonArray.get(i).toString()).get("operateDate")); | ||||
|                             end_task.put("actionname", JSONObject.parseObject(jsonArray.get(i).toString()).get("operateType")); | ||||
|                             jsonArray_new.add(end_task); | ||||
|                         } | ||||
|                     } else { | ||||
|                         break; | ||||
|                     } | ||||
|                 } | ||||
|             }else { | ||||
|                 break; | ||||
|             } | ||||
|             q++; | ||||
|         } | ||||
|         System.out.println("jsonArray_new.toString()>>>>>>>>>>>>>"+jsonArray_new.toString()); | ||||
|         return jsonArray_new.toString(); | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user