123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- 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);
- }
- }
- }
- }
|