package com.norteksoft.mms.form.service;
import java.util.Date;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.norteksoft.bs.options.entity.ImportColumn;
import com.norteksoft.bs.options.entity.ImportDefinition;
import com.norteksoft.mms.form.entity.DataTable;
import com.norteksoft.mms.form.entity.TableColumn;
import com.norteksoft.mms.module.entity.Menu;
import com.norteksoft.mms.module.service.MenuManager;
import com.norteksoft.product.api.impl.DefaultDataImporterCallBack;
import com.norteksoft.product.util.ContextUtils;
@Service
@Transactional
public class ImportDataTableManager extends DefaultDataImporterCallBack{
@Autowired
private DataTableManager dataTableManager;
@Autowired
private MenuManager menuManager;
@Autowired
private ImportListViewManager importListViewManager;
@Autowired
private TableColumnManager tableColumnManager;
public String saveSingleRow(String[] rowValue,ImportDefinition importDefinition) {
if("MMS_DATA_TABLE".equals(importDefinition.getCode())){
saveDataTable(rowValue,importDefinition);
}else if("MMS_TABLE_COLUMN".equals(importDefinition.getCode())){
saveTableColumn(rowValue,importDefinition);
}
return "";
}
private void saveTableColumn(String[] rowValue,ImportDefinition importDefinition) {
DataTable table=dataTableManager.getDataTableByTableName(rowValue[0]);
TableColumn column=null;
if("true".equals(StringUtils.lowerCase(rowValue[2]))){//如是删除的字段则新建
column=new TableColumn();
}else{//如不是删除的字段
column=tableColumnManager.getTableColumnByColName(table.getId(),rowValue[1]);
if(column==null){//该字段不存在,则新建
column=new TableColumn();
}
}
int i=0;
for(ImportColumn importColumn:importDefinition.getImportColumns()){
if(i==0){
column.setDataTableId(table.getId());
}else{
if(i<rowValue.length && StringUtils.isNotEmpty(rowValue[i])){
String enumname="";
if(i==6)
enumname="com.norteksoft.mms.form.enumeration.DataType";
importListViewManager.setValue(column,importColumn,rowValue[i],enumname);
}
}
i++;
}
column.setCreatedTime(new Date());
column.setCreator(ContextUtils.getLoginName());
column.setCreatorName(ContextUtils.getUserName());
column.setCompanyId(ContextUtils.getCompanyId());
tableColumnManager.saveColumn(column,false);
}
private void saveDataTable(String[] rowValue,ImportDefinition importDefinition) {
DataTable table=dataTableManager.getDataTableByTableName(rowValue[0]);
if(table==null){
table=new DataTable();
}
int i=0;
for(ImportColumn importColumn:importDefinition.getImportColumns()){
if(i==4){
Menu menu=menuManager.getMenuByCode(rowValue[i]);
table.setMenuId(menu.getId());
}else{
if(i<rowValue.length && StringUtils.isNotEmpty(rowValue[i])){
String enumname="";
if(i==3)
enumname="com.norteksoft.product.enumeration.DataState";
importListViewManager.setValue(table,importColumn,rowValue[i],enumname);
}
}
i++;
}
table.setCreatedTime(new Date());
table.setCreator(ContextUtils.getLoginName());
table.setCreatorName(ContextUtils.getUserName());
table.setCompanyId(ContextUtils.getCompanyId());
dataTableManager.saveDataTable(table);
}
}