2021-11-14 15:29:16 +08:00
|
|
|
|
package weaver.aiyh_pcn.copy_attachment;
|
|
|
|
|
|
|
|
|
|
import aiyh.utils.Util;
|
|
|
|
|
import aiyh.utils.mapUtil.ParaMap;
|
|
|
|
|
import aiyh.utils.sqlUtil.sqlResult.impl.PrepSqlResultImpl;
|
|
|
|
|
import aiyh.utils.zwl.common.ToolUtil;
|
|
|
|
|
import com.api.aiyh_pcn.copy_attachment.dao.DocTemplateDao;
|
|
|
|
|
import com.api.aiyh_pcn.copy_attachment.model.ConfigEmpty;
|
|
|
|
|
import org.h2.util.StringUtils;
|
|
|
|
|
import weaver.conn.RecordSet;
|
|
|
|
|
import weaver.hrm.User;
|
|
|
|
|
import weaver.interfaces.workflow.action.Action;
|
|
|
|
|
import weaver.soa.workflow.request.RequestInfo;
|
|
|
|
|
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @author EBU7-dev1-ayh
|
|
|
|
|
* @create 2021/11/8 0008 15:38
|
|
|
|
|
* baomixieyi
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class CopyAttachmentSecretAction extends ToolUtil implements Action {
|
|
|
|
|
private String attachmentTemplateId;
|
|
|
|
|
private String isBrowseBox;
|
|
|
|
|
@Override
|
|
|
|
|
public String execute(RequestInfo requestInfo) {
|
|
|
|
|
ToolUtil toolUtil = new ToolUtil();
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
User user = requestInfo.getRequestManager().getUser();
|
|
|
|
|
String billTableName = requestInfo.getRequestManager().getBillTableName();
|
|
|
|
|
String requestId = requestInfo.getRequestid();
|
|
|
|
|
String workflowId = requestInfo.getWorkflowid();
|
|
|
|
|
RecordSet rs_1 = new RecordSet();
|
|
|
|
|
// 查询流程数据
|
|
|
|
|
String query = "select * from " + billTableName + " where requestid = ?";
|
2021-11-23 11:05:14 +08:00
|
|
|
|
toolUtil.writeDebuggerLog("进入保密协议action!");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
rs_1.executeQuery(query, requestId);
|
|
|
|
|
Map<String, Object> requestData = Util.recordSet2Map(rs_1);
|
2021-11-23 11:05:14 +08:00
|
|
|
|
toolUtil.writeDebuggerLog(requestData.toString());
|
2021-11-14 15:29:16 +08:00
|
|
|
|
|
|
|
|
|
// 查询配置表,获取配置数据
|
|
|
|
|
String querySql = "select ufta.id,ufta.workflow_type,wftva.fieldname as template_field, " +
|
|
|
|
|
"wftvb.fieldname as attachment_field,wftv.fieldname as show_field, wftvb.id as attachment_field_id, " +
|
|
|
|
|
"ufta.is_template_show,ufta.model_table_name, ufta.model_field,wsl.selectvalue as show_value, " +
|
|
|
|
|
"wftv.tablename as show_table_name,wftva.tablename as template_table_name,wftvb.tablename as attachment_table_name, " +
|
|
|
|
|
"wsla.selectvalue as hidden_value from uf_temp_attachment as ufta " +
|
|
|
|
|
"left join workflow_selectitem as wsl on wsl.id = ufta.show_value " +
|
|
|
|
|
"left join workflow_selectitem as wsla on wsla.id = ufta.hidden_value " +
|
|
|
|
|
"left join workflow_field_table_view as wftv on wftv.id = ufta.show_field " +
|
|
|
|
|
"left join workflow_field_table_view as wftva on wftva.id = ufta.template_field " +
|
|
|
|
|
"left join workflow_field_table_view as wftvb on wftvb.id = ufta.attachment_field " +
|
|
|
|
|
"where workflow_type in " +
|
|
|
|
|
"(select id from workflow_base where activeVersionID in " +
|
|
|
|
|
"(select activeVersionID from workflow_base where id = ?) or id = ?) and attachment_type = ?";
|
|
|
|
|
RecordSet rs = new RecordSet();
|
|
|
|
|
rs.executeQuery(querySql, workflowId, workflowId, 1);
|
2021-11-15 14:04:32 +08:00
|
|
|
|
ConfigEmpty configEmpty = null;
|
|
|
|
|
while(rs.next()){
|
|
|
|
|
// id
|
2021-11-14 15:29:16 +08:00
|
|
|
|
int id = Util.getIntValue(rs.getString("id"));
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 显示值
|
2021-11-14 15:29:16 +08:00
|
|
|
|
int showValue = Util.getIntValue(rs.getString("show_value"));
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 隐藏值
|
2021-11-14 15:29:16 +08:00
|
|
|
|
int hiddenValue = Util.getIntValue(rs.getString("hidden_value"));
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 流程id
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String workflowType = rs.getString("workflow_type");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 模板字段
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String templateField = rs.getString("template_field");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 附件字段
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String attachmentField = rs.getString("attachment_field");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 是否用字段控制模板
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String isTemplateShow = rs.getString("is_template_show");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 模板建模表表名
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String modelTableName = rs.getString("model_table_name");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 控制模板显示与否的字段
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String showField = rs.getString("show_field");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 建模表福建模板字段
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String modelField = rs.getString("model_field");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 控制显示所在表
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String showTableName = rs.getString("show_table_name");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 模板字段所在表
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String templateTableName = rs.getString("template_table_name");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 附件字段所在表
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String attachmentTableName = rs.getString("attachment_table_name");
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 附件字段id
|
2021-11-14 15:29:16 +08:00
|
|
|
|
String attachmentFieldId = rs.getString("attachment_field_id");
|
|
|
|
|
toolUtil.writeDebuggerLog("保密协议已经查询到数据!");
|
|
|
|
|
|
2021-11-15 14:04:32 +08:00
|
|
|
|
configEmpty = ConfigEmpty.create()
|
2021-11-14 15:29:16 +08:00
|
|
|
|
.id(id)
|
|
|
|
|
.showValue(showValue)
|
|
|
|
|
.hiddenValue(hiddenValue)
|
|
|
|
|
.workflowType(workflowType)
|
|
|
|
|
.templateField(templateField)
|
|
|
|
|
.attachmentField(attachmentField)
|
|
|
|
|
.isTemplateShow(isTemplateShow)
|
|
|
|
|
.modelTableName(modelTableName)
|
|
|
|
|
.showField(showField)
|
|
|
|
|
.modelField(modelField)
|
|
|
|
|
.showTableName(showTableName)
|
|
|
|
|
.templateTableName(templateTableName)
|
|
|
|
|
.attachmentTableName(attachmentTableName)
|
|
|
|
|
.attachmentFieldId(attachmentFieldId)
|
|
|
|
|
.builder();
|
2021-11-23 11:05:14 +08:00
|
|
|
|
toolUtil.writeDebuggerLog("保密协议数据:" + configEmpty.toString());
|
2021-11-15 14:04:32 +08:00
|
|
|
|
// 如果不控制是否使用模板,那就默认不添加保密协议
|
2021-11-14 15:29:16 +08:00
|
|
|
|
if ("1".equals(isTemplateShow)) {
|
|
|
|
|
// 不使用模板
|
2021-11-23 11:05:14 +08:00
|
|
|
|
toolUtil.writeDebuggerLog("不使用安全协议数据!因为不控制模板的使用!");
|
2021-11-14 15:29:16 +08:00
|
|
|
|
return Action.SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
String showFieldValue = String.valueOf(requestData.get(configEmpty.getShowField()));
|
|
|
|
|
// 不使用保密协议模板
|
|
|
|
|
if (configEmpty.getShowValue() != Integer.parseInt(showFieldValue)) {
|
2021-11-23 11:05:14 +08:00
|
|
|
|
toolUtil.writeDebuggerLog("不使用安全协议数据!因为不使用保密协议!");
|
2021-11-14 15:29:16 +08:00
|
|
|
|
return Action.SUCCESS;
|
|
|
|
|
}
|
2021-11-15 14:04:32 +08:00
|
|
|
|
}
|
|
|
|
|
if(configEmpty != null){
|
2021-11-14 15:29:16 +08:00
|
|
|
|
// 使用保密协议模板
|
|
|
|
|
String docIds = copyFile(user, configEmpty,String.valueOf(requestData.get(configEmpty.getTemplateField())));
|
2021-11-23 11:05:14 +08:00
|
|
|
|
toolUtil.writeDebuggerLog("复制完成文件id:" + docIds);
|
2021-11-14 15:29:16 +08:00
|
|
|
|
if (StringUtils.isNullOrEmpty(docIds)) {
|
|
|
|
|
requestInfo.getRequestManager().setMessageid("1");
|
|
|
|
|
// TODO 修改htmlLabel
|
|
|
|
|
requestInfo.getRequestManager().setMessagecontent(aiyh.utils.Util.getHtmlLabelName(-87783, user.getLanguage(), "保密协议复制失败,未能正确复制保密协议!"));
|
|
|
|
|
return Action.FAILURE_AND_CONTINUE;
|
|
|
|
|
}
|
|
|
|
|
String fileIds = Util.null2String(rs_1.getString(configEmpty.getAttachmentField()));
|
|
|
|
|
String[] split = fileIds.split(",");
|
|
|
|
|
List<String> list = Arrays.stream(split).collect(Collectors.toList());
|
|
|
|
|
String[] split1 = docIds.split(",");
|
|
|
|
|
list.addAll(Arrays.stream(split1).collect(Collectors.toList()));
|
|
|
|
|
|
|
|
|
|
// 修改流程数据,将保密协议的docid更新到流程中
|
|
|
|
|
PrepSqlResultImpl sqlResult = Util.createSqlBuilder().updateSql(billTableName, ParaMap.create().put(configEmpty.getAttachmentField(), String.join(",", list)),
|
|
|
|
|
Util.createPrepWhereImpl().whereAnd("requestid").whereEqual(requestId));
|
2021-11-23 11:05:14 +08:00
|
|
|
|
toolUtil.writeDebuggerLog("sql : " + sqlResult.getSqlStr() + " 参数: ---> " + sqlResult.getArgs());
|
2021-11-14 15:29:16 +08:00
|
|
|
|
rs.executeUpdate(sqlResult.getSqlStr(), sqlResult.getArgs());
|
|
|
|
|
}
|
|
|
|
|
}catch (Exception e){
|
|
|
|
|
toolUtil.writeErrorLog("出现错误: " + e);
|
|
|
|
|
}
|
|
|
|
|
return Action.SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String copyFile(User user, ConfigEmpty configEmpty,String browseBoxId){
|
|
|
|
|
ToolUtil toolUtil = new ToolUtil();
|
|
|
|
|
// 建模表名称 params.get("tableName")
|
|
|
|
|
String tableName = String.valueOf(configEmpty.getModelTableName());
|
|
|
|
|
// 建模字段名 params.get("fieldName")
|
|
|
|
|
String fieldName = String.valueOf(configEmpty.getModelField());
|
|
|
|
|
// 附件字段id params.get("fileFieldId")
|
|
|
|
|
String fileFieldId = String.valueOf(configEmpty.getAttachmentField());
|
|
|
|
|
// 配置id params.get("configId")
|
|
|
|
|
// String configId = String.valueOf(configEmpty.getId());
|
|
|
|
|
String configId;
|
|
|
|
|
if("true".equals(isBrowseBox)){
|
|
|
|
|
configId = browseBoxId;
|
|
|
|
|
}else {
|
|
|
|
|
configId = attachmentTemplateId;
|
|
|
|
|
}
|
|
|
|
|
// 流程id params.get("workflowId")
|
|
|
|
|
String workflowId = String.valueOf(configEmpty.getWorkflowType());
|
|
|
|
|
DocTemplateDao docTemplateDao = new DocTemplateDao();
|
|
|
|
|
int[] docIds = null;
|
|
|
|
|
try{
|
|
|
|
|
docIds = docTemplateDao.copyFile(user.getUID(), tableName, fieldName, configId);
|
|
|
|
|
}catch(Exception e){
|
|
|
|
|
toolUtil.writeErrorLog("复制文件出错: " + e);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
if(docIds == null){
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
try{
|
|
|
|
|
docTemplateDao.updateFileInfo(workflowId,fileFieldId,docIds);
|
|
|
|
|
}catch(Exception e){
|
|
|
|
|
toolUtil.writeErrorLog("复制文件更新权限和目录出错: " + e);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
toolUtil.writeDebuggerLog("数据更新成功!" + Arrays.toString(docIds));
|
|
|
|
|
List<String> intList= Arrays.stream(docIds).boxed().collect(Collectors.toList())
|
|
|
|
|
.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
|
|
return String.join(",",intList);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String getAttachmentTemplateId() {
|
|
|
|
|
return attachmentTemplateId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setAttachmentTemplateId(String attachmentTemplateId) {
|
|
|
|
|
this.attachmentTemplateId = attachmentTemplateId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String getIsBrowseBox() {
|
|
|
|
|
return isBrowseBox;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setIsBrowseBox(String isBrowseBox) {
|
|
|
|
|
this.isBrowseBox = isBrowseBox;
|
|
|
|
|
}
|
|
|
|
|
}
|