You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

340 lines
15 KiB
Java

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.api.sfj.DA;
import com.api.sfj.DA.util.CreatXML;
import weaver.conn.RecordSet;
import weaver.general.BaseBean;
import weaver.interfaces.workflow.action.Action;
import weaver.soa.workflow.request.RequestInfo;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.zip.ZipOutputStream;
import static com.api.sfj.DA.util.JY_action.filename;
import static com.api.sfj.DA.util.JY_action.fjFilename;
import static com.api.sfj.DA.util.ZipFile.zipu;
/**
* 发文登记
* 2020-10-14
*/
public class FWDJ_Action implements Action {
public static String getFileNameNoEx(String filename) {
if ((filename != null) && (filename.length() > 0)) {
int dot = filename.lastIndexOf('.');
if ((dot >-1) && (dot < (filename.length()))) {
return filename.substring(0, dot);
}
}
return filename;
}
@Override
public String execute(RequestInfo requestinfo) {
BaseBean bb = new BaseBean();
RecordSet rs = new RecordSet();
//=====================================================================读取主表数据
bb.writeLog("====发文登记单=======START="+requestinfo.getRequestid());
String requestid = requestinfo.getRequestid(); //请求ID
String src = requestinfo.getRequestManager().getSrc();
bb.writeLog("====发文登记单=====src="+src);
//当前操作类型 submit:提交/reject:退回
String workflowid = requestinfo.getWorkflowid(); //流程ID
String tablename = requestinfo.getRequestManager().getBillTableName();//表单名称
String sql = "select * from "+tablename+" where requestid = "+requestid;
rs.execute(sql);
rs.writeLog(sql);
HashMap<String,Object> map = new HashMap(); // 依据说明
HashMap<String,Object> mapList = new HashMap(); // 归档文件
SimpleDateFormat fomat = new SimpleDateFormat("yyyyMMddHHmmss");
String time = fomat.format(new Date());
bb.writeLog("time-->"+time);
String dh =time+"-"+requestid;
UUID uuid = UUID.randomUUID();
bb.writeLog("uuid-->"+uuid);
String str = uuid.toString().replaceAll("-","");
String fj ="";
String ofdwj ="";
String wjbt="";
String ngcs="";
String zwofdwj ="";
while (rs.next()){
fj =rs.getString("fj"); //附件
wjbt = rs.getString("wjbt"); //文件标题
String zsdw = rs.getString("zsdw"); //主送单位
String csdw = rs.getString("csdw"); //抄送单位
int mj = rs.getInt("mj"); //密级
String hj = rs.getString("hj"); // 缓急
String ys = rs.getString("ys"); // 印数
String wh = rs.getString("wh"); //文号
ngcs = rs.getString("ngcs"); //拟稿处室
String ngr = rs.getString("ngr"); //拟稿人
String zw = rs.getString("zw"); // 正文
ofdwj = rs.getString("ofdwj"); // ofd文件
zwofdwj = rs.getString("zwofdwj"); // ofd附件文件
String mjstr="";
if(mj==0){
mjstr="非涉密";
}else if(mj==1){
mjstr="机密";
}else if(mj==2){
mjstr="秘密";
}else if(mj==3){
mjstr="绝密";
}
String ffrq = rs.getString("ffrq"); // 封发日期
Date date = new Date();
String da = new SimpleDateFormat("yyyy-MM-dd").format(date).replaceAll("-","");
bb.writeLog("====发文登记单=====文件添加数据="+time+requestid+wjbt+wh+ngr+da);
bb.writeLog("====发文登记单=====文件添加数据="+src);
map.put("dh",time+"-"+requestid); //档号,归档存储文件文件夹名称
map.put("bt",wjbt); //标题
map.put("bh",wh);//文号
// map.put("zrz",ngcs); //责任者
map.put("rq",da.replaceAll("-","")); //日期
map.put("ys",1);
bb.writeLog("====发文登记单=====文件添加数据="+map);
mapList.put("dh",str); //UUID档号
mapList.put("wz","发文"); //文种
mapList.put("bt",wjbt); //文件标题
String depName="select departmentname from hrmdepartment where id="+ngcs;
String zrzName ="";
try {
rs.execute(depName);
rs.writeLog(depName);
rs.next();
zrzName = rs.getString("departmentname");
}catch (Exception e){
bb.writeLog(""+e);
}
map.put("zrz",zrzName);
String createrId="SELECT CREATER FROM workflow_requestbase WHERE REQUESTID="+requestid;
String jgryid ="";
try {
rs.execute(createrId);
rs.writeLog(createrId);
rs.next();
jgryid = rs.getString("CREATER");
}catch (Exception e){
bb.writeLog(""+e);
}
String createrName="SELECT LASTNAME FROM hrmresource WHERE id=(SELECT CREATER FROM workflow_requestbase WHERE REQUESTID="+requestid+")";
String jgryName ="";
try {
rs.execute(createrName);
rs.writeLog(createrName);
rs.next();
jgryName = rs.getString("LASTNAME");
}catch (Exception e){
bb.writeLog(""+e);
}
String createrDepName="SELECT b.DEPARTMENTNAME FROM hrmresource a,hrmdepartment b WHERE a.departmentid = b.id AND a.ID=(SELECT CREATER FROM workflow_requestbase WHERE REQUESTID="+requestid+")";
String jgryBmName ="";
try {
rs.execute(createrDepName);
rs.writeLog(createrDepName);
rs.next();
jgryBmName = rs.getString("DEPARTMENTNAME");
}catch (Exception e){
bb.writeLog(""+e);
}
String nodeInfoSql="SELECT a.id,b.nodename,a.lastname,a.departmentname,a.receivedate,a.receivetime,a.operatedate,a.operatetime FROM (SELECT a.nodeid,a.receivedate,a.receivetime,a.operatedate,a.operatetime,c.lastname,a.requestid,c.id,c.departmentid,d.departmentname FROM workflow_currentoperator a,workflow_nodebase b,hrmresource c,hrmdepartment d" +
" WHERE a.nodeid=b.id AND a.processuser=c.id AND d.id=c.departmentid and a.requestid="+requestid+") a right JOIN (SELECT id ,nodename FROM workflow_nodebase WHERE id in(SELECT nodeid FROM workflow_currentoperator WHERE requestid="+requestid+")) b ON a.nodeid=b.id order by nodeid";
List<Map<String, Object>> nodeInfoList = new ArrayList<>();
try {
RecordSet recordSet = new RecordSet();
recordSet.execute(nodeInfoSql);
bb.writeLog("开始查询节点流程");
while (recordSet.next()){
Map<String,Object> nodeInfo = new HashMap<>();
nodeInfo.put("id",recordSet.getString("id"));
nodeInfo.put("nodename",recordSet.getString("nodename"));
nodeInfo.put("lastname",recordSet.getString("lastname"));
nodeInfo.put("departmentname",recordSet.getString("departmentname"));
nodeInfo.put("receivedate",recordSet.getString("receivedate"));
nodeInfo.put("receivetime",recordSet.getString("receivetime"));
nodeInfo.put("operatedate",recordSet.getString("operatedate"));
nodeInfo.put("operatetime",recordSet.getString("operatetime"));
nodeInfoList.add(nodeInfo);
}
bb.writeLog("查询节点流程");
}catch (Exception e){
e.printStackTrace();
}
bb.writeLog("节点信息-->"+nodeInfoList);
bb.writeLog("查询出的附件-->"+fj);
String[] arr = fj.split(",");
List<Map<String, Object>> fjList = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
//附件
String fjSQL="SELECT filerealpath,imagefilename FROM imagefile WHERE imagefileid ="+ arr[i];
try {
RecordSet recordSet = new RecordSet();
recordSet.execute(fjSQL);
bb.writeLog("开始附件列表");
while (recordSet.next()){
Map<String,Object> fjMap = new HashMap<>();
String filerealpath = recordSet.getString("filerealpath");
String imagefilename = recordSet.getString("imagefilename");
int index = filerealpath.lastIndexOf("/");
int index2 = imagefilename.lastIndexOf(".");
String zipPath = filerealpath.substring(index + 1); //压缩文件名
String newname = imagefilename.substring(0, index2);
String fileNameNoEx = getFileNameNoEx(zipPath);
fjMap.put("filerealpath",filerealpath);
fjMap.put("imagefilename",imagefilename);
fjMap.put("fjUUID",fileNameNoEx);
fjList.add(fjMap);
}
bb.writeLog("查询附件结束 fjList.size()==="+fjList.size());
}catch (Exception e){
bb.writeLog("查询附件异常==="+e);
}
}
// mapList.put("zrz",ngcs); //责任者
mapList.put("ys",1); //页数
mapList.put("zrz",zrzName); //责任者 部门名称
mapList.put("jgryName",jgryName); //机构人员中文
mapList.put("jgryBmName",jgryBmName); //机构人员部门名称
mapList.put("jgryid",jgryid); //机构人员id
mapList.put("rq",da.replaceAll("-","")); //日期
mapList.put("kzbs","控制"); // 控制标识
mapList.put("zw",ofdwj); // 正文
mapList.put("zwofd",zwofdwj); // 正文
mapList.put("nodeInfoList",nodeInfoList); // 节点信息
if(fj!=null && fj!=""){
mapList.put("fj",fj); //附件
}else{
mapList.put("fj","0"); //附件
}
if(fj!=null && fj!=""){
mapList.put("fjList",fjList); //附件
}else{
mapList.put("fjList","0"); //附件
}
// mapList.put("cld",ofdwj); //处理单
mapList.put("mj",mjstr); //密级
}
bb.writeLog("====发文登记单==内部=444=map="+map.toString());
bb.writeLog("====发文登记单==内部=444=maplist="+mapList.toString());
String filerealpath = "";
String YJnewPath = "/home/WEAVER/oadata792/DAGD/FWDJ/"+str; //归档文件依据说明文件夹
String GDnewPath = "/home/WEAVER/oadata792/DAGD/FWDJ/"+str+"/"+time+"-"+requestid; //归档文件正文附件文件夹
String zipname =str+".zip";
String zippath = YJnewPath+".zip";//压缩包路径
// 根据系统的实际情况选择目录分隔符baiwindows下是dulinux下是/
// linux下只认正斜杠为了保证跨平台性不建议使用反斜杠在java程序中是转义字符用\来表示反斜杠)
// 在内存中创建一个文件对象,注意:此时还没有在硬盘对应目录下创建实实在在的文件
// File f = new File(YJnewPath);
// if(f.exists()) {
//// 文件已经存在,输出文件的相关信息
// System.out.println(f.getAbsolutePath());
// System.out.println(f.getName());
// System.out.println(f.length());
// } else {
//// 先创建文件所在的目录
// f.getParentFile().mkdirs();
//
// }
bb.writeLog("====发文登记单=====创建文件夹成功c="+YJnewPath);
File f2 = new File(GDnewPath+"/ww");
if(f2.exists()) {
bb.writeLog("====发文登记单=====创建文件夹="+f2.getAbsolutePath());
bb.writeLog("====发文登记单=====创建文件夹="+f2.getName());
bb.writeLog("====发文登记单=====创建文件c="+f2.length());
bb.writeLog("-----");
} else {
// 先创建文件所在的目录
boolean su =f2.getParentFile().mkdirs();
if(su==true){
if(fj.length()>0){
fjFilename(fj, GDnewPath);
}
if(zwofdwj.length()>0){
fjFilename(zwofdwj, GDnewPath);
}
if(ofdwj.length()>0){
String filename = filename(ofdwj, GDnewPath);
mapList.put("cld",filename);
}
}
}
bb.writeLog("====发文登记单=====创建文件夹成功c="+GDnewPath);
//先创建文件夹,之后存放文件,再传递建模进行记录
CreatXML creatXML = new CreatXML();
try {
creatXML.createYJSMXml(YJnewPath,map);
} catch (Exception e) {
e.printStackTrace();
bb.writeLog("发文登记单----依据说明:" + e);
}
try {
creatXML.createGDWJXml(GDnewPath,mapList);
} catch (Exception e) {
e.printStackTrace();
bb.writeLog("发文登记单=====归档文件:" + e);
}
bb.writeLog("====发文登记单=====写入xml文件="+src);
bb.writeLog("====发文登记单====文件方法=");
File f1=null;
ZipOutputStream out=null;
String zip = YJnewPath+".zip";
// try {
// f1= new File(YJnewPath);
// out = new ZipOutputStream(new FileOutputStream(
// YJnewPath+".zip"));
// zip(out,f1,null);
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// } catch (Exception e) {
// e.printStackTrace();
// }
// try {
// ZipUtil zipUtil = new ZipUtil();
// zipUtil.zip(YJnewPath,zippath);
// } catch (Exception e) {
// e.printStackTrace();
// }
zipu(YJnewPath,zippath);
Date date = new Date();
String day = new SimpleDateFormat("yyyy-MM-dd").format(date);
String daytime = new SimpleDateFormat("hh:mm").format(date);
//文件路径收发文类别文件夹名称归档状态流程id
// String insertsql = "insert into uf_dagd(wjlj,sfwlb,wjjmc,gdzt,lcid,lcgdrq,lcgdsj,gdlcm) values('"+zippath+"','"+1+"','"+zipname+"','"+0+"','"+requestid+"','"+day+"','"+daytime+"','"+wjbt+"')";
String insertsql = "insert into uf_dagd(wjlj,sfwlb,wjjmc,gdzt,lcid,lcgdrq,lcgdsj,ssbm,gdlcm) values('"+zippath+"','"+1+"','"+zipname+"','"+0+"','"+requestid+"','"+day+"','"+daytime+"','"+ngcs+"','"+wjbt+"')";
RecordSet recordSet = new RecordSet();
recordSet.execute(insertsql);
recordSet.writeLog("建模台账添加数据"+insertsql);
return Action.SUCCESS;
}
}