package com.boman.system.common; import com.alibaba.fastjson.JSONObject; import com.boman.common.core.utils.SpringUtils; import com.boman.common.redis.RedisKey; import com.boman.common.redis.service.RedisService; import com.boman.gen.domain.GenTable; import com.google.common.base.Strings; import com.google.common.collect.Lists; import com.google.common.collect.Maps; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; import javax.annotation.Resource; import java.sql.Timestamp; import java.util.*; /** * @author shiqian * @description * @date 2021年03月22日 09:58 **/ @Service public class TableServiceContext { private final static String PREFIX = "Controller:/event/do"; /** * 当前表 */ private GenTable table; /** * 真实表名 */ private String realTableName; /** * 动作名(ADD,SAVE,SUBMIT,VOID,UNSUBMIT) */ private String actionName; //Controller:/event/doAdd /** * 业务发生的时间戳 */ private Timestamp currentTime; /** * 上行的数据 * 每个row对象对应到一条单据(如果存在事务,应该在这个级别上体现) */ private List rows; /** * 本次请求存放的临时数据 * !!慎用,最好不要在各个对象间传递 */ private Map values; private boolean isDelMtable; /** * 是否批量新增 */ private boolean isInsertBacth = false; private TableServiceContext() { values = Maps.newHashMap(); } @Resource private RedisService redisService; public static TableServiceContext createFrom(BaseTableDTO baseTableDTO) { TableServiceContext result = new TableServiceContext(); String tableName = baseTableDTO.getTable(); if (StringUtils.isEmpty(tableName)) { throw new IllegalArgumentException("表名参数不能为空"); } //从redis中获取表信息 RedisService redisService = SpringUtils.getBean(RedisService.class); result.table = redisService.getCacheObject(RedisKey.TABLE_INFO + tableName); if (result.table == null) { throw new IllegalArgumentException(tableName + "表信息不存在"); } result.realTableName = result.table.getTableName(); if (Strings.isNullOrEmpty(result.realTableName)) { throw new IllegalArgumentException(tableName + "表名不存在"); } // 前台传过来的数据 JSONObject fixedData = baseTableDTO.getFixedData(); //删除 Boolean isdelmtable = baseTableDTO.getDelMTable(); JSONObject tabItem = baseTableDTO.getTabItem(); if (isdelmtable != null) { result.isDelMtable = isdelmtable; } result.currentTime = new Timestamp(System.currentTimeMillis()); // 获取objid判断 新增或更新 Long objid = baseTableDTO.getObjId(); MainTableRecord mainRowData = new MainTableRecord(result, result.table, objid, fixedData, tabItem); result.rows = Lists.newArrayList(); result.rows.add(mainRowData); return result; } public GenTable getTable() { return table; } public void setTable(GenTable table) { this.table = table; } public String getRealTableName() { return realTableName; } public void setRealTableName(String realTableName) { this.realTableName = realTableName; } public String getActionName() { return actionName; } public void setActionName(String actionName) { this.actionName = actionName; } public Timestamp getCurrentTime() { return currentTime; } public void setCurrentTime(Timestamp currentTime) { this.currentTime = currentTime; } public List getRows() { return rows; } public void setRows(List rows) { this.rows = rows; } public Map getValues() { return values; } public void setValues(Map values) { this.values = values; } public boolean isDelMtable() { return isDelMtable; } public void setDelMtable(boolean delMtable) { isDelMtable = delMtable; } public boolean isInsertBacth() { return isInsertBacth; } public void setInsertBacth(boolean insertBacth) { isInsertBacth = insertBacth; } // // public Collection getFilters() { // return filters; // } // // public void setFilters(Collection filters) { // this.filters = filters; // } }