package com.zengtengpeng.relation.manyToMany;
import com.zengtengpeng.autoCode.bean.BuildJavaField;
import com.zengtengpeng.autoCode.bean.BuildJavaMethod;
import com.zengtengpeng.autoCode.config.AutoCodeConfig;
import com.zengtengpeng.autoCode.config.BuildJavaConfig;
import com.zengtengpeng.autoCode.config.GlobalConfig;
import com.zengtengpeng.autoCode.utils.BuildUtils;
import com.zengtengpeng.autoCode.utils.MyStringUtils;
import com.zengtengpeng.relation.bean.RelationTable;
import com.zengtengpeng.relation.build.BuildBaseServiceImpl;
import com.zengtengpeng.relation.config.RelationConfig;
import java.util.ArrayList;
import java.util.List;
/**
* 构建多对多serviceImpl
*/
@FunctionalInterface
public interface BuildManyToManyServiceImpl extends BuildBaseServiceImpl {
@Override
default BuildJavaMethod foreignSelectPrimaryAndForeign(AutoCodeConfig autoCodeConfig) {
RelationConfig relationConfig = autoCodeConfig.getGlobalConfig().getRelationConfig();
RelationTable primary = relationConfig.getPrimary();
RelationTable foreign = relationConfig.getForeign();
String primaryKeyUp = relationConfig.getThirdparty().getForeignKeyUp(true);
return select(String.format("select%sAnd%s", primary.getBeanName(), foreign.getBeanName()),autoCodeConfig, foreign,
primary, primaryKeyUp,foreign.getForeignKeyUp(true));
}
@Override
default BuildJavaMethod foreignDeletePrimaryAndForeign(AutoCodeConfig autoCodeConfig) {
RelationConfig relationConfig = autoCodeConfig.getGlobalConfig().getRelationConfig();
RelationTable primary = relationConfig.getPrimary();
RelationTable foreign = relationConfig.getForeign();
String primaryKeyUp = relationConfig.getThirdparty().getForeignKeyUp(true);
return delete(String.format("delete%sAnd%s", primary.getBeanName(), foreign.getBeanName()),autoCodeConfig,
foreign,primary,primaryKeyUp, foreign.getForeignKeyUp(true));
}
/**
* 重写insert
* @param autoCodeConfig
* @return
*/
default BuildJavaMethod primaryInsert(AutoCodeConfig autoCodeConfig){
GlobalConfig globalConfig = autoCodeConfig.getGlobalConfig();
RelationConfig relationConfig = globalConfig.getRelationConfig();
RelationTable foreign = relationConfig.getForeign();
RelationTable primary = relationConfig.getPrimary();
RelationTable thirdparty = relationConfig.getThirdparty();
BuildJavaMethod buildJavaMethod=new BuildJavaMethod();
buildJavaMethod.setRemark("多对多重写insert");
List<String> an=new ArrayList<>();
an.add("@Override");
buildJavaMethod.setAnnotation(an);
List<String> params=new ArrayList<>();
params.add(primary.getBeanName()+" "+primary.getBeanNameLower());
buildJavaMethod.setParams(params);
buildJavaMethod.setMethodName("insert");
buildJavaMethod.setMethodType("public");
buildJavaMethod.setReturnType("int");
StringBuffer text=new StringBuffer();
MyStringUtils.append(text,"int insert = %s%s.insert(%s);",primary.getBeanNameLower(),globalConfig.getPackageDaoUp(),primary.getBeanNameLower());
MyStringUtils.append(text,"String id = %s.get%s();",2,primary.getBeanNameLower(),thirdparty.getForeignKeyUp(true));
MyStringUtils.append(text,"if(id !=null && !\"\".equals(id)){",2);
MyStringUtils.append(text,"String[] split = id.split(\",\");",3);
MyStringUtils.append(text,"%s%s.insertRelation(%s.get%s().toString(),split);",3,primary.getBeanNameLower(),
globalConfig.getPackageDaoUp(),primary.getBeanNameLower(),primary.getPrimaryKeyUp(true));
MyStringUtils.append(text,"}",2);
MyStringUtils.append(text,"return insert;",2);
buildJavaMethod.setContent(text.toString());
return buildJavaMethod;
}
/**
* 重写update
* @param autoCodeConfig
* @return
*/
default BuildJavaMethod primaryUpdate(AutoCodeConfig autoCodeConfig){
GlobalConfig globalConfig = autoCodeConfig.getGlobalConfig();
RelationConfig relationConfig = globalConfig.getRelationConfig();
RelationTable foreign = relationConfig.getForeign();
RelationTable primary = relationConfig.getPrimary();
RelationTable thirdparty = relationConfig.getThirdparty();
BuildJavaMethod buildJavaMethod=new BuildJavaMethod();
buildJavaMethod.setRemark("多对多重写Update");
List<String> an=new ArrayList<>();
an.add("@Override");
buildJavaMethod.setAnnotation(an);
List<String> params=new ArrayList<>();
params.add(primary.getBeanName()+" "+primary.getBeanNameLower());
buildJavaMethod.setParams(params);
buildJavaMethod.setMethodName("update");
buildJavaMethod.setMethodType("public");
buildJavaMethod.setReturnType("int");
StringBuffer text=new StringBuffer();
MyStringUtils.append(text,"Integer update = %s%s.update(%s);",primary.getBeanNameLower(),globalConfig.getPackageDaoUp(),primary.getBeanNameLower());
MyStringUtils.append(text,"String id = %s.get%s();",2,primary.getBeanNameLower(), thirdparty.getForeignKeyUp(true));
MyStringUtils.append(text,"if(id !=null && !\"\".equals(id)){",2);
MyStringUtils.append(text,"%s d=new %s();",3,foreign.getBeanName(),foreign.getBeanName());
MyStringUtils.append(text,"d.set%s(%s.get%s().toString());",3,thirdparty.getPrimaryKeyUp(true),primary.getBeanNameLower(),primary.getPrimaryKeyUp(true));
MyStringUtils.append(text,"%s%s.delete%sBy%s(d);",3,foreign.getBeanNameLower(),
globalConfig.getPackageDaoUp(),foreign.getBeanName(),primary.getBeanName());
MyStringUtils.append(text,"String[] split = id.split(\",\");",3);
MyStringUtils.append(text,"%s%s.insertRelation(%s.get%s().toString(),split);",3,primary.getBeanNameLower(),
globalConfig.getPackageDaoUp(),primary.getBeanNameLower(),primary.getPrimaryKeyUp(true));
MyStringUtils.append(text,"}",2);
MyStringUtils.append(text,"return update;",2);
buildJavaMethod.setContent(text.toString());
return buildJavaMethod;
}
/**
* 外表重写insert
* @param autoCodeConfig
* @return
*/
default BuildJavaMethod foreignInsert(AutoCodeConfig autoCodeConfig){
GlobalConfig globalConfig = autoCodeConfig.getGlobalConfig();
RelationConfig relationConfig = globalConfig.getRelationConfig();
RelationTable foreign = relationConfig.getForeign();
RelationTable thirdparty = relationConfig.getThirdparty();
BuildJavaMethod buildJavaMethod=new BuildJavaMethod();
buildJavaMethod.setRemark("多对多重写insert");
List<String> an=new ArrayList<>();
an.add("@Override");
buildJavaMethod.setAnnotation(an);
List<String> params=new ArrayList<>();
params.add(foreign.getBeanName()+" "+foreign.getBeanNameLower());
buildJavaMethod.setParams(params);
buildJavaMethod.setMethodName("insert");
buildJavaMethod.setMethodType("public");
buildJavaMethod.setReturnType("int");
StringBuffer text=new StringBuffer();
MyStringUtils.append(text,"int insert = %s%s.insert(%s);",foreign.getBeanNameLower(),globalConfig.getPackageDaoUp(),foreign.getBeanNameLower());
MyStringUtils.append(text,"String id = %s.get%s();",2,foreign.getBeanNameLower(),thirdparty.getPrimaryKeyUp(true));
MyStringUtils.append(text,"if(id !=null && !\"\".equals(id)){",2);
MyStringUtils.append(text,"String[] split = id.split(\",\");",3);
MyStringUtils.append(text,"%s%s.insertRelation(%s.get%s().toString(),split);",3,foreign.getBeanNameLower(),
globalConfig.getPackageDaoUp(),foreign.getBeanNameLower(),foreign.getForeignKeyUp(true));
MyStringUtils.append(text,"}",2);
MyS