##通用参数 #parse("PublicMacro/ConstantMarco.vm") #ConstantParams() #set($mapObject ="Map") ##创建QueryWrapper #macro(CreateWrapper) MPJLambdaWrapper<${Entity}> wrapper = JoinWrappers #foreach($item in $allTableNameList) #set($TableEntity = "${item.table.substring(0,1).toUpperCase()}${item.table.substring(1)}") #if(${item.tableTag} =='main') .lambda("${item.initName}",${TableEntity}Entity.class) #end #if(${item.tableTag} =='sub-jnpf') .selectAssociation(${TableEntity}Entity.class,${Entity}::get${TableEntity}) .leftJoin(${TableEntity}Entity.class,"${item.initName}",${TableEntity}Entity::get${item.tableField},${Entity}::get${item.relationField}) #end #if(${item.tableTag} =='sub') .selectCollection(${TableEntity}Entity.class,${Entity}::get${TableEntity}) .leftJoin(${TableEntity}Entity.class,"${item.initName}",${TableEntity}Entity::get${item.tableField},${Entity}::get${item.relationField}) #end #end .selectAll(${Name}Entity.class); #end ##创建QueryWrapper2 #macro(CreateWrapper2) MPJLambdaWrapper<${Entity}> wrapper2 = JoinWrappers #foreach($item in $allTableNameList) #set($TableEntity = "${item.table.substring(0,1).toUpperCase()}${item.table.substring(1)}") #if(${item.tableTag} =='main') .lambda("${item.initName}",${TableEntity}Entity.class) #end #if(${item.tableTag} =='sub-jnpf') .leftJoin(${TableEntity}Entity.class,"${item.initName}",${TableEntity}Entity::get${item.tableField},${Entity}::get${item.relationField}) #end #if(${item.tableTag} =='sub') .leftJoin(${TableEntity}Entity.class,"${item.initName}",${TableEntity}Entity::get${item.tableField},${Entity}::get${item.relationField}) #end #end .distinct().select(${Name}Entity::get${peimaryKeyName}); #end ##权限查询条件拼接 #macro(CreateDataPermission $menuIdModel) boolean pcPermission = ${pcDataPermisson}; boolean appPermission = ${appDataPermisson}; if(isPc && pcPermission){ if (!userProvider.get().getIsAdministrator()){ #foreach($child in ${allTableNameList}) #set($ModelName= "${child.table.substring(0,1).toUpperCase()}${child.table.substring(1)}") #set($modelName ="${child.table.substring(0,1).toLowerCase()}${child.table.substring(1)}") #set($modelNum = "${modelName}Num") #set($initName = "${child.initName}") #set($modelQueryWrapper = "${modelName}QueryWrapper") #if(!${child.tableField}) Object ${modelName}Obj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(${modelQueryWrapper},${ModelName}Entity.class,${menuIdModel}.getMenuId(),#if(${DS})"${DS}"#else"0"#end)); if (ObjectUtil.isEmpty(${modelName}Obj)){ return new ArrayList<>(); } else { ${modelQueryWrapper} = (QueryWrapper<${ModelName}Entity>)${modelName}Obj; } #end #end } } if(!isPc && appPermission){ if (!userProvider.get().getIsAdministrator()){ #foreach($child in ${allTableNameList}) #set($ModelName= "${child.table.substring(0,1).toUpperCase()}${child.table.substring(1)}") #set($modelName ="${child.table.substring(0,1).toLowerCase()}${child.table.substring(1)}") #set($modelNum = "${modelName}Num") #set($modelQueryWrapper = "${modelName}QueryWrapper") #if($child.tableTag =='main') Object ${modelName}Obj=generaterSwapUtil.getAuthorizeCondition(new QueryModel(${modelQueryWrapper},${ModelName}Entity.class,${menuIdModel}.getMenuId(),#if(${DS})"${DS}"#else"0"#end)); if (ObjectUtil.isEmpty(${modelName}Obj)){ return new ArrayList<>(); } else { ${modelQueryWrapper} = (QueryWrapper<${ModelName}Entity>)${modelName}Obj; } #end #end } } #end ##普通查询条件拼接 #macro(PaginationSerach) #if($groupModels.size()>0) if(isPc){ #foreach($Group in ${groupModels}) #set($ModelName= "${Group.modelName.substring(0,1).toUpperCase()}${Group.modelName.substring(1)}") #set($ModelNameEntity = "${ModelName}Entity") #set($modelName ="${Group.modelName.substring(0,1).toLowerCase()}${Group.modelName.substring(1)}") #set($modelQueryWrapper ="wrapper") #set($modelNum = "${modelName}Num") #set($ForeignKey =${Group.ForeignKey}) #PaginationQuery(${Group.searchTypeModelList},${modelQueryWrapper},${ModelNameEntity},${modelNum}) #end } #end #if($groupAppModels.size()>0) if(!isPc){ #foreach($appGroup in ${groupAppModels}) #set($ModelName= "${appGroup.modelName.substring(0,1).toUpperCase()}${appGroup.modelName.substring(1)}") #set($ModelNameEntity = "${ModelName}Entity") #set($modelName ="${appGroup.modelName.substring(0,1).toLowerCase()}${appGroup.modelName.substring(1)}") #set($modelQueryWrapper ="wrapper") #set($modelNum = "${modelName}Num") #set($ForeignKey =${appGroup.ForeignKey}) #PaginationQuery(${appGroup.searchTypeModelList},${modelQueryWrapper},${ModelNameEntity},${modelNum}) #end } #end #end ##普通查询条件拼接 #macro(PaginationQuery $searchListSizes $queryWrapper $ModelNameEntity,$modelNum) #if($searchListSizes) #foreach($SearchTypeModel in ${searchListSizes}) #set($vModelName = "${SearchTypeModel.afterVModel}") #set($fieldAliasName = "${SearchTypeModel.afterVModel}") #set($tableAliasName = "${SearchTypeModel.tableAliasName}") #if($SearchTypeModel.id.contains("_jnpf_")) #set($fieldAliasName = "jnpf_${tableAliasName}_jnpf_${vModelName}") #elseif($SearchTypeModel.id.toLowerCase().startsWith("tablefield")) #set($fieldAliasName = "${tableAliasName}_${vModelName}") #end #set($fieldName = "${vModelName.substring(0,1).toUpperCase()}${vModelName.substring(1)}") #set($paginationName ="${fieldAliasName.substring(0,1).toUpperCase()}${fieldAliasName.substring(1)}") if(ObjectUtil.isNotEmpty(${name}Pagination.get${paginationName}())){ #if(${SearchTypeModel.searchType}==1) #set($jnpfKey=${SearchTypeModel.jnpfKey}) ## 多选统一处理 #MultipleHandle("${name}Pagination") #elseif(${SearchTypeModel.searchType}==2) String value = ${name}Pagination.get${paginationName}() instanceof List ? JsonUtil.getObjectToString(${name}Pagination.get${paginationName}()) : String.valueOf(${name}Pagination.get${paginationName}()); ${queryWrapper}.like(${ModelNameEntity}::get${fieldName},value); #elseif(${SearchTypeModel.searchType}==3) List ${fieldName}List = JsonUtil.getJsonToList(${name}Pagination.get${paginationName}(),String.class); for(int i=0;i<${fieldName}List.size();i++){ String id = String.valueOf(${fieldName}List.get(i)); boolean idAll = StringUtil.isNotEmpty(id) && !id.equals("null"); if(idAll){ #set($dataValues= "id;") #if(${SearchTypeModel.jnpfKey}=="dateTime" || ${SearchTypeModel.jnpfKey}=='datePicker' || ${SearchTypeModel.jnpfKey}=="createTime" || ${SearchTypeModel.jnpfKey}=="modifyTime") #set($dataValues= "new Date(Long.valueOf(id));") #elseif(${SearchTypeModel.jnpfKey}=="inputNumber" || ${SearchTypeModel.jnpfKey}=="calculate") #set($dataValues= "new BigDecimal(id);") #end Object b= ${dataValues} if(i==0){ ${queryWrapper}.ge(${ModelNameEntity}::get${fieldName},b); }else{ ${queryWrapper}.le(${ModelNameEntity}::get${fieldName},b); } } } #end } #end #end #end ##多选统一处理 #macro(MultipleHandle $pagination) #if(${multipleUnit.contains(${jnpfKey})}) List idList = new ArrayList<>(); try { String[][] ${vModelName} = JsonUtil.getJsonToBean(${pagination}.get${paginationName}(),String[][].class); for(int i=0;i<${vModelName}.length;i++){ if(${vModelName}[i].length>0){ idList.add(JsonUtil.getObjectToString(Arrays.asList(${vModelName}[i]))); } } }catch (Exception e1){ try { List ${vModelName} = JsonUtil.getJsonToList(${pagination}.get${paginationName}(),String.class); if(${vModelName}.size()>0){ #if(${multipleTwoUnit.contains(${jnpfKey})}) idList.add(JsonUtil.getObjectToString(${vModelName})); #elseif(${jnpfKey} =='currOrganize') idList.add(${vModelName}.get(${vModelName}.size()-1)); #else idList.addAll(${vModelName}); #end } }catch (Exception e2){ idList.add(String.valueOf(${pagination}.get${paginationName}())); } } ${queryWrapper}.and(t->{ idList.forEach(tt->{ if(StringUtil.isNotEmpty(tt) && "Microsoft SQL Server".equalsIgnoreCase(databaseName)){ tt = tt.replaceFirst("\\[","[[]"); } t.like(${ModelNameEntity}::get${fieldName}, tt).or(); }); }); #else ${queryWrapper}.eq(${ModelNameEntity}::get${fieldName},${pagination}.get${paginationName}()); #end #end ##关键词搜索 #macro(JnpfKeywordSerach) if(ObjectUtil.isNotEmpty(${name}Pagination.getJnpfKeyword())){ #if($!{keywordModels}) if(isPc){ wrapper.and(t -> { #foreach($Group in ${groupModels}) #set($ModelName= "${Group.modelName.substring(0,1).toUpperCase()}${Group.modelName.substring(1)}") #set($ModelNameEntity = "${ModelName}Entity") #foreach($item in ${Group.searchTypeModelList}) #if($item.afterVModel) #set($vModelName = $item.afterVModel) #else #set($vModelName = $item.id) #end #set($fieldName = "${vModelName.substring(0,1).toUpperCase()}${vModelName.substring(1)}") #if(${item.isKeyword}) t.like(${ModelName}Entity::get${fieldName},${name}Pagination.getJnpfKeyword()).or(); #end #end #end }); } #end #if($!{keywordAppModels}) if(!isPc){ wrapper.and(t -> { #foreach($Group in ${groupAppModels}) #set($ModelName= "${Group.modelName.substring(0,1).toUpperCase()}${Group.modelName.substring(1)}") #set($ModelNameEntity = "${ModelName}Entity") #foreach($item in ${Group.searchTypeModelList}) #if($item.afterVModel) #set($vModelName = $item.afterVModel) #else #set($vModelName = $item.id) #end #set($fieldName = "${vModelName.substring(0,1).toUpperCase()}${vModelName.substring(1)}") #if(${item.isKeyword}) t.like(${ModelName}Entity::get${fieldName},${name}Pagination.getJnpfKeyword()).or(); #end #end #end }); } #end } #end ##获取系统参数 #macro(GetSystemData $isSave $chidKeyName) #if(${systemJnpfKey.contains(${key})}) #set($opFlag = true) #if((${key}=='createUser' && !$isSave) ||(${key}=='createTime' && !$isSave) ||(${key}=='modifyUser' && $isSave) ||(${key}=='modifyTime' && $isSave) ||(${key}=='currOrganize' && !$isSave) ||(${key}=='currPosition' && !$isSave)) #set($opFlag = false) #end #if($isFlow && $opFlag) if(hasOperate.contains("${realVmodel}") || noOperate){ #end #if(${key}=='createUser') #if($isSave) ${nameEntity}.set${model}(userInfo.getUserId()); #else ${nameEntity}.set${model}(null); #end #elseif(${key}=='createTime') #if($isSave) ${nameEntity}.set${model}(DateUtil.getNowDate()); #else ${nameEntity}.set${model}(null); #end #elseif(${key}=='modifyUser') #if($isSave) ${nameEntity}.set${model}(null); #else ${nameEntity}.set${model}(userInfo.getUserId()); #end #elseif(${key}=='modifyTime') #if($isSave) ${nameEntity}.set${model}(null); #else ${nameEntity}.set${model}(DateUtil.getNowDate()); #end #elseif(${key}=='currOrganize') #if($isSave) ${nameEntity}.set${model}(generaterSwapUtil.getCurrentOrgIds(userInfo.getOrganizeId(),#if(${showLevel})"${showLevel}"#else"all"#end)); #else ${nameEntity}.set${model}(null); #end #elseif(${key}=='currPosition') #if($isSave) ${nameEntity}.set${model}(StringUtil.isNotEmpty(userEntity.getPositionId()) ? userEntity.getPositionId() : null); #else ${nameEntity}.set${model}(null); #end #elseif(${key}=='billRule') #if($isSave) #if($config.ruleType == 2) ${nameEntity}.set${model}(generaterSwapUtil.getBillNumber2("${VisualDevId}","${config.formId}",${Name}Constant.${constantVmodel}, ${name}Form)); #else ${nameEntity}.set${model}(generaterSwapUtil.getBillNumber("${rule}", false)); #end #else if(StringUtil.isEmpty(${nameEntity}.get${model}()) #if(${chidKeyName})|| ${nameEntity}.get${chidKeyName}() == null #end){ #if($config.ruleType == 2) ${nameEntity}.set${model}(generaterSwapUtil.getBillNumber2("${VisualDevId}","${config.formId}",${Name}Constant.${constantVmodel}, ${name}Form)); #else ${nameEntity}.set${model}(generaterSwapUtil.getBillNumber("${rule}", false)); #end } #end #end #if($isFlow && $opFlag) } #end #end #end ## 正则验证方法 #macro(RegMethod $jnpfKey,$param $config) #if(!${lineEdit}) #if($jnpfKey == 'input' && ${config.regList} && ${config.regList.size()}>0) if(StringUtil.isNotEmpty($param)){ #foreach($regItem in ${config.regList}) #set($pattern=$regItem.pattern.replace("\","\\").replace("/","")) if(!Pattern.compile("$pattern").matcher(String.valueOf($param)).matches()){ return #if(${regItem.messageI18nCode})I18nUtil.getMessageStr("${regItem.messageI18nCode}", "${regItem.message}"); #else "${regItem.message}"; #end } #end } #end #end #end ##########################以上为宏调用,以下为实际方法########################## ## 列表接口 #macro(GetTypeList) @Override public List<${Entity}> getList(${Name}Pagination ${name}Pagination){ return getTypeList(${name}Pagination,${name}Pagination.getDataType()); } /** 列表查询 */ @Override public List<${Entity}> getTypeList(${Name}Pagination ${name}Pagination,String dataType){ String userId=userProvider.get().getUserId(); Map tableClassMap=new HashMap<>(); #foreach($item in $allTableNameList) #set($TableEntity = "${item.table.substring(0,1).toUpperCase()}${item.table.substring(1)}") tableClassMap.put("${item.initName}",${TableEntity}Entity.class); #end ## 生成MPJLambdaWrapper对象 #CreateWrapper() #CreateWrapper2() QueryAllModel queryAllModel = new QueryAllModel(); queryAllModel.setWrapper(wrapper); queryAllModel.setClassMap(tableClassMap); queryAllModel.setDbLink(${Name}Constant.DBLINKID); ## 数据过滤 //数据过滤 boolean isPc = ServletUtil.getHeader("jnpf-origin").equals("pc"); String columnData = !isPc ? ${Name}Constant.getAppColumnData() : ${Name}Constant.getColumnData(); ColumnDataModel columnDataModel = JsonUtil.getJsonToBean(columnData, ColumnDataModel.class); String ruleJson = !isPc ? JsonUtil.getObjectToString(columnDataModel.getRuleListApp()) : JsonUtil.getObjectToString(columnDataModel.getRuleList()); queryAllModel.setRuleJson(ruleJson); ## 高级查询 //高级查询 boolean hasSuperQuery = #if($superQuery) true#else false#end; if (hasSuperQuery) { queryAllModel.setSuperJson(${name}Pagination.getSuperQueryJson()); } ## 数据权限 //数据权限 boolean pcPermission = ${pcDataPermisson}; boolean appPermission = ${appDataPermisson}; if (isPc && pcPermission) { queryAllModel.setModuleId(${name}Pagination.getMenuId()); } if (!isPc && appPermission) { queryAllModel.setModuleId(${name}Pagination.getMenuId()); } //拼接复杂条件 wrapper = generaterSwapUtil.getConditionAllTable(queryAllModel); if(wrapper == null) return new ArrayList<>(); queryAllModel.setWrapper(wrapper2); wrapper2 = generaterSwapUtil.getConditionAllTable(queryAllModel); ## 普通查询 //其他条件拼接 otherConditions(${name}Pagination, wrapper, isPc); otherConditions(${name}Pagination, wrapper2, isPc); #if(${groupTable} == true || ${treeTable} == true || ${hasPage} == false) //分组和树形生成这个代码,pc端返回全部数据 !"2".equals(dataType)导出选中数据 if(isPc && !"2".equals(dataType)){ dataType = "1"; } #end if("0".equals(dataType)){ com.github.pagehelper.Page objects = PageHelper.startPage((int) ${name}Pagination.getCurrentPage(), (int) ${name}Pagination.getPageSize(), true); List<${Entity}> userIPage = this.selectJoinList(${Entity}.class, wrapper2); List collect = userIPage.stream().map(t -> t.get${peimaryKeyName}()).collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(collect)){ wrapper.in(${Entity}::get${peimaryKeyName},collect); } List<${Entity}> result = this.selectJoinList(${Entity}.class, wrapper); return ${name}Pagination.setData(result,objects.getTotal()); }else{ List<${Entity}> list = this.selectJoinList(${Entity}.class, wrapper); if("2".equals(dataType)){ List selectIds = Arrays.asList(${name}Pagination.getSelectIds()); return list.stream().filter(t -> selectIds.contains(t.get$peimaryKeyName())).collect(Collectors.toList()); }else{ return list; } } } /** * 其他条件拼接 */ private void otherConditions(${Name}Pagination ${name}Pagination, MPJLambdaWrapper<${Entity}> wrapper, boolean isPc) { String databaseName; try { @Cleanup Connection cnn = DynamicDataSourceUtil.getCurrentConnection(); databaseName = cnn.getMetaData().getDatabaseProductName().trim(); } catch (SQLException e) { throw new DataException(e.getMessage()); } #if($logicalDelete) //假删除标志 wrapper.isNull(${Entity}::getDeleteMark); #end #if($isFlow) //流程数据隔离 List flowIds = generaterSwapUtil.getFlowIds(${name}Pagination.getFlowId()); wrapper.in(${Entity}::getFlowId,flowIds); #else wrapper.isNull(${Entity}::getFlowId); #end //关键词 #JnpfKeywordSerach() //普通查询 #PaginationSerach() //排序 if(StringUtil.isEmpty(${name}Pagination.getSidx())){ #if(${defaultSidx}) #set($model = "${defaultSidx.substring(0,1).toUpperCase()}${defaultSidx.substring(1)}") #set($Sort = "${sort.substring(0,1).toUpperCase()}${sort.substring(1)}") wrapper.orderBy${Sort}(${Entity}::get${model}); #else wrapper.orderByDesc(${Entity}::get${peimaryKeyName}); #end }else{ try { String[] split = ${name}Pagination.getSidx().split(","); for(String sidx:split){ #if($lineEdit) sidx = sidx.split("_name")[0]; #end ${Entity} ${name}Entity = new ${Entity}(); String oderTableField = ${name}Entity.getClass().getAnnotation(TableName.class).value(); boolean descFlag = sidx.startsWith("-"); String sidxField = descFlag ? sidx.substring(1) : sidx; try{ Field declaredField = ${name}Entity.getClass().getDeclaredField(sidxField); declaredField.setAccessible(true); sidxField = declaredField.getAnnotation(TableField.class).value(); }catch (Exception e){ } String finalOderTableField = oderTableField; String finalSidxField = sidxField; Object select = wrapper.getSelectColumns().stream().filter(t -> Objects.equals(finalOderTableField, t.getTableAlias()) && Objects.equals(finalSidxField, t.getColumn())).findFirst().orElse(null); oderTableField = oderTableField + "." + sidxField; if (select == null) { wrapper.select(oderTableField); } if (descFlag) { wrapper.orderByDesc(oderTableField); } else { wrapper.orderByAsc(oderTableField); } } } catch (Exception e) { e.printStackTrace(); } } } #end ## 增删改查接口 #macro(CrudMethod) @Override public ${Entity} getInfo(String ${peimaryKeyname}){ ## 生成MPJLambdaWrapper对象 #CreateWrapper() wrapper.and( t->t.eq(${Entity}::get${peimaryKeyName}, #if($snowflake)${peimaryKeyname} #else Long.parseLong(${peimaryKeyname})#end) .or().eq(${Entity}::getFlowTaskId, ${peimaryKeyname}) ); return this.selectJoinOne(${Entity}.class,wrapper); } @Override public void create(${Entity} entity){ this.save(entity); } @Override public boolean update(String ${peimaryKeyname}, ${Entity} entity){ return this.updateById(entity); } @Override public void delete(${Entity} entity){ if(entity!=null){ this.removeById(entity.get${peimaryKeyName}()); } } #end ## 表单验证 #macro(CheckForm) /** 验证表单唯一字段,正则,非空 i-0新增-1修改*/ @Override public String checkForm(${Name}Form form,int i) { #if(${isFlow}) List flowIds = generaterSwapUtil.getFlowIds(form.getFlowId()); #end boolean isUp =StringUtil.isNotEmpty(form.get${peimaryKeyName}()) && !form.get${peimaryKeyName}().equals("0"); Object id= null; String countRecover = ""; String fieldTipName = ""; String canNotNull = I18nUtil.getMessageStr("sys.validate.textRequiredSuffix", "不能为空"); String canNotRepeated = I18nUtil.getMessageStr("EXIST103", "不能重复"); if (isUp){ #if($snowflake) id = form.get${peimaryKeyName}(); #else id = Long.parseLong(form.get${peimaryKeyName}()); #end } ## 验证业务主键 #if(${useBusinessKey}) //验证业务主键 String businessErr = checkBusinessKey(form, isUp ? id : null,#if($isFlow)flowIds#else null#end); if (StringUtil.isNotEmpty(businessErr)) { return businessErr; } #end ## 主表字段验证 //主表字段验证 #foreach($mastField in ${mastTableHandle}) #set($Field = $mastField) #set($config = $Field.config) #set($unique = $config.unique) #set($required = $config.required) #set($jnpfKey = $config.jnpfKey) #set($vModel = ${Field.vModel}) #set($upName = "${Field.fieldAlias.substring(0,1).toUpperCase()}${Field.fieldAlias.substring(1)}") fieldTipName = #if(${config.labelI18nCode}) I18nUtil.getMessageStr("${config.labelI18nCode}", "${config.label}"); #else "${config.label}"; #end #if($jnpfKey == 'input' && $required ==true && !${lineEdit}) if(StringUtil.isEmpty(form.get${upName}())){ return fieldTipName + canNotNull; } #end #if($jnpfKey == 'input' && $unique ==true) if(StringUtil.isNotEmpty(form.get${upName}())){ form.set${upName}(form.get${upName}()#if($jnpfKey == 'input').trim()#end); QueryWrapper<${Name}Entity> ${vModel}Wrapper=new QueryWrapper<>(); ${vModel}Wrapper.lambda().eq(${Name}Entity::get${upName},form.get${upName}()); #if(${isFlow}) ${vModel}Wrapper.lambda().in(${Name}Entity::getFlowId, flowIds); #else ${vModel}Wrapper.lambda().isNull(${Name}Entity::getFlowId); #end #if($logicalDelete) //假删除标志 ${vModel}Wrapper.lambda().isNull(${Name}Entity::getDeleteMark); #end if (isUp){ ${vModel}Wrapper.lambda().ne(${Name}Entity::get${peimaryKeyName}, id); } if((int) this.count(${vModel}Wrapper)>0){ countRecover = fieldTipName + canNotRepeated; } } #end ## 正则判断 #RegMethod($jnpfKey,"form.get${upName}()",$config) #end ## 副表字段验证 #if(${columnTableHandle.size()}>0) //副表字段验证 #foreach($cl in ${columnTableHandle}) #set($columnTableName = "${cl.modelUpName}") #set($columnTableName = "${cl.modelLowName}") #foreach($clModel in ${cl.fieLdsModelList}) #set($fieLdsModel = ${clModel.mastTable.fieLdsModel}) #set($config = ${fieLdsModel.config}) #set($fileRenameUp = "${fieLdsModel.fieldAlias.substring(0,1).toUpperCase()}${fieLdsModel.fieldAlias.substring(1)}") #set($fullName = "Jnpf_${fieLdsModel.tableAlias}_jnpf_${fieLdsModel.fieldAlias}") #set($key = ${config.jnpfKey}) #set($unique = $config.unique) #set($required = $config.required) fieldTipName = #if(${config.labelI18nCode}) I18nUtil.getMessageStr("${config.labelI18nCode}", "${config.label}"); #else "${config.label}"; #end #if($required ==true && !${lineEdit}) if(#if($key =='input') StringUtil.isEmpty(form.get${fullName}()) #else form.get${fullName}() == null #end){ return fieldTipName + canNotNull; } #end #if($unique ==true) if(#if($key =='input') StringUtil.isNotEmpty(form.get${fullName}())#else form.get${fullName}() ==null #end ){ form.set${fullName}(form.get${fullName}()#if($key == 'input').trim()#end); MPJLambdaWrapper<${Name}Entity> ${cl.modelLowName}${fileRenameUp}Wrapper = new MPJLambdaWrapper<>(${Name}Entity.class) .leftJoin(${cl.modelUpName}Entity.class, ${cl.modelUpName}Entity::get${cl.relationUpField}, ${Name}Entity::get${cl.mainUpKey}) .select(${Name}Entity::get${peimaryKeyName}); #if(${isFlow}) ${cl.modelLowName}${fileRenameUp}Wrapper.in(${Name}Entity::getFlowId, flowIds); #else ${cl.modelLowName}${fileRenameUp}Wrapper.isNull(${Name}Entity::getFlowId); #end #if($logicalDelete) //假删除标志 ${cl.modelLowName}${fileRenameUp}Wrapper.isNull(${Name}Entity::getDeleteMark); #end ${cl.modelLowName}${fileRenameUp}Wrapper.eq(${cl.modelUpName}Entity::get${fileRenameUp},form.get${fullName}()); if (isUp){ ${cl.modelLowName}${fileRenameUp}Wrapper.ne(${cl.modelUpName}Entity::get${cl.relationUpField}, id); } if((int) this.count(${cl.modelLowName}${fileRenameUp}Wrapper)>0){ countRecover = fieldTipName + canNotRepeated; } } #end ## 正则判断 #RegMethod($key,"form.get${fullName}()",$config) #end #end #end ## 子表字段验证 #if(${childTableHandle.size()}>0) //子表字段验证 #foreach($grid in ${childTableHandle}) if (form.get${grid.aliasUpName}List()!=null){ #foreach($jnpfkey in ${grid.childList}) #if(${jnpfkey.fieLdsModel.vModel} != '') #set($fieLdsModel = ${jnpfkey.fieLdsModel}) #set($config = ${fieLdsModel.config}) #set($key = ${config.jnpfKey}) #set($model = "${fieLdsModel.fieldAlias.substring(0,1).toUpperCase()}${fieLdsModel.fieldAlias.substring(1)}") #set($unique = ${config.unique}) #set($required = ${config.required}) fieldTipName = #if(${grid.labelI18nCode}) I18nUtil.getMessageStr("${grid.labelI18nCode}", "${grid.label}")#else "${grid.label}" #end + "-" + #if(${config.labelI18nCode}) I18nUtil.getMessageStr("${config.labelI18nCode}", "${config.label}");#else "${config.label}"; #end #if($required ==true || $unique ==true || ${config.regList}) for(${grid.aliasUpName}Model t : form.get${grid.aliasUpName}List()){ if(#if($key =='input') StringUtil.isNotEmpty(t.get${model}()) #else t.get${model}() != null #end){ t.set${model}(t.get${model}()#if($key == 'input').trim()#end); } #if($required ==true && !${lineEdit}) else{ return fieldTipName + canNotNull; } #end ## 子表正则 #RegMethod($key,"t.get${model}()",$config) } #end #if($key =='input' && $unique ==true) List ${model}List = form.get${grid.aliasUpName}List().stream().filter(f->StringUtil.isNotEmpty(f.get${model}())).map(f -> f.get${model}()).collect(Collectors.toList()); HashSet ${model}Set = new HashSet<>(${model}List); if(${model}Set.size() != ${model}List.size()){ countRecover = fieldTipName + canNotRepeated; } #end #end #end } #end #end return countRecover; } #end #macro(CheckBusinessKey) /** * 验证业务主键 */ private String checkBusinessKey(${Name}Form form, Object id, List flowIds){ QueryWrapper<${Name}Entity> wrapper = new QueryWrapper<>(); //修改 if (id != null){ wrapper.lambda().ne(${Name}Entity::get${peimaryKeyName}, id); } //是否流程 if(flowIds == null){ wrapper.lambda().isNull(${Name}Entity::getFlowId); }else{ wrapper.lambda().in(${Name}Entity::getFlowId, flowIds); } #if($logicalDelete) //假删除标志 wrapper.lambda().isNull(${Name}Entity::getDeleteMark); #end #set($notToJson=['inputNumber','input','textarea','radio','timePicker','createUser','modifyUser','location','currPosition']) #foreach($item in ${businessKeyList}) #set($jnpfKey = $item.config.jnpfKey) #set($fieldNameUp = "${item.fieldAlias.substring(0,1).toUpperCase()}${item.fieldAlias.substring(1)}") //${item.config.label}字段判断 #if($jnpfKey == 'datePicker') if(form.get${fieldNameUp}() == null || form.get${fieldNameUp}().trim().isEmpty()){ wrapper.lambda().isNull(${Name}Entity::get${fieldNameUp}); }else{ Object obj = new Date(Long.parseLong(form.get${fieldNameUp}())); wrapper.lambda().eq(${Name}Entity::get${fieldNameUp}, obj); } #elseif(${notToJson.contains(${jnpfKey})}) if(form.get${fieldNameUp}() == null || form.get${fieldNameUp}().toString().trim().isEmpty()){ wrapper.lambda().isNull(${Name}Entity::get${fieldNameUp}); }else{ wrapper.lambda().eq(${Name}Entity::get${fieldNameUp}, form.get${fieldNameUp}()); } #else if(form.get${fieldNameUp}() == null || form.get${fieldNameUp}().toString().trim().isEmpty() ||(form.get${fieldNameUp}() instanceof List && ((List) form.get${fieldNameUp}()).size() == 0)){ wrapper.lambda().isNull(${Name}Entity::get${fieldNameUp}); }else{ Object obj = form.get${fieldNameUp}() instanceof List ?JsonUtil.getObjectToString(form.get${fieldNameUp}()):form.get${fieldNameUp}(); wrapper.lambda().eq(${Name}Entity::get${fieldNameUp}, obj); } #end #end if((int) this.count(wrapper)>0){ return "${businessKeyTip}"; } return ""; } #end ## 保存或者修改事务方法 #macro(SaveOrUpdate) /** * 新增修改数据(事务回滚) * @param id * @param ${name}Form * @return */ @Override #if(${DS}) @DSTransactional #else @Transactional #end public void saveOrUpdate(${Name}Form ${name}Form,String id, boolean isSave) throws Exception{ #if($isFlow) List<$mapObject> formOperates = ${name}Form.getFormOperates(); List hasOperate = new ArrayList<>(); boolean noOperate = false; if(CollectionUtils.isNotEmpty(formOperates)){ for ($mapObject formOperate : formOperates) { String formOperateId = formOperate.get("id").toString(); boolean formOperateWrite = formOperate.get("write") ==null? false : (boolean) formOperate.get("write"); if(formOperateWrite){ hasOperate.add(formOperateId); } } }else{ noOperate = true; } #end UserInfo userInfo=userProvider.get(); UserEntity userEntity = generaterSwapUtil.getUser(userInfo.getUserId()); ${name}Form = JsonUtil.getJsonToBean( generaterSwapUtil.swapDatetime(${Name}Constant.getFormData(),${name}Form,${Name}Constant.TABLERENAMES),${Name}Form.class); ${Name}Entity entity = JsonUtil.getJsonToBean(${name}Form, ${Name}Entity.class); #set($peimaryKeyName="${pKeyName.substring(0,1).toUpperCase()}${pKeyName.substring(1)}") String mainUuid = StringUtil.isEmpty(id) ? RandomUtil.uuId() : id; #if($isFlow) entity.setFlowId(${name}Form.getFlowId()); #end ##主表保存修改判断是否有系统控件 #foreach($field in ${mastTableHandle}) #set($key = ${field.config.jnpfKey}) #if(${systemJnpfKey.contains(${key})}) #set($mainHasSysFields =true) #end #end if(isSave){ entity.setFlowTaskId(mainUuid); #foreach($field in ${mastTableHandle}) #set($model = "${field.fieldAlias.substring(0,1).toUpperCase()}${field.fieldAlias.substring(1)}") #set($key = ${field.config.jnpfKey}) #set($nameEntity = "entity") #set($rule ="${field.config.rule}") #set($showLevel ="${field.showLevel}") #set($realVmodel ="${field.vModel}") #set($config =${field.config}) #set($constantVmodel ="${field.vModel}") #GetSystemData(true) #end #if($snowflake) entity.set${peimaryKeyName}(mainUuid); #end #if($version) #if(${versionType} == "bigint") entity.setVersion(0l); #else entity.setVersion(0); #end #end } else { #foreach($field in ${mastTableHandle}) #set($model = "${field.fieldAlias.substring(0,1).toUpperCase()}${field.fieldAlias.substring(1)}") #set($key = ${field.config.jnpfKey}) #set($nameEntity = "entity") #set($rule ="${field.config.rule}") #set($showLevel ="${field.showLevel}") #set($realVmodel ="${field.vModel}") #set($config =${field.config}) #set($constantVmodel ="${field.vModel}") #GetSystemData(false) #end } boolean b = this.saveOrUpdate(entity); #if($version) if(!b){ throw new DataException("当前表单原数据已被调整,请重新进入该页面编辑并提交数据"); } #end ${Name}Entity info = this.getInfo(mainUuid); if (info == null) throw new RuntimeException(MsgCode.FA001.get()); #if(!$snowflake) entity.set${peimaryKeyName}(info.get${peimaryKeyName}()); #end ##子表数据新增修改 #if(${childTableHandle.size()}>0) #foreach($grid in ${childTableHandle}) #set($tableField = "${grid.tablefield.substring(0,1).toUpperCase()}${grid.tablefield.substring(1)}") #set($relationField = "${grid.relationField.substring(0,1).toUpperCase()}${grid.relationField.substring(1)}") #set($chidKeyName = "${grid.chidKeyName.substring(0,1).toUpperCase()}${grid.chidKeyName.substring(1)}") //${grid.aliasUpName}子表数据新增修改 QueryWrapper<${grid.aliasUpName}Entity> ${grid.aliasUpName}queryWrapper = new QueryWrapper<>(); ${grid.aliasUpName}queryWrapper.lambda().eq(${grid.aliasUpName}Entity::get${tableField}, info.get${relationField}()); if(!isSave && !CollectionUtils.isNotEmpty(${name}Form.get${grid.aliasUpName}List())){ ${grid.aliasLowName}Service.remove(${grid.aliasUpName}queryWrapper); } if (CollectionUtils.isNotEmpty(${name}Form.get${grid.aliasUpName}List())){ List<${grid.aliasUpName}Entity> ${grid.tableModel} = JsonUtil.getJsonToList(${name}Form.get${grid.aliasUpName}List(),${grid.aliasUpName}Entity.class); //移除的数据 List childIds = ${grid.tableModel}.stream().filter(t->t.get${chidKeyName}()!=null).map(${grid.aliasUpName}Entity::get${chidKeyName}).collect(Collectors.toList()); if(CollectionUtils.isNotEmpty(childIds)){ ${grid.aliasUpName}queryWrapper.lambda().notIn(${grid.aliasUpName}Entity::get${chidKeyName},childIds); } ${grid.aliasLowName}Service.remove(${grid.aliasUpName}queryWrapper); for(${grid.aliasUpName}Entity entitys : ${grid.tableModel}){ entitys.set${tableField}(entity.get${relationField}()); ##子表保存修改判断是否有系统控件 #set($childHasSysFields =false) #foreach($jnpfkey in ${grid.childList}) #if(${jnpfkey.fieLdsModel.vModel} != '') #set($key = ${jnpfkey.fieLdsModel.config.jnpfKey}) #if(${systemJnpfKey.contains(${key})}) #set($childHasSysFields =true) #end #end #end #if($childHasSysFields) if(isSave || entitys.get${chidKeyName}()==null){ #foreach($jnpfkey in ${grid.childList}) #if(${jnpfkey.fieLdsModel.vModel} != '') #set($key = ${jnpfkey.fieLdsModel.config.jnpfKey}) #set($rule = ${jnpfkey.fieLdsModel.config.rule}) #set($showLevel ="${jnpfkey.fieLdsModel.showLevel}") #set($model = "${jnpfkey.fieLdsModel.fieldAlias.substring(0,1).toUpperCase()}${jnpfkey.fieLdsModel.fieldAlias.substring(1)}") #set($nameEntity = "entitys") #set($realVmodel ="${grid.aliasLowName}List-${jnpfkey.fieLdsModel.vModel}") #set($config =${jnpfkey.fieLdsModel.config}) #set($constantVmodel ="${grid.aliasLowName}_${jnpfkey.fieLdsModel.vModel}") #GetSystemData(true) #end #end }else{ #foreach($jnpfkey in ${grid.childList}) #if(${jnpfkey.fieLdsModel.vModel} != '') #set($key = ${jnpfkey.fieLdsModel.config.jnpfKey}) #set($rule = ${jnpfkey.fieLdsModel.config.rule}) #set($showLevel ="${jnpfkey.fieLdsModel.showLevel}") #set($model = "${jnpfkey.fieLdsModel.fieldAlias.substring(0,1).toUpperCase()}${jnpfkey.fieLdsModel.fieldAlias.substring(1)}") #set($nameEntity = "entitys") #set($realVmodel ="${grid.aliasLowName}List-${jnpfkey.fieLdsModel.vModel}") #set($config =${jnpfkey.fieLdsModel.config}) #set($constantVmodel ="${grid.aliasLowName}_${jnpfkey.fieLdsModel.vModel}") #GetSystemData(false,${chidKeyName}) #end #end } #end #if($snowflake) if(entitys.get${chidKeyName}()==null){ entitys.set${chidKeyName}(RandomUtil.uuId()); } #end ${grid.aliasLowName}Service.saveOrUpdate(entitys); } } #end #end ##副表数据新增修改 #if(${columnTableHandle.size()}>0) #foreach($cl in ${columnTableHandle}) ##副表保存修改判断是否有系统控件 #set($mastHasSysFields =false) #foreach($clModel in ${cl.fieLdsModelList}) #set($key = ${clModel.mastTable.fieLdsModel.config.jnpfKey}) #if($key!='' && ${systemJnpfKey.contains(${key})}) #set($mastHasSysFields =true) #end #end //${cl.tableName}副表数据新增修改 #set($mainField = $cl.mainField) #set($mainUpId = "${mainField.substring(0,1).toUpperCase()}${mainField.substring(1)}") $mapObject ${cl.modelName}Map = generaterSwapUtil.getMastTabelData(${name}Form,"${cl.tableName}"); ${cl.modelName}Entity ${cl.modelLowName}entity = JsonUtil.getJsonToBean(${cl.modelName}Map,${cl.modelName}Entity.class); //自动生成的字段 if(isSave){ #if($mastHasSysFields) #foreach($clModel in ${cl.fieLdsModelList}) #set($model = "${clModel.mastTable.fieLdsModel.fieldAlias.substring(0,1).toUpperCase()}${clModel.mastTable.fieLdsModel.fieldAlias.substring(1)}") #set($key = ${clModel.mastTable.fieLdsModel.config.jnpfKey}) #set($nameEntity = "${cl.modelLowName}entity") #set($rule ="${clModel.mastTable.fieLdsModel.config.rule}") #set($showLevel ="${clModel.mastTable.fieLdsModel.showLevel}") #set($realVmodel ="${clModel.vModel}") #set($config =${clModel.mastTable.fieLdsModel.config}) #set($constantVmodel ="${clModel.vModel}") #GetSystemData(true) #end #end #if($snowflake) ${cl.modelLowName}entity.set${mainUpId}(RandomUtil.uuId()); #end ${cl.modelLowName}entity.set${cl.relationUpField}(entity.get${cl.mainUpKey}()); }else{ QueryWrapper<${cl.modelUpName}Entity> queryWrapper${cl.modelUpName} =new QueryWrapper<>(); queryWrapper${cl.modelUpName}.lambda().eq(${cl.modelUpName}Entity::get${cl.relationUpField},info.get${cl.mainUpKey}()); ${cl.modelUpName}Entity ${cl.modelLowName}OneEntity= ${cl.modelLowName}Service.getOne(queryWrapper${cl.modelUpName}); #if($mastHasSysFields) #foreach($clModel in ${cl.fieLdsModelList}) #set($model = "${clModel.mastTable.fieLdsModel.fieldAlias.substring(0,1).toUpperCase()}${clModel.mastTable.fieLdsModel.fieldAlias.substring(1)}") #set($key = ${clModel.mastTable.fieLdsModel.config.jnpfKey}) #set($nameEntity = "${cl.modelLowName}entity") #set($rule ="${clModel.mastTable.fieLdsModel.config.rule}") #set($showLevel ="${clModel.mastTable.fieLdsModel.showLevel}") #set($realVmodel ="${clModel.vModel}") #set($config =${clModel.mastTable.fieLdsModel.config}) #set($constantVmodel ="${clModel.vModel}") #GetSystemData(false) #end #end ${cl.modelLowName}entity.set${cl.mainField}(${cl.modelLowName}OneEntity.get${cl.mainField}()); ${cl.modelLowName}entity.set${cl.relationUpField}(entity.get${cl.mainUpKey}()); } ${cl.modelLowName}Service.saveOrUpdate(${cl.modelLowName}entity); #end #end } #end