DatFileCreatUtils.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. package sys.sc.opplugin.utils;
  2. import com.grapecity.documents.excel.Q;
  3. import kd.bos.algo.DataSet;
  4. import kd.bos.algo.Row;
  5. import kd.bos.dataentity.entity.DynamicObject;
  6. import kd.bos.dataentity.metadata.dynamicobject.DynamicObjectType;
  7. import kd.bos.db.DB;
  8. import kd.bos.db.DBRoute;
  9. import kd.bos.entity.EntityMetadataCache;
  10. import kd.bos.orm.query.QCP;
  11. import kd.bos.orm.query.QFilter;
  12. import kd.bos.orm.query.multi.QFilterFtlikeTransFunction;
  13. import kd.bos.servicehelper.BusinessDataServiceHelper;
  14. import kd.scm.bid.formplugin.report.biddetailquery.QingFiledContent;
  15. import java.io.*;
  16. import java.util.ArrayList;
  17. import java.util.List;
  18. /**
  19. * @author cjz
  20. * @date 2024/9/18 16:30
  21. * @description:生成dat文件方法封装
  22. */
  23. public class DatFileCreatUtils {
  24. //表名
  25. private String nckdentry;
  26. //业务编码
  27. private String bizappnum;
  28. //生成表的字段list
  29. private List<String> selector;
  30. //生成文件位置
  31. private String filePath;
  32. //分隔符
  33. private String spiltsign;
  34. //结尾符
  35. private String endsign;
  36. public DatFileCreatUtils(String nckdentry,String bizappnum,List<String> selector,String filePath,String spiltsign,String endsign)
  37. {
  38. this.nckdentry=nckdentry;
  39. this.bizappnum=bizappnum;
  40. this.selector=selector;
  41. this.filePath=filePath;
  42. this.spiltsign=spiltsign;
  43. this.endsign=endsign;
  44. }
  45. public void creatDatFile() {
  46. QFilter filtercol=new QFilter("number",QCP.equals,bizappnum);
  47. //业务云
  48. DynamicObject bizappcloudDy=BusinessDataServiceHelper
  49. .loadSingle("bos_devportal_bizapp","id,bizcloud.number",new QFilter[]{filtercol});
  50. //业务云编码
  51. String bizcloudnum=bizappcloudDy.getString("bizcloud.number");
  52. String sql = " /*dialect*/ select "+String.join(",", selector)+" from "+nckdentry;
  53. DataSet dataSet = DB.queryDataSet(this.getClass().getName(),DBRoute.of(bizcloudnum),sql,null);
  54. try {
  55. File file = new File(filePath);
  56. //文件路径不存在则创建文件
  57. if (!file.exists()) {
  58. File parentDir = file.getParentFile();
  59. if (parentDir != null && !parentDir.exists()) {
  60. parentDir.mkdirs();
  61. }
  62. file.createNewFile();
  63. }
  64. try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath), "GBK"))) {
  65. while(dataSet.hasNext()) {
  66. Row data = dataSet.next();
  67. StringBuilder line = new StringBuilder();
  68. for (String field : selector) {
  69. //分割符
  70. line.append(data.get(field) != null ? data.get(field).toString() : "").append(spiltsign);
  71. }
  72. line.setLength(line.length() - 1);
  73. //结尾符
  74. line.append(endsign);
  75. writer.write(line.toString());
  76. writer.newLine();
  77. }
  78. }
  79. } catch (IOException ex) {
  80. ex.printStackTrace();
  81. }
  82. }
  83. }