CreatDatPlugin.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. package sys.sc.formplugin;
  2. import com.jcraft.jsch.SftpException;
  3. import kd.bos.dataentity.entity.DynamicObject;
  4. import kd.bos.dataentity.entity.DynamicObjectCollection;
  5. import kd.bos.form.events.AfterDoOperationEventArgs;
  6. import kd.bos.list.plugin.AbstractListPlugin;
  7. import kd.bos.orm.query.QCP;
  8. import kd.bos.orm.query.QFilter;
  9. import kd.bos.servicehelper.BusinessDataServiceHelper;
  10. import sys.sc.opplugin.utils.DatFileCreatUtils;
  11. import sys.sc.opplugin.utils.SftpClient;
  12. import java.io.File;
  13. import java.io.IOException;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. /**
  17. * @author cjz
  18. * @date 2024/9/18 17:05
  19. * @description:生成dat文件
  20. */
  21. public class CreatDatPlugin extends AbstractListPlugin {
  22. //数据表字段标识
  23. private static String nckd_tablebasic="nckd_tablebasic";
  24. //获取分录中表字段需要生成的所有字段
  25. public void afterDoOperation(AfterDoOperationEventArgs arg){
  26. String name=arg.getOperateKey();
  27. if (name.equals("creatfile"))
  28. {
  29. DynamicObject dynamicObject=this.getModel().getDataEntity(true);
  30. List<String> fileList=new ArrayList<>();
  31. //获取当前分录
  32. DynamicObjectCollection dynamicObjectCollection=dynamicObject.getDynamicObjectCollection("nckd_tableentry");
  33. for (DynamicObject item:dynamicObjectCollection) {
  34. //将打勾的字段到处
  35. if (item.getBoolean("nckd_isable")) {
  36. //需要导入的标识写入list中
  37. fileList.add(item.getString("nckd_entrycode"));
  38. }
  39. }
  40. //获取当前选择的表名
  41. String tablenumber=dynamicObject.getString("number");
  42. //业务编码
  43. String bizappnum=dynamicObject.getString("nckd_biazppnum");
  44. QFilter qFilter=new QFilter("number", QCP.equals,"creatdat");
  45. DynamicObject jkdataDy= BusinessDataServiceHelper.loadSingle("nckd_jkpzxx",
  46. "id,number,name,nckd_servername" +
  47. ",nckd_port,nckd_url,nckd_filename,nckd_user" +
  48. ",nckd_password,nckd_split,nckd_endsign",new QFilter[]{qFilter});
  49. //文件名
  50. String filename=tablenumber+".dat";
  51. //服务器路径
  52. // String nckd_url=jkdataDy.getString("nckd_url");
  53. String nckd_url=dynamicObject.getString("nckd_filepath");
  54. // //生成文件的路径
  55. //// String filePath=nckd_url+filename;
  56. //// File dir=new File(filePath);
  57. //// //不存在则创建文件夹
  58. //// if (!dir.exists()) {
  59. //// File parentDir = dir.getParentFile();
  60. //// if (parentDir != null && !parentDir.exists()) {
  61. //// parentDir.mkdirs();
  62. //// }
  63. //// try {
  64. //// dir.createNewFile();
  65. //// } catch (IOException e) {
  66. //// throw new RuntimeException(e);
  67. //// }
  68. //// this.getView().showMessage("创建成功"+filePath);
  69. //// }
  70. //分割符号
  71. String spiltsign=jkdataDy.getString("nckd_split");
  72. //结束符号
  73. String endsign=jkdataDy.getString("nckd_endsign");
  74. //服务器端口
  75. String host=jkdataDy.getString("nckd_servername");
  76. //服务器用户名
  77. String username=jkdataDy.getString("nckd_user");
  78. //服务器密码
  79. String password=jkdataDy.getString("nckd_password");
  80. //服务器端口号
  81. int port=jkdataDy.getInt("nckd_port");
  82. try {
  83. //临时文件
  84. File localFile = File.createTempFile(tablenumber, ".dat");
  85. //文件写入
  86. DatFileCreatUtils datFileCreatUtils=new DatFileCreatUtils(tablenumber,bizappnum,fileList,localFile.getAbsolutePath(),spiltsign,endsign);
  87. //生成dat文件到本地
  88. datFileCreatUtils.creatDatFile();
  89. //上传文件到服务器中
  90. SftpClient sftpClient=new SftpClient(host,username,password,port);
  91. //获取服务器连接
  92. sftpClient.connect();
  93. //从本地传文件到服务器
  94. sftpClient.fileCreat(localFile.getAbsolutePath(), nckd_url);
  95. //上传后删除临时文件
  96. localFile.delete();
  97. //关闭连接
  98. sftpClient.disconnect();
  99. } catch (IOException e) {
  100. throw new RuntimeException(e);
  101. } catch (SftpException e) {
  102. throw new RuntimeException(e);
  103. } catch (Exception e) {
  104. throw new RuntimeException(e);
  105. }
  106. }
  107. }
  108. }