JSD-8204 ITASK集成(接口+单点)
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.

205 lines
6.2 KiB

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