// package weaver.interfaces.workflow.action.javacode; // // import cn.wps.yun.StringUtil; // import com.google.common.base.Charsets; // import com.google.common.io.ByteSource; // import com.icbc.api.internal.apache.http.impl.cookie.S; // import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; // import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; // import org.apache.commons.lang3.StringUtils; // import weaver.conn.RecordSet; // import weaver.file.ImageFileManager; // import weaver.general.Util; // // import weaver.hrm.User; // import weaver.hrm.company.DepartmentComInfo; // import weaver.interfaces.workflow.action.Action; // import weaver.general.BaseBean; // import weaver.soa.workflow.request.RequestInfo; // // import java.io.*; // import java.nio.charset.Charset; // import java.nio.charset.StandardCharsets; // import java.nio.file.Files; // import java.nio.file.Path; // import java.nio.file.Paths; // import java.text.SimpleDateFormat; // import java.time.LocalDate; // import java.time.format.DateTimeFormatter; // import java.util.*; // import java.util.zip.ZipEntry; // import java.util.zip.ZipOutputStream; // // import static java.nio.charset.StandardCharsets.UTF_8; // // /** // * Online custom action interface // */ // public class Action20231123035106 implements Action{ // private static final BaseBean bb = new BaseBean(); // private static final String postSQl = ""; // private static final String receiptSQL = ""; // // private static final String queryDocIdSql = // "select * from docimagefile docfile " + // "left join docdetail doc on docfile.DOCID = doc.ID " + // "left join imagefile file on docfile.IMAGEFILEID = file.IMAGEFILEID " + // // "left join uf_tssjb tssjb on docfile.DOCID = tssjb.wdid " + // "where (doc.docsubject like '%食品%' or doc.docsubject like '%专项%' ) "; // // private static final String dataEqualSql = "and doc.DOCCREATEDATE = ? "; // private static final String dataRangeSql = "and doc.DOCCREATEDATE >= ? and doc.DOCCREATEDATE <= ? "; // public String url = ""; // public String queryType = ""; // public String queryDate = ""; // public String startDate = ""; // public String endDate = ""; // public String deptIds = ""; // // public String userNames = ""; // public String dirPath = "/opt/weaver/scjgw"; // public String postSeccategory = ""; // public String receiptSeccategory = ""; // // // // // @Override // public String execute(RequestInfo requestInfo) { // writeLog("执行定时任务开始","PushCorn"); // writeLog("url",url); // writeLog("queryType",queryType); // writeLog("queryDate",queryDate); // writeLog("startDate",startDate); // writeLog("endDate",endDate); // writeLog("deptIds",deptIds); // // writeLog("userNames",userNames); // writeLog("dirPath",dirPath); // writeLog("postSeccategory",postSeccategory); // writeLog("receiptSeccategory",receiptSeccategory); // try { // System.setOut(new PrintStream(System.out, true, "UTF-8")); // } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // } // writeLog("new String(s.getBytes(UTF_8))",new String("通".getBytes(UTF_8))); // writeLog("new String(s.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8)", new String("通".getBytes(UTF_8), UTF_8)); // writeLog("new String(s.getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8)", new String("通".getBytes(UTF_8), Charset.forName("GBK"))); // // // // 假设 s 是 UTF-8 编码的字符串 // String s1 = "通"; // // // 将 s 从 UTF-8 转换为字节数组 // // byte[] utf8Bytes = s1.getBytes(UTF_8); // // // 将字节数组从 UTF-8 转换为 GBK // String gbkString = new String(utf8Bytes, Charset.forName("GBK")); // // // 打印日志 // writeLog("new String(s.getBytes(StandardCharsets.UTF_8), Charset.forName(\"GBK\"))", gbkString); // // // // // // // // // // // writeLog("new String(s.getBytes(UTF_8))",new String("通报".getBytes(UTF_8))); // writeLog("new String(s.getBytes(UTF_8))",new String("关于2023年天津市食品安全抽检监测任务完成情况的通报(第三期).zip".getBytes(UTF_8))); // String x= "关于2023年天津市食品安全抽检监测任务完成情况的通报(第三期).zip"; // writeLog("utf8Str===>",convertGbkToUtf8(x)); // String querySql = queryDocIdSql; // //生成人员map // final HashMap useridNamemap = new HashMap<>(); // // RecordSet recordSet = new RecordSet(); // // if (!StringUtil.isEmpty(deptIds)) { // // querySql = querySql + "and doc.docdepartmentid in (" + deptIds + " )"; // // // String[] deptids = deptIds.split(","); // // // String[] usernames = deptIds.split(","); // // // for (int i = 0; i < userids.length; i++) { // // // useridNamemap.put(userids[i],usernames[i]); // // // } // // }else { // // return; // // } // // List childNodeIds = getChildNodeIds(postSeccategory); // // childNodeIds.add(postSeccategory); // // List childNodeIds1 = getChildNodeIds(receiptSeccategory); // // childNodeIds1.add(receiptSeccategory); // // childNodeIds.addAll(childNodeIds1); // // // //添加目录 // // querySql = querySql + "and ( seccategory in ( "+ String.join(",",childNodeIds)+" ) )" ; // // //查询指定天的 // // if ("0".equals(queryType)) { // // writeLog("查询指定天的文档"); // // querySql = querySql + dataEqualSql; // // recordSet.executeQuery(querySql, queryDate); // // } else if ("1".equals(queryType)) { // // writeLog("查询指定范围的文档",startDate,endDate); // // querySql = querySql + dataRangeSql; // // recordSet.executeQuery(querySql, startDate, endDate); // // } else if ("2".equals(queryType)) { // // writeLog("查询昨天的文档"); // // querySql = querySql + dataEqualSql; // // recordSet.executeQuery(querySql, getYesterdayDateStr()); // // } // recordSet.executeQuery(querySql); // writeLog("查询sql",querySql); // writeLog("查询sql",recordSet.getExceptionMsg()); // writeLog("查询数量", recordSet.getCounts()+""); // //开始推送数据 // //检查文件夹路径 // checkAndCreateDir(); // HashMap docid_docNameMap = new HashMap<>(); // HashMap> docid_imagefilleIdMap = new HashMap<>(); // HashMap> fileinfo = new HashMap<>(); // while (recordSet.next()){ // //文档id // String docid = Util.null2String(recordSet.getString("DOCID")); // //文档标题 // String docsubject = Util.null2String(recordSet.getString("docsubject")); // //附件id // String imagefileid = Util.null2String(recordSet.getString("IMAGEFILEID")); // //文档时间 // String DOCCREATEDATE = Util.null2String(recordSet.getString("DOCCREATEDATE")); // //目录 seccategory // String seccategory = Util.null2String(recordSet.getString("seccategory")); // String DOCCREATERID = Util.null2String(recordSet.getString("DOCCREATERID")); // HashMap map = new HashMap<>(); // map.put("DOCCREATEDATE",DOCCREATEDATE); // map.put("seccategory",postSeccategory.equals(seccategory) ? "2" : "1"); // map.put("DOCCREATERID",new User(Util.getIntValue(DOCCREATERID)).getLastname() ); // docid_docNameMap.put(docid,docsubject); // fileinfo.put(docid,map); // List imagefilleIdList = docid_imagefilleIdMap.get(docid); // if (imagefilleIdList == null){ // ArrayList filleIdList = new ArrayList<>(); // filleIdList.add(imagefileid); // docid_imagefilleIdMap.put(docid,filleIdList); // }else { // imagefilleIdList.add(imagefileid); // } // } // writeLog("需要推送的文档",docid_docNameMap.toString()); // // 开始封装文件 // String DateDirFile = ""; // if(docid_docNameMap.keySet().size() > 0 ){ // // 创建今天的文件夹 // DateDirFile = checkAndCreateDir(getTodayDateStr()); // }else { // return ""; // } // String finalDateDirFile = DateDirFile; // writeLog("今天的文件目录",DateDirFile); // writeLog("docid_imagefilleIdMap",docid_imagefilleIdMap.toString()); // docid_imagefilleIdMap.forEach((docid, filleIdList)->{ // String FileDir = docid_docNameMap.get(docid); // String FileDir2 = new String(FileDir.getBytes(UTF_8)); // writeLog("编码修改前 FileDir",FileDir); // writeLog("编码修改后 FileDir2",FileDir2); // String zipFileName = finalDateDirFile + File.separator + docid +".zip"; // //修改下编码 // String zipFileName2 = new String(zipFileName.getBytes(UTF_8)); // String zipFileName3 = null; // try { // // zipFileName.getBytes(UTF_8) // zipFileName3 = new String(zipFileName.getBytes("GBK"), UTF_8); // } catch (Exception e) { // e.printStackTrace(); // } // // // writeLog("编码修改前 zipFileName",zipFileName); // writeLog("编码修改后 zipFileName",zipFileName2); // writeLog("编码修改后 zipFileName3",zipFileName3); // File filezip = new File(new String(zipFileName.getBytes(UTF_8))); // // byte[] folderBytes = new byte[0]; // 假设原始编码是GBK // try { // folderBytes = zipFileName.getBytes("GBK"); // } catch (UnsupportedEncodingException e) { // e.printStackTrace(); // } // String encodedFolderName = new String(folderBytes, Charset.defaultCharset()); // writeLog("编码修改后 encodedFolderName",encodedFolderName); // ZipArchiveOutputStream zos =null; // writeLog("filezip",zipFileName); // try { // zos = new ZipArchiveOutputStream( new FileOutputStream(filezip)); // zos.setEncoding("UTF-8"); // for (String filleId : filleIdList) { // ImageFileManager ifm = new ImageFileManager(); // ifm.getImageFileInfoById(Integer.parseInt(filleId)); // InputStream imagefile = ifm.getInputStream(); // // String s1 = ifm.getImageFileName().split(".")[0]; // writeLog("压缩文件",ifm.getImageFileName()); // addInputStreamToZip(imagefile,zos,FileDir+File.separator+ifm.getImageFileName()); // } // } catch (FileNotFoundException e) { // writeLog("压缩文件异常",e.toString()); // e.printStackTrace(); // } catch (IOException e) { // writeLog("压缩文件异常",e.toString()); // e.printStackTrace(); // }catch (Exception e){ // writeLog("压缩文件异常",e.toString()); // e.printStackTrace(); // }finally { // try { // zos.close(); // } catch (IOException e) { // e.printStackTrace(); // } // } // // writeLog("压缩完文件名",filezip.getName()); // // String s = "通.zip"; // String convertedString =""; // try { // // byte[] bytes = StringUtils.getBytes(s, "UTF-8"); // // // 使用Guava转换编码 // ByteSource byteSource = ByteSource.wrap(s.getBytes(Charsets.UTF_8)); // byte[] gbkBytes = byteSource.asCharSource(Charsets.UTF_8).asByteSource(Charsets.UTF_8).read(); // // String gbkString = new String(gbkBytes, "GBK"); // } catch (UnsupportedEncodingException e) { // // } catch (IOException e) { // e.printStackTrace(); // } // // // filezip.renameTo(new File(convertedString)); // // HashMap map = fileinfo.get(docid); // // //开始推送数据 // // try { // // String s = ApiClient.callApi(url, docid, docid_docNameMap.get(docid), map.get("DOCCREATEDATE"), // // map.get("seccategory"), map.get("DOCCREATERID"), filezip); // // writeLog("返回数据",s); // // } catch (IOException e) { // // e.printStackTrace(); // // writeLog(e.getMessage()); // // writeLog(e.getMessage()); // // } // }); // return ""; // } // private static String getTodayDateStr() { // // 获取当前日期 // LocalDate today = LocalDate.now(); // // 定义日期格式 // DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd"); // // 将昨天的日期格式化为字符串 // return today.format(formatter); // } // // private static String getYesterdayDateStr() { // // 获取当前日期 // LocalDate today = LocalDate.now(); // // 减去一天得到前一天的日期 // LocalDate yesterday = today.minusDays(1); // // 定义日期格式 // DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); // // 将昨天的日期格式化为字符串 // return yesterday.format(formatter); // } // // private static void writeLog(String... log) { // StringBuilder logStr = new StringBuilder(); // for (String s : log) { // logStr.append("|").append(s); // } // bb.writeLog("PushCornTest.class"+"==>"+logStr); // } // // private void checkAndCreateDir(){ // // 创建File对象 // File directory = new File(dirPath); // // // 检查路径是否存在 // if (!directory.exists()) { // // 不存在,尝试创建多级目录 // boolean result = directory.mkdirs(); // if (result) { // writeLog("多级目录已创建成功:" + dirPath); // } else { // writeLog("目录创建失败,请检查路径是否正确,或者程序是否有相应的权限。"); // } // } else { // writeLog("目录已存在:" + dirPath); // } // } // // // private String checkAndCreateDir(String date){ // // 创建File对象 // File directory = new File(dirPath+File.separator+date); // // // 检查路径是否存在 // if (!directory.exists()) { // // 不存在,尝试创建多级目录 // boolean result = directory.mkdirs(); // if (result) { // writeLog("多级目录已创建成功:" + dirPath+File.separator+date); // } else { // writeLog(dirPath+File.separator+date,"目录创建失败,请检查路径是否正确,或者程序是否有相应的权限。"); // return "-1"; // } // } else { // writeLog("目录已存在:" + dirPath+File.separator+date); // } // return dirPath+File.separator+date; // } // // public void addInputStreamToZip(InputStream inputStream, ZipArchiveOutputStream zos, String entryName) throws IOException { // writeLog("编码修改后 entryName",entryName); // ZipArchiveEntry zipEntry = new ZipArchiveEntry(entryName); // zos.putArchiveEntry(zipEntry); // byte[] buffer = new byte[1024]; // int length; // while ((length = inputStream.read(buffer)) > 0) { // zos.write(buffer, 0, length); // } // inputStream.close(); // zos.closeArchiveEntry(); // } // // public static List getChildNodeIds(String parentId) { // String sql = "SELECT id FROM docseccategory WHERE parentid = ?"; // List childIds = new ArrayList<>(); // RecordSet rs = new RecordSet(); // rs.executeQuery(sql , parentId); // while (rs.next()) { // String id = rs.getString("id"); // childIds.add(id); // childIds.addAll(getChildNodeIds(id)); // 递归调用以获取所有后代节点 // } // return childIds; // } // // // public static String convertGbkToUtf8(String gbkStr) { // // 将GBK字符串转换为Unicode // String unicodeStr = new String(gbkStr.getBytes(Charset.forName("GBK")), Charset.forName("UTF-8")); // // // 从Unicode转换为UTF-8 // byte[] utf8Bytes = unicodeStr.getBytes(Charset.forName("UTF-8")); // return new String(utf8Bytes, Charset.forName("UTF-8")); // } // // // public static String toUnicodeString(String str) { // StringBuilder unicode = new StringBuilder(); // for (int i = 0; i < str.length(); i++) { // unicode.append(String.format("\\u%04X", (int) str.charAt(i))); // } // return unicode.toString(); // } // // public static String unicodeToUtf8(String unicodeStr) { // String stringFromUnicode = unicodeStr.replace("\\u", ""); // byte[] utf8Bytes = new byte[stringFromUnicode.length() / 2]; // for (int i = 0; i < stringFromUnicode.length(); i += 2) { // int value = Integer.parseInt(stringFromUnicode.substring(i, i + 2), 16); // utf8Bytes[i / 2] = (byte) value; // } // return new String(utf8Bytes, StandardCharsets.UTF_8); // } // // }