package sys.sc.formplugin; import com.jcraft.jsch.SftpException; import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.form.events.AfterDoOperationEventArgs; import kd.bos.list.plugin.AbstractListPlugin; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; import sys.sc.opplugin.utils.DatFileCreatUtils; import sys.sc.opplugin.utils.SftpClient; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * @author cjz * @date 2024/9/18 17:05 * @description:生成dat文件 */ public class CreatDatPlugin extends AbstractListPlugin { //数据表字段标识 private static String nckd_tablebasic="nckd_tablebasic"; //获取分录中表字段需要生成的所有字段 public void afterDoOperation(AfterDoOperationEventArgs arg){ String name=arg.getOperateKey(); if (name.equals("creatfile")) { DynamicObject dynamicObject=this.getModel().getDataEntity(true); List<String> fileList=new ArrayList<>(); //获取当前分录 DynamicObjectCollection dynamicObjectCollection=dynamicObject.getDynamicObjectCollection("nckd_tableentry"); for (DynamicObject item:dynamicObjectCollection) { //将打勾的字段到处 if (item.getBoolean("nckd_isable")) { //需要导入的标识写入list中 fileList.add(item.getString("nckd_entrycode")); } } //获取当前选择的表名 String tablenumber=dynamicObject.getString("number"); //业务编码 String bizappnum=dynamicObject.getString("nckd_biazppnum"); QFilter qFilter=new QFilter("number", QCP.equals,"creatdat"); DynamicObject jkdataDy= BusinessDataServiceHelper.loadSingle("nckd_jkpzxx", "id,number,name,nckd_servername" + ",nckd_port,nckd_url,nckd_filename,nckd_user" + ",nckd_password,nckd_split,nckd_endsign",new QFilter[]{qFilter}); //文件名 String filename=tablenumber+".dat"; //服务器路径 // String nckd_url=jkdataDy.getString("nckd_url"); String nckd_url=dynamicObject.getString("nckd_filepath"); // //生成文件的路径 //// String filePath=nckd_url+filename; //// File dir=new File(filePath); //// //不存在则创建文件夹 //// if (!dir.exists()) { //// File parentDir = dir.getParentFile(); //// if (parentDir != null && !parentDir.exists()) { //// parentDir.mkdirs(); //// } //// try { //// dir.createNewFile(); //// } catch (IOException e) { //// throw new RuntimeException(e); //// } //// this.getView().showMessage("创建成功"+filePath); //// } //分割符号 String spiltsign=jkdataDy.getString("nckd_split"); //结束符号 String endsign=jkdataDy.getString("nckd_endsign"); //服务器端口 String host=jkdataDy.getString("nckd_servername"); //服务器用户名 String username=jkdataDy.getString("nckd_user"); //服务器密码 String password=jkdataDy.getString("nckd_password"); //服务器端口号 int port=jkdataDy.getInt("nckd_port"); try { //临时文件 File localFile = File.createTempFile(tablenumber, ".dat"); //文件写入 DatFileCreatUtils datFileCreatUtils=new DatFileCreatUtils(tablenumber,bizappnum,fileList,localFile.getAbsolutePath(),spiltsign,endsign); //生成dat文件到本地 datFileCreatUtils.creatDatFile(); //上传文件到服务器中 SftpClient sftpClient=new SftpClient(host,username,password,port); //获取服务器连接 sftpClient.connect(); //从本地传文件到服务器 sftpClient.fileCreat(localFile.getAbsolutePath(), nckd_url); //上传后删除临时文件 localFile.delete(); //关闭连接 sftpClient.disconnect(); } catch (IOException e) { throw new RuntimeException(e); } catch (SftpException e) { throw new RuntimeException(e); } catch (Exception e) { throw new RuntimeException(e); } } } }