提交 606b4451 编写于 作者: sq3536's avatar sq3536

move

上级 25c1f1f0
......@@ -67,13 +67,15 @@ public class DataSetModel extends BaseModel{
}
private String select="";
private String select=null;
private String from="";
private String from=null;
private String groupBy="";
private String where=null;
private String orderBy="";
private String groupBy=null;
private String orderBy=null;
private List<String> queries;
......
......@@ -15,6 +15,7 @@ import net.ibizsys.model.dataentity.defield.IPSLinkDEField;
import net.ibizsys.model.dataentity.der.IPSDER1N;
import net.ibizsys.model.dataentity.der.IPSDERBase;
import net.ibizsys.model.dataentity.der.IPSDERInherit;
import net.ibizsys.model.dataentity.ds.IPSDEDataQueryCodeCond;
import net.ibizsys.model.dataentity.ds.IPSDEDataSetGroupParam;
import net.ibizsys.model.dataentity.ds.PSDEDataSetGroupParamImpl;
import org.springframework.util.Assert;
......@@ -71,16 +72,34 @@ public class EntityModel extends BaseModel {
return this;
}
private List<DataSetModel> dataQueries;
private Map<String,DataSetModel> dataQueries;
public EntityModel addDataQueries(DataSetModel dataSet)
{
if(dataQueries==null)
dataQueries=new ArrayList<>();
dataQueries.add(dataSet);
dataQueries=new LinkedHashMap<>();
dataQueries.put(dataSet.codeName,dataSet);
return this;
}
public DataSetModel getViewDataQuery()
{
if(dataQueries!=null)
{
return dataQueries.get("View");
}
return null;
}
public DataSetModel getDefaultDataQuery()
{
if(dataQueries!=null)
{
return dataQueries.get(getDataEntity().getDefaultPSDEDataSet().getCodeName());
}
return null;
}
private List<DataSetModel> dataSets;
public EntityModel addDataSet(DataSetModel dataSet)
......@@ -90,6 +109,7 @@ public class EntityModel extends BaseModel {
dataSets.add(dataSet);
return this;
}
private List<FieldModel> fields;
......@@ -382,6 +402,11 @@ public class EntityModel extends BaseModel {
return false;
}
public boolean isEnableES()
{
return "elasticsearch".equalsIgnoreCase(this.getDataEntity().getUserTag());
}
public boolean isLogicInherit()
{
if(this.getDataEntity().getMinorPSDERs()==null)
......@@ -624,15 +649,32 @@ public class EntityModel extends BaseModel {
if(dataQuery.getAllPSDEDataQueryCodes()!=null)
{
dataQuery.getAllPSDEDataQueryCodes().forEach(dq->{
String select=TransUtils.contextParamConvert(dq.getQueryCode());
String where=null;
if(dq.getPSDEDataQueryCodeConds()!=null)
{
int i=0;
boolean b=TransUtils.checkIgnoreNullvalueCond(dq.getPSDEDataQueryCodeConds());
for(IPSDEDataQueryCodeCond cond:dq.getPSDEDataQueryCodeConds())
{
if(i==0)
where=" where ";
else if(i>0)
where=where.concat(" and ");
String code=TransUtils.getQueryCode(dq);
where=where.concat(b?TransUtils.checkNullContextParamConvert(cond.getCustomCond()):TransUtils.contextParamConvert(cond.getCustomCond()));
i++;
}
}
DataSetModel dsModel=new DataSetModel();
dsModel.setEntity(this);
dsModel.setName(dataQuery.getName());
dsModel.setDatasetId(this.getEntityName().toLowerCase()+"-dq-"+dataQuery.getCodeName()+"-"+dq.getDBType().toLowerCase().replace("mysql5","mysql"))
.setDsType(dq.getDBType().toLowerCase().replace("mysql5","mysql"))
.setDatasetName(dataQuery.getLogicName()).setCodeName(dataQuery.getCodeName())
.setDsCode(code);
.setSelect(select).setWhere(where)
.setDsCode(select.concat(where==null?"":where));
this.addQueries(dsModel);
this.addDataQueries(dsModel);
......@@ -653,6 +695,8 @@ public class EntityModel extends BaseModel {
String from=" from ( %s ) t1 ";
String where=null;
String groupBy=null;
String orderBy=null;
......@@ -769,7 +813,7 @@ public class EntityModel extends BaseModel {
}
}
String sqlFormat=select.concat(from).concat(groupBy==null?"":groupBy).concat(orderBy==null?"":orderBy);
String sqlFormat=select.concat(from).concat(where==null?"":where).concat(groupBy==null?"":groupBy).concat(orderBy==null?"":orderBy);
DataSetModel dqModel=new DataSetModel(this,dataSet);
dqModel.setDatasetId(this.getEntityName().toLowerCase()+"-ds-"+dataSet.getCodeName()+"-"+entry.getKey().toLowerCase().replace("mysql5","mysql"))
.setDsType(entry.getKey().toLowerCase().replace("mysql5","mysql"))
......
......@@ -45,6 +45,11 @@ public class FieldModel extends BaseModel {
return getFieldName().toLowerCase();
}
public String getAlias() {
String alias=this.getCodeName().toCamelCase();
return getColumnName().equalsIgnoreCase(alias)&&(!"PICKUP".equals(getDataEntityField().getDataType()))?null:alias;
}
public String getJsonName() {
return getDataEntityField().getCodeName().toLowerCase();
}
......
......@@ -26,7 +26,7 @@ public class TransUtils {
private static String contextParamConvert(String contextParam)
public static String contextParamConvert(String contextParam)
{
String resultParam=getJavaSqlCode(contextParam).replaceAll("(IN|in) \\(\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)}\\)","$1 (\\${srf.$2.$3})");
resultParam=resultParam.replaceAll("\\$\\{srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)}","#{srf.$1.$2}");
......@@ -81,14 +81,14 @@ public class TransUtils {
}
private static String checkNullContextParamConvert(String contextParam) {
public static String checkNullContextParamConvert(String contextParam) {
String resultParam = getJavaSqlCode(contextParam).replaceAll("<#assign _value=srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)><#if _value\\?length gt 0>(.*?)\\(\\$\\{_value}\\)<#else>1=1</#if>"," ('${srf.$1.$2}'=null or '${srf.$1.$2}'='' or $4 \\${srf.$1.$2} ");
resultParam = resultParam.replaceAll("<#assign _value=srf(datacontext|sessioncontext|webcontext)\\('(\\w+)','(.*?)'\\)><#if _value\\?length gt 0>(.*?)\\$\\{_value}(.*?)?<#else>1=1</#if>", " (#{srf.$1.$2}=null or #{srf.$1.$2}='' or $4#{srf.$1.$2}$5)");
resultParam=contextParamConvert(resultParam);
return resultParam;
}
private static boolean checkIgnoreNullvalueCond(List<IPSDEDataQueryCodeCond> list)
public static boolean checkIgnoreNullvalueCond(List<IPSDEDataQueryCodeCond> list)
{
if(list!=null)
{
......
package {{packageName}}.core.{{module}}.filter;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.HashMap;
import lombok.*;
import lombok.extern.slf4j.Slf4j;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.alibaba.fastjson.annotation.JSONField;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
{{#entity.enableES}}
import org.elasticsearch.index.query.QueryBuilders;
{{/entity.enableES}}
import {{packageName}}.util.filter.QueryWrapperContext;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import {{packageName}}.core.{{module}}.filte.{{entity.codeName}};
/**
* 关系型数据实体[{{entity.codeName}}] 查询条件对象
*/
@Slf4j
@Data
public class {{entity.codeName}}SearchContext extends QueryWrapperContext<{{entity.codeName}}> {
\ No newline at end of file
package {{packageName}}.{{module}}.mapper;
package {{packageName}}.core.{{module}}.mapper;
import java.util.List;
import org.apache.ibatis.annotations.*;
......@@ -9,8 +9,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import java.util.Map;
import org.apache.ibatis.annotations.Select;
import {{packageName}}.{{module}}.domain.{{entity.codeName}};
import {{packageName}}.{{module}}.filter.{{entity.codeName}}SearchContext;
import {{packageName}}.core.{{module}}.domain.{{entity.codeName}};
import {{packageName}}.core.{{module}}.filter.{{entity.codeName}}SearchContext;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import java.io.Serializable;
......@@ -25,8 +25,8 @@ public interface {{entity.codeName}}Mapper extends BaseMapper<{{entity.codeName}
{{#entity.dataSets}}
Page<{{entity.codeName}}> search{{codeName}}(IPage page, @Param("srf") {{entity.codeName}}SearchContext context, @Param("ew") Wrapper<{{entity.codeName}}> wrapper);
List<{{entity.codeName}}> list{{codeName}}(@Param("srf") {{entity.codeName}}SearchContext context, @Param("ew") Wrapper<{{entity.codeName}}> wrapper);
Page<{{#if enableGroup}}Map{{else}}{{entity.codeName}}{{/if}}> search{{codeName.pascalCase}}(IPage page, @Param("srf") {{entity.codeName}}SearchContext context, @Param("ew") Wrapper<{{entity.codeName}}> wrapper);
List<{{#if enableGroup}}Map{{else}}{{entity.codeName}}{{/if}}> list{{codeName.pascalCase}}(@Param("srf") {{entity.codeName}}SearchContext context, @Param("ew") Wrapper<{{entity.codeName}}> wrapper);
{{/entity.dataSets}}
@Override
......@@ -92,7 +92,7 @@ public interface {{entity.codeName}}Mapper extends BaseMapper<{{entity.codeName}
boolean deleteBySQL(@Param("sql") String sql, @Param("et")Map param);
{{#entity.references}}
List<{{entity.codeName}}> selectBy{{fkField.codeName.pascalCase}}(@Param("{{fkField.name.lowerCase}}") Serializable {{fkField.codeName.camelCase}});
List<{{entity.codeName}}> selectBy{{fkField.codeName.pascalCase}}(@Param("{{fkField.codeName.camelCase}}") Serializable {{fkField.codeName.camelCase}});
{{/entity.references}}
}
\ No newline at end of file
package {{packageName}}.{{entity.module}}.service;
package {{packageName}}.core.{{module}}.service;
import java.io.Serializable;
import java.sql.Timestamp;
......@@ -18,8 +18,8 @@ import org.springframework.cache.annotation.CacheEvict;
import com.baomidou.mybatisplus.extension.service.IService;
import om.baomidou.dynamic.datasource.annotation.DS;
import {{packageName}}.{{entity.module}}.domain.{{entity.codeName}};
import {{packageName}}.{{entity.module}}.filter.{{entity.codeName}}SearchContext;
import {{packageName}}.core.{{module}}.domain.{{entity.codeName}};
import {{packageName}}.core.{{module}}.filter.{{entity.codeName}}SearchContext;
{{#dsName}}
@DS("{{entity.dataSource}}")
......@@ -64,8 +64,8 @@ public interface I{{entity.codeName}}Service extends IService<{{entity.codeName}
{{/each}}
{{#entity.dataSets}}
Page<{{entity.codeName}}> search{{codeName}}({{entity.codeName}}SearchContext context);
List<{{entity.codeName}}> list{{codeName}}({{entity.codeName}}SearchContext context);
Page<{{#if enableGroup}}Map{{else}}{{entity.codeName}}{{/if}}> search{{codeName}}({{entity.codeName}}SearchContext context);
List<{{#if enableGroup}}Map{{else}}{{entity.codeName}}{{/if}}> list{{codeName}}({{entity.codeName}}SearchContext context);
{{/entity.dataSets}}
{{#entity.references}}
......
package {{packageName}}.core.{{entity.module}}.service.impl;
package {{packageName}}.core.{{module}}.service.impl;
import java.io.Serializable;
import java.util.ArrayList;
......@@ -27,10 +27,10 @@ import io.seata.spring.annotation.GlobalTransactional;
</system.enableGlobalTransaction>
import org.springframework.transaction.annotation.Transactional;
import org.springframework.context.annotation.Lazy;
import {{packageName}}.core.{{entity.module}}.domain.{{entity.codeName}};
import {{packageName}}.core.{{entity.module}}.filter.{{entity.codeName}}SearchContext;
import {{packageName}}.core.{{entity.module}}.service.I{{entity.codeName}}Service;
import {{packageName}}.core.{{entity.module}}.mapper.${item.getCodeName()}Mapper;
import {{packageName}}.core.{{module}}.domain.{{entity.codeName}};
import {{packageName}}.core.{{module}}.filter.{{entity.codeName}}SearchContext;
import {{packageName}}.core.{{module}}.service.I{{entity.codeName}}Service;
import {{packageName}}.core.{{module}}.mapper.${item.getCodeName()}Mapper;
import {{packageName}}.util.helper.CachedBeanCopier;
import {{packageName}}.util.helper.DEFieldCacheMap;
import com.alibaba.fastjson.JSONObject;
......@@ -82,23 +82,23 @@ public class {{entity.codeName}}ServiceImpl extends ServiceImpl<{{entity.codeNam
createIndexMajorEntityData(et);
{{/entity.isIndexSubDE}}
{{#if entity.isLogicInheritDE}}
if(!update(et, (Wrapper) et.getUpdateWrapper(true).eq("{{entity.keyfield.name.lowerCase}", et.get{{keyfield.codeName.pascalCase}}())))
if(!update(et, (Wrapper) et.getUpdateWrapper(true).eq("{{entity.keyField.name.lowerCase}}", et.get{{keyField.codeName.pascalCase}}())))
return false;
{{/else}}
{{else}}
if(!this.retBool(this.baseMapper.insert(et)))
return false;
{{/if}}
{{#each entity.nesteds}}
{{#unless listCode}}
{{#unless columnName}}
{{camelCase entityCodeName}}service.saveBy{{codeName.pascalCase}};
{{camelCase entityCodeName}}Service.saveBy{{fkField.codeName.pascalCase}}(key,et.{{codeName.camelCase}});
{{/unless}}
{{/unless}}
{{/each}}
{{#entity.hasReferences}}
${srfr7templcaseformat(MinorEntity.getCodeName())}Service.saveBy${srfr7templcaseformat(MajorDerField.codeName)?cap_first}(et.get${srfr7templcaseformat(keyfield.codeName)?cap_first}(), et.get${srfr7templcaseformat(listcode)?cap_first}());
{{/entity.hasReferences}}
return true;
}
{{#eq entity.actions.create.transactionMode "GLOBAL"}}@GlobalTransactional{{/eq}}{{#eq entity.actions.create.transactionMode "DEFAULT"}}@Transactional{{/eq}}
public boolean createBatch(List<{{entity.codeName}}> list) {
......@@ -129,8 +129,8 @@ public class {{entity.codeName}}ServiceImpl extends ServiceImpl<{{entity.codeNam
{{/entity.actions}}
{{#entity.dataSets}}
Page<{{entity.codeName}}> search{{codeName}}({{entity.codeName}}SearchContext context);
List<{{entity.codeName}}> list{{codeName}}({{entity.codeName}}SearchContext context);
Page<{{#if enableGroup}}Map{{else}}{{entity.codeName}}{{/if}}> search{{codeName.pascalCase}}({{entity.codeName}}SearchContext context);
List<{{#if enableGroup}}Map{{else}}{{entity.codeName}}{{/if}}> list{{codeName.pascalCase}}({{entity.codeName}}SearchContext context);
{{/entity.dataSets}}
{{#entity.references}}
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="{{packageName}}.{{module}}.mapper.{{entity.codeName}}Mapper">
<mapper namespace="{{packageName}}.core.{{module}}.mapper.{{entity.codeName}}Mapper">
<!--通过mybatis将查询结果注入到entity中,通过配置autoMapping="true"由mybatis自动处理映射关系 -->
<resultMap id="${de.codeName}ResultMap" type="${pub.getPKGCodeName()}.core.${de.getPSSystemModule().codeName?lower_case}.domain.${de.codeName}" autoMapping="true">
<#if de.getKeyPSDEField().isPhisicalDEField()==true>
<id property="${srfr7templcaseformat(de.getKeyPSDEField().codeName)}" column="${de.getKeyPSDEField().getName()?lower_case}" /><!--主键字段映射-->
</#if>
<#comment>外键值字段映射:由于需要将一个数据库列注入到2个domian属性中(主关系实体对象),由于已经手动将列映射给主关系对象,所以autoMapping将不会自动注入外键id,需要再次声明映射关系</#comment>
<#comment>属性名称与代码名称不一致时,强制进行映射</#comment>
<#list item.getPSDEFields() as defield>
<#if defield.isKeyDEField()!=true && ((defield.getDataType())!"")!='ONE2MANYDATA'>
<#if srfr7templcaseformat(defield.codeName)?lower_case != defield.name?lower_case || defield.getDataType()=='PICKUP'>
<result property="${srfr7templcaseformat(defield.codeName)}" column="${defield.getName()?lower_case}" />
</#if>
</#if>
</#list>
<resultMap id="{{entity.codeName}}ResultMap" type="{{packageName}}.core.{{module}}.domain.{{entity.codeName}}" autoMapping="true">
{{#entity.keyField.phisicalDEField}}
<id property="{{entity.keyField.codeName.camelCase}}" column="{{entity.keyField.columnName}}" /><!--主键字段映射-->
{{/entity.keyField.phisicalDEField}}
{{#each entity.fields}}
{{#alias}}
{{#unless deepStructure}}
{{#unless keyDEField}}
<result property="{{alias}}" column="{{columnName}}" />
{{/unless}}
{{/unless}}
{{/alias}}
{{/each}}
{{#each entity.nesteds}}
{{#columnName}}
<result property="{{codeName.camelCase}}" column="{{columnName}}" typeHandler="{{packageName}}.core.{{module}}.domain.handlers.{{entityCodeName}}TypeHandler" />
{{/columnName}}
{{/each}}
{{#each entity.references}}
<association property="{{codeName.camelCase}}" javaType="{{packageName}}.core.{{module}}.domain.{{entityCodeName}}" column="{{fkField.columnName}}" select="{{packageName}}.core.{{module}}.mapper.{{entityCodeName}}Mapper.selectById" fetchType="lazy"></association>
{{/each}}
</resultMap>
<select id="selectById" resultMap="{{entity.codeName}}ResultMap">
{{#if entity.viewDataQuery}}
{{#if entity.keyField.phisicalDEField}}
<include refid="view" />
{{#if entity.viewDataQuery.where}}
and
{{else}}
where
{{/if}}
t1.{{entity.keyField.columnName}}=#{id}
{{else}}
select t1.* from ( <include refid="view" /> ) t1
where {{entity.keyField.columnName}}=#{id}
{{/if}}
{{else}}
select t1.* from {{entity.viewName}} t1 where {{entity.keyField.columnName}}=#{id}
{{/if}}
</select>
{{#each entity.dataQueries}}
<sql id="{{codeName.camelCase}}" databaseId="{{dsType}}">
<![CDATA[
{{dsCode}}
]]>
</sql>
{{/each}}
{{#each entity.dataSets}}
<select id="search{{codeName.pascalCase}}" parameterType="{{packageName}}.core.{{module}}.filter.{{entity.codeName}}SearchContext" resultType={{#if enableGroup}}"java.util.HashMap"{{else}}"{{entity.codeName}}ResultMap"{{/if}}>
{{select}}
from (
{{#each queries}}
<include refid="{{camelCase this}}"/>
{{#unless @last}}
union all
{{/unless}}
{{/each}}
) t1
<where><if test="ew!=null and ew.sqlSegment!=null and !ew.emptyOfWhere">${ew.sqlSegment}</if></where>
<if test="ew!=null and ew.sqlSegment!=null and ew.emptyOfWhere">${ew.sqlSegment}</if>
{{groupBy}}
{{orderBy}}
</select>
{{/each}}
{{#each entity.references as | reference |}}
<select id="selectBy{{reference.fkField.codeName.pascalCase}}" resultMap="{{entity.codeName}}ResultMap">
{{#if entity.defaultDataQuery}}
<include refid="{{entity.defaultDataQuery.codeName.camelCase}}" />
{{#if entity.defaultDataQuery.where}}
and
{{else}}
where
{{/if}}
{{else}}
select t1.* from {{#if entity.viewName}}{{entity.viewName}}{{else}}{{entity.tableName}}{{/if}} t1 where
{{/if}}
{{reference.fkField.columnName}} = #{{{reference.fkField.codeName.camelCase}}}
</select>
{{/each}}
</mapper>
\ No newline at end of file
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册