You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
6.2 KiB
206 lines
6.2 KiB
3 years ago
|
package com.fr.plugin.it.handler;
|
||
|
|
||
|
import com.fr.base.SynchronizedLiveDataModelUtils;
|
||
|
import com.fr.base.TableData;
|
||
|
import com.fr.data.api.TableDataAssist;
|
||
|
import com.fr.decision.authority.data.User;
|
||
|
import com.fr.decision.fun.impl.BaseHttpHandler;
|
||
|
import com.fr.decision.webservice.bean.user.DepartmentPostBean;
|
||
|
import com.fr.decision.webservice.bean.user.UserBean;
|
||
|
import com.fr.decision.webservice.bean.user.UserUpdateBean;
|
||
|
import com.fr.general.data.DataModel;
|
||
|
import com.fr.general.data.TableDataException;
|
||
|
import com.fr.plugin.it.bean.OrgData;
|
||
|
import com.fr.plugin.it.dbAccessProvider.DataBean;
|
||
|
import com.fr.plugin.it.dbAccessProvider.DbController;
|
||
|
import com.fr.plugin.it.utils.FRDepartmentUtils;
|
||
|
import com.fr.plugin.it.utils.FRUserUtils;
|
||
|
import com.fr.plugin.it.utils.FRUtils;
|
||
|
import com.fr.plugin.it.utils.Utils;
|
||
|
import com.fr.plugin.transform.FunctionRecorder;
|
||
|
import com.fr.script.Calculator;
|
||
|
import com.fr.third.springframework.web.bind.annotation.RequestMethod;
|
||
|
import javax.servlet.http.HttpServletRequest;
|
||
|
import javax.servlet.http.HttpServletResponse;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.List;
|
||
|
|
||
|
@FunctionRecorder
|
||
|
public class Login extends BaseHttpHandler {
|
||
|
|
||
|
|
||
|
public Login() {
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public RequestMethod getMethod() {
|
||
|
return RequestMethod.GET;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public String getPath() {
|
||
|
return "/testExportData";
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean isPublic() {
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void handle(HttpServletRequest req, HttpServletResponse res) throws Exception {
|
||
|
//获取请求参数
|
||
|
String name = req.getParameter("name");
|
||
|
DataModel data = getTable(Calculator.createCalculator(),name);
|
||
|
List<OrgData> orgDatas = dataToBean(data);
|
||
|
exportData(orgDatas);
|
||
|
}
|
||
|
|
||
|
private void exportData(List<OrgData> orgDatas){
|
||
|
List<OrgData> newDatas = new ArrayList<OrgData>();
|
||
|
|
||
|
for(OrgData orgData:orgDatas){
|
||
|
try{
|
||
|
if("30000000".equals(orgData.getZZDWBM())){
|
||
|
orgData.setFJDBMID("decision-dep-root");
|
||
|
addOrgAndUser(orgData);
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
String porgId = getFRDPID(orgData.getFJDBM());
|
||
|
|
||
|
if(Utils.isNullStr(porgId)){
|
||
|
newDatas.add(orgData);
|
||
|
continue;
|
||
|
}
|
||
|
|
||
|
orgData.setFJDBMID(porgId);
|
||
|
addOrgAndUser(orgData);
|
||
|
}
|
||
|
catch(Exception e){
|
||
|
FRUtils.FRLogError("异常:"+e.getMessage());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if(newDatas.size() >0){
|
||
|
exportData(newDatas);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//添加组织及用户
|
||
|
private void addOrgAndUser(OrgData orgData) throws Exception {
|
||
|
String orgId = getFRDPID(orgData.getZZDWBM());
|
||
|
|
||
|
if(Utils.isNullStr(orgId)){
|
||
|
orgId = addOrg(orgData);
|
||
|
}
|
||
|
|
||
|
String userId = addUser(orgData.getYGH());
|
||
|
changeOrg(orgId,userId);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 将组织关系添加进去
|
||
|
* @param orgId
|
||
|
* @param userId
|
||
|
* @throws Exception
|
||
|
*/
|
||
|
private void changeOrg(String orgId,String userId) throws Exception {
|
||
|
UserUpdateBean userUpdateBean = new UserUpdateBean();
|
||
|
userUpdateBean.setDepartmentId(orgId);
|
||
|
userUpdateBean.setAddUserIds(new String[]{userId});
|
||
|
|
||
|
FRUserUtils.updateDepartmentPostUsers(orgId,"",userUpdateBean);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 添加帆软用户并返回用户id
|
||
|
* @param username
|
||
|
* @return
|
||
|
* @throws Exception
|
||
|
*/
|
||
|
private String addUser(String username) throws Exception {
|
||
|
// String username = orgData.getYGH();
|
||
|
// String psd = orgData.getMM();
|
||
|
// String name = orgData.getXM();
|
||
|
// String mobile = orgData.getSJH();
|
||
|
//
|
||
|
// UserBean userBean = new UserBean();
|
||
|
//
|
||
|
// if(Utils.isNotNullStr(name)){
|
||
|
// userBean.setRealName(name);
|
||
|
// }
|
||
|
//
|
||
|
// if(Utils.isNotNullStr(psd)){
|
||
|
// userBean.setPassword(psd);
|
||
|
// }
|
||
|
//
|
||
|
// if(Utils.isNotNullStr(mobile)){
|
||
|
// userBean.setMobile(mobile);
|
||
|
// }
|
||
|
//
|
||
|
// userBean.setUsername(username);
|
||
|
//// userBean.setEmail(email);
|
||
|
// FRUserUtils.addUser(userBean);
|
||
|
User user = FRUserUtils.getUserByUserName(username);
|
||
|
|
||
|
return user.getId();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* 添加帆软组织和itask与帆软组织关联表,并返回帆软组织id
|
||
|
* @param orgData
|
||
|
* @return
|
||
|
* @throws Exception
|
||
|
*/
|
||
|
private String addOrg(OrgData orgData) throws Exception {
|
||
|
//添加帆软组织
|
||
|
DepartmentPostBean dpb = FRDepartmentUtils.addDP(orgData.getFJDBMID(),orgData.getZZDWMC());
|
||
|
|
||
|
//添加itask与帆软关联表
|
||
|
DataBean dataBean = new DataBean();
|
||
|
dataBean.setDid(dpb.getId());
|
||
|
dataBean.setCode(orgData.getZZDWBM());
|
||
|
DbController.add(dataBean);
|
||
|
|
||
|
return dpb.getId();
|
||
|
}
|
||
|
|
||
|
//根据itask机构编码获取帆软对应组织机构id
|
||
|
private String getFRDPID(String orgCode) {
|
||
|
String pId = DbController.getOrg(orgCode).getDid();
|
||
|
return pId;
|
||
|
}
|
||
|
|
||
|
private List<OrgData> dataToBean(DataModel data) throws TableDataException {
|
||
|
int rowindex = data.getRowCount();
|
||
|
List<OrgData> result = new ArrayList<OrgData>();
|
||
|
for(int i=0;i<rowindex;i++){
|
||
|
OrgData orgData = new OrgData();
|
||
|
orgData.setYGH(String.valueOf(data.getValueAt(i,0)));
|
||
|
orgData.setXM(String.valueOf(data.getValueAt(i,1)));
|
||
|
orgData.setSJH(String.valueOf(data.getValueAt(i,3)));
|
||
|
orgData.setMM(String.valueOf(data.getValueAt(i,4)));
|
||
|
orgData.setZZDWBM(String.valueOf(data.getValueAt(i,5)));
|
||
|
orgData.setZZDWMC(String.valueOf(data.getValueAt(i,6)));
|
||
|
orgData.setFJDBM(String.valueOf(data.getValueAt(i,7)));
|
||
|
|
||
|
result.add(orgData);
|
||
|
}
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
public final static DataModel getTable(Calculator calculator, String dsname ){
|
||
|
DataModel dm = SynchronizedLiveDataModelUtils.getSELiveDataModel4Share(calculator, dsname);
|
||
|
if ( null == dm ) {
|
||
|
TableData ds = TableDataAssist.getTableData(calculator, dsname);
|
||
|
dm = ds == null ? null : ds.createDataModel(calculator);
|
||
|
}
|
||
|
return dm;
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
|