package com.norteksoft.mms.form.service; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.beanutils.BeanUtils; 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.dao.JqGridPropertyDao; import com.norteksoft.mms.form.entity.DataTable; import com.norteksoft.mms.form.entity.GroupHeader; import com.norteksoft.mms.form.entity.JqGridProperty; import com.norteksoft.mms.form.entity.ListColumn; import com.norteksoft.mms.form.entity.ListView; import com.norteksoft.mms.form.entity.TableColumn; import com.norteksoft.mms.form.enumeration.DataType; 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; import com.norteksoft.product.util.JsonParser; @Service @Transactional public class ImportListViewManager extends DefaultDataImporterCallBack{ @Autowired private ListViewManager listViewManager; @Autowired private ListColumnManager listColumnManager; @Autowired private DataTableManager dataTableManager; @Autowired private MenuManager menuManager; @Autowired private JqGridPropertyDao jqGridPropertyDao; @Autowired private TableColumnManager tableColumnManager; @Autowired private GroupHeaderManager groupHeaderManager; public String saveSingleRow(String[] rowValue,ImportDefinition importDefinition) { if("MMS_LIST_VIEW".equals(importDefinition.getCode())){ saveListView(rowValue,importDefinition); }else if("MMS_LIST_COLUMN".equals(importDefinition.getCode())){ saveListColumn(rowValue,importDefinition); }else if("MMS_GROUP_HEADER".equals(importDefinition.getCode())){ saveGroupHeader(rowValue,importDefinition); } return ""; } private void saveGroupHeader(String[] rowValue,ImportDefinition importDefinition) { ListView listview=listViewManager.getListViewByCode(rowValue[0]); if(listview!=null){ GroupHeader header=groupHeaderManager.getGroupHeaderByInfo(listview.getId(), rowValue[1], Integer.parseInt(rowValue[2]), rowValue[3]); if(header==null){ header=new GroupHeader(); } header.setListViewId(listview.getId()); header.setStartColumnName(rowValue[1]); header.setNumberOfColumns( Integer.parseInt(rowValue[2])); header.setTitleText(rowValue[3]); groupHeaderManager.save(header); } } private void saveListColumn(String[] rowValue,ImportDefinition importDefinition) { ListView listview=listViewManager.getListViewByCode(rowValue[0]); ListColumn col=new ListColumn(); col.setCompanyId(ContextUtils.getCompanyId()); int i=0; for(ImportColumn importColumn:importDefinition.getImportColumns()){ if(i==0){ col.setListView(listview); }else if(i==1){ TableColumn tbCol=null; if(listview!=null&&listview.getDataTable()!=null)tbCol=tableColumnManager.getTableColumnByColName(listview.getDataTable().getId(), rowValue[i]); col.setTableColumn(tbCol); }else{ if(i<rowValue.length && StringUtils.isNotEmpty(rowValue[i])){ String enumname=""; if(i==10){ enumname="com.norteksoft.mms.form.enumeration.EditControlType"; }else if(i==11){ enumname="com.norteksoft.mms.form.enumeration.QueryType"; }else if(i==15){ enumname="com.norteksoft.mms.form.enumeration.DefaultValue"; } setValue(col,importColumn,rowValue[i],enumname); } } i++; } listColumnManager.saveColumn(col); } private void saveListView(String[] rowValue,ImportDefinition importDefinition) { ListView listview=listViewManager.getListViewByCode(rowValue[0]); if(listview!=null){ //彻底删除列表对应的所有的字段信息 listColumnManager.deleteAllColumns(listview.getId()); } if(listview==null){ listview=new ListView(); } //创建者姓名,创建者id,创建时间,公司id listview.setCreator(ContextUtils.getLoginName()); listview.setCreatorName(ContextUtils.getUserName()); listview.setCreatedTime(new Date()); listview.setCompanyId(ContextUtils.getCompanyId()); listViewManager.saveListView(listview); int i=0; for(ImportColumn importColumn:importDefinition.getImportColumns()){ if(i==2){ DataTable datatable=dataTableManager.getDataTableByTableName(rowValue[i]); if(datatable!=null)listview.setDataTable(datatable); }else if(i==4){ Menu menu=menuManager.getMenuByCode(rowValue[i]); if(menu!=null)listview.setMenuId(menu.getId()); }else if(i==15 && StringUtils.isNotEmpty(rowValue[i])){ packagingJqGridProperty(rowValue[i],listview); }else{ if(i<rowValue.length && StringUtils.isNotEmpty(rowValue[i])){ String enumname=""; if(i==10){ enumname="com.norteksoft.mms.form.enumeration.OrderType"; }else if(i==18){ enumname="com.norteksoft.mms.form.enumeration.StartQuery"; } setValue(listview,importColumn,rowValue[i],enumname); } } i++; } listViewManager.saveListView(listview); } public void setValue(Object entity,ImportColumn importColumn,String value,String enumname){ try{ if(DataType.DATE.equals(importColumn.getDataType())||DataType.TIME.toString().equals(importColumn.getDataType())){ BeanUtils.copyProperty(entity, importColumn.getName(),getDate(importColumn.getDataType(),value)); }else if(DataType.ENUM.equals(importColumn.getDataType())){ BeanUtils.copyProperty(entity, importColumn.getName(), JsonParser.getEnum(value, enumname)); }else if(DataType.BOOLEAN.equals(importColumn.getDataType())){ String val=value; if(StringUtils.isEmpty(val)){ val="false"; } BeanUtils.copyProperty(entity, importColumn.getName(), val); }else{ BeanUtils.copyProperty(entity, importColumn.getName(), value); } }catch (Exception e) { } } public Date getDate(DataType dataType,String value){ try { if(DataType.DATE.equals(dataType)){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); return simpleDateFormat.parse(value); }else if(DataType.TIME.equals(dataType)){ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return simpleDateFormat.parse(value); } }catch (Exception e) { } return null; } private void packagingJqGridProperty(String value,ListView listview){ String[] jgpStrs=value.split(","); List<JqGridProperty> jgps=new ArrayList<JqGridProperty>(); for(String str:jgpStrs){ if(StringUtils.isNotEmpty(str)){ JqGridProperty jgp=new JqGridProperty(); String[] prs=str.split(":"); jgp.setName(prs.length>=1?prs[0]:""); jgp.setValue(prs.length>=2?prs[1]:""); jgp.setCompanyId(ContextUtils.getCompanyId()); jgp.setListView(listview); jqGridPropertyDao.save(jgp); jgps.add(jgp); } } listview.setJqGridPropertys(jgps); } }