Template template = das.queryTemplate(templateId);
if (template == null) {
return "无法找到该表单";
}
Flow flow = das.queryFlow(template.getFlowId());
if (flow == null) {
return "无法找到该流程";
}
List<String> allQuitUser = new ArrayList<String>();
if (quitUserName != null && quitUserName.equals("all")) {
List<UserInfo> allQuitUserList = getAllQuitUser(template, flow, roleId);
for (UserInfo userInfo : allQuitUserList) {
allQuitUser.add(userInfo.getUserName());
}
}else {
allQuitUser.add(quitUserName);
}
List<Data> allNeedMoveDataList = new ArrayList<Data>();
for (String user : allQuitUser) {
allNeedMoveDataList.addAll(getTemplateUserNoCloseData(template, flow, user));
}
StringBuffer errorDataBuffer = new StringBuffer();
for (Data tempData : allNeedMoveDataList) {
Data data = das.queryData(tempData.getId(), templateId);
if (data != null) {
try {
Map<String, Pair<Object, Object>> baseValueMap = new HashMap<String, Pair<Object,Object>>();
Map<UUID, Pair<Object, Object>> extValueMap = new HashMap<UUID, Pair<Object,Object>>();
if(data.getAssignUsername() == null && newUserName != null || data.getAssignUsername() != null && newUserName == null
|| data.getAssignUsername() != null && newUserName != null && !data.getAssignUsername().equals(newUserName)){
baseValueMap.put("assignUser", new Pair<Object, Object>(data.getAssignUsername(), newUserName));
}
data.setAssignUsername(newUserName);
data.setObject("logCreateUser", key.getUsername());
data.setObject("logActionId", null);
if(actionComment != null && actionComment.length() > 0){
data.setObject("logActionComment", actionComment);
}else {
data.setObject("logActionComment", "");
}
data.setObject("logBaseValueMap", baseValueMap);
data.setObject("logExtValueMap", extValueMap);
Pair<ErrorCode, String> result = das.modifyData(data);
if(result.getFirst().equals(ErrorCode.success)){
das.commitTranscation();
}else{
errorDataBuffer.append(errorDataBuffer.length() > 0 ?"," :"").append(XMLUtil.toSafeXMLString(data.getTitle()));
das.rollbackTranscation();
}
} catch (Exception e) {
errorDataBuffer.append(errorDataBuffer.length() > 0 ?"," :"").append(XMLUtil.toSafeXMLString(data.getTitle()));
e.printStackTrace();
}
}
}
if (errorDataBuffer.length() > 0) {
return "转移失败,错误数据有:" + errorDataBuffer.toString();
}else {
//从表单中删除人员
Set<Right> allRights = flow.getRightSet();
Iterator<Right> iterator = allRights.iterator();
while (iterator.hasNext()) {
if (allQuitUser.contains(iterator.next().getUsername())) {
iterator.remove();
}
}
flow.setRightSet(allRights);
ErrorCode errorCode = das.updateFlow(flow);
if (errorCode.equals(ErrorCode.success)) {
das.updateCache(DataAccessAction.update, flow.getId().getValue(), flow);
}else {
das.rollbackTranscation();
}
//删除定时器数据