def jsp_export( entity_name, package_name='medicare', input_file='output.txt', ): """ jsp导出 :param entity_name: 传入实体类名称 :param package_name: 实体类的包名 :param input_file: 传入数据库字段名称txt文件 :return: """ entity_name = util.low_case_first_letter(entity_name) with open(entity_name + 'Export.jsp', 'w', encoding='utf-8') as f: f.write(' //数据导出功能\n') f.write(' $(\'#exportBtn\').click(function () {\n') with open(input_file, 'r', encoding='utf-8') as f2: column = util.entity_attributes_standardize(f2.readline().strip()) while column: f.write(' $(\'#export input[name="' + column + '"]\').val($.trim($("#dataTableBar #' + column + '").val()));\n') column = util.entity_attributes_standardize( f2.readline().strip()) f.write(' $("#export").submit();\n') f.write(' });\n\n') f.write( ' <form id="export" enctype="application/x-www-form-urlencoded" method="post" style="display: none" ' 'target="_blank" action="${ctx}/' + package_name + '/' + entity_name + '/export.json">\n') with open(input_file, 'r', encoding='utf-8') as f2: column = util.entity_attributes_standardize(f2.readline().strip()) while column: f.write(' <input name="' + column + '">\n') column = util.entity_attributes_standardize( f2.readline().strip()) f.write(' </form>\n\n') f.write( ' <a id="exportBtn" href="javascript:void(0)" class="easyui-linkbutton" ' 'iconCls="icon-save" plain="true">数据导出</a>')
def xml_export(table_name, input_file='output.txt', output_file='export_xml.txt'): """ 创建xml语句 :param table_name: 传入表名称 驼峰式命名/下划线命名 :param input_file: 传入数据库字段名称txt文件 :param output_file: 输出xml文件 :return: """ table_name = util.table_name_standardize(table_name) with open(output_file, 'w', encoding='utf-8') as f: f.write( ' <select id="getExport" parameterType="Map" resultMap="BaseResultMap">\n' ) f.write(' SELECT <include refid="sql" /> FROM ' + table_name + '\n') f.write(' <where>\n') f.write(' <if test="pkId != null and pkId != \'\'">\n') f.write(' ' + table_name + '.PK_ID = #{pkId,jdbcType=INTEGER}\n') f.write(' </if>\n') with open(input_file, 'r', encoding='utf-8') as f2: column = f2.readline().strip() attribute = util.entity_attributes_standardize(column) while column: f.write(' <if test="' + attribute + ' != null and ' + attribute + ' != \'\'">\n') f.write(' AND ' + table_name + '.' + column + ' LIKE \'%\' + #{' + attribute + ',jdbcType=VARCHAR} + \'%\'\n') f.write(' </if>\n') column = f2.readline().strip() attribute = util.entity_attributes_standardize(column) f.write(' </where>\n') f.write(' order by ' + table_name + '.PK_ID\n </select>\n')
def create_search(search_file="search.txt"): """ 添加搜索条件 :param search_file: 搜索条件文本文件 :return: """ with open('search.jsp', 'w', encoding='utf-8') as f: with open(search_file, 'r', encoding='utf-8') as f2: search = f2.readlines() for i in range(len(search)): item = search[i].split(' ') item[-1] = util.entity_attributes_standardize(item[-1].strip()) if i % 3 == 0: f.write(' <tr>\n') f.write(' <th>' + item[0] + ':</th>\n') f.write(' <td><input type="text" name="' + item[-1] + '" id="' + item[-1] + '"/></td>\n') if i % 3 == 2: f.write(' </tr>\n') if len(search) % 3 != 0: f.write(' </tr>\n')
def reader_import(table_name, columns_for_read, start_row_num): """ 生成readerHelper文件 :param table_name: 表名称 :param columns_for_read: 要读取的excel列数 :param start_row_num: 要读取的excel开始的行数 :return: """ entity_name = table_name entity_name = util.entity_attributes_standardize(entity_name) entity_name = util.up_case_first_letter(entity_name) columns_for_read = str(columns_for_read) start_row_num = str(start_row_num) with open(entity_name + 'ExcelHelper.java', 'w', encoding='utf-8') as f: f.write('package com.yibo.modules.medicare.reader;\n\n') f.write('import com.yibo.core.common.utils.excel.XLSConvertCSVUtil;\n') f.write('import com.yibo.core.common.utils.excel.XLSXCovertCSVUtil;\n') f.write('import com.yibo.modules.medicare.dao.' + entity_name + 'Dao;\n') f.write('import com.yibo.modules.medicare.entity.FileImport;\n') f.write('import com.yibo.modules.medicare.others.WorkConfig;\n') f.write('import org.apache.ibatis.session.SqlSession;\n') f.write('import org.apache.shiro.util.CollectionUtils;\n') f.write('import org.mybatis.spring.SqlSessionTemplate;\n\n') f.write('import java.io.File;\n') f.write('import java.sql.Connection;\n') f.write('import java.sql.PreparedStatement;\n') f.write('import java.util.List;\n\n') f.write('public class ' + entity_name + 'ExcelHelper implements SqlStatement {\n\n') f.write(' public static long insert(String originalFilename, File dataFile, FileImport fileImport, ' 'SqlSessionTemplate sqlSessionTemplate) throws Exception {\n\n') f.write(' while(WorkConfig.getDataImportIsWorkingLock()) {\n') f.write(' //wait for other-ExcelHelper finishing the job\n }\n') f.write(' WorkConfig.setDataImportIsWorkingLock(true);\n') f.write(' long count;\n') f.write(' try (SqlSession session = sqlSessionTemplate.getSqlSessionFactory().openSession();\n') f.write(' Connection con = session.getConnection();\n') f.write(' PreparedStatement ps = con.prepareStatement(INSERT_INTO_' + table_name + ')) {\n') f.write(' int columnsForRead = ' + columns_for_read + ';\n') f.write(' String yearMonth = String.format("%s%s",\n') f.write(' fileImport.getYear(), fileImport.getMonth() < 10 ? ' '"0" + fileImport.getMonth() : fileImport.getMonth());\n') f.write(' if (1 == fileImport.getRecover()) {\n') f.write(' sqlSessionTemplate.getMapper(' + entity_name + 'Dao.class).' 'deleteByYearMonth(yearMonth);\n }\n') f.write(' List<List<String>> list;\n') f.write(' if (originalFilename.toLowerCase().endsWith(XLSX)) {\n') f.write(' list = XLSXCovertCSVUtil.readXLSX(dataFile, 1, ' '' + start_row_num + ', columnsForRead);\n') f.write(' } else {\n') f.write(' list = XLSConvertCSVUtil.readXLS(dataFile, 1, ' '' + start_row_num + ', columnsForRead);\n') f.write(' }\n') f.write(' con.setAutoCommit(false);\n') f.write(' long blankRow = 0L;\n') f.write(' long rowsCount = 0L;\n') f.write(' final int commitSize = 1000;\n') f.write(' for (List<String> row : list) {\n') f.write(' if (CollectionUtils.isEmpty(row)) {\n') f.write(' blankRow++;\n') f.write(' } else {\n') f.write(' rowsCount++;\n') f.write(' for (int j = 1; j < columnsForRead; j++) {\n') f.write(' ps.setString(j, row.get(j));\n') f.write(' }\n') user = int(columns_for_read) - 1 f.write(' ps.setString(' + str(user) + ', fileImport.getUser());\n') f.write(' ps.setString(' + columns_for_read + ', yearMonth);\n') f.write(' ps.addBatch();\n') f.write(' }\n') f.write(' if (rowsCount % commitSize == 0) {\n') f.write(' ps.executeBatch();\n') f.write(' con.commit();\n') f.write(' }\n') f.write(' }\n') f.write(' if (blankRow != list.size()) {\n') f.write(' ps.executeBatch();\n') f.write(' con.commit();\n') f.write(' }\n') f.write(' count = rowsCount - blankRow;\n') f.write(' } catch(Exception e) {\n') f.write(' e.printStackTrace();\n') f.write(' throw e;\n') f.write(' } finally {\n') f.write(' WorkConfig.setDataImportIsWorkingLock(false);\n') f.write(' }\n') f.write(' return count;\n }\n}\n')
def create_jsp(table_name, output_file='output.txt'): """ 生成jsp文件 :param table_name: 传入表名 :param output_file: 传入字段名文件 :return: """ file_name = 'import.jsp' entity_name = util.up_case_first_letter(util.entity_attributes_standardize(table_name)) with open(file_name, 'w', encoding='utf-8') as f: f.write(' $(\'#importBtn\').bind(\'click\', function () { \n') f.write(' $(\'#file-action\').form(\'clear\'); \n') f.write(' $(\'#file-action\').form(\'reset\'); \n') f.write(' $(\'#file-action #filecontainer input\').val(\'\');\n') f.write(' $(\'#dataType\').val(\'' + table_name + '\');\n') f.write(' $(\'#import-dialog\').dialog(\'open\');\n') f.write(' });\n\n') f.write(' $(\'#import\').bind(\'click\', function () {\n') f.write(' var isValid = $(\'#file-action\').form(\'validate\');\n') f.write(' if (isValid) {\n $(\'#file-action\').submit();\n') f.write(' $.messager.progress();\n }\n') f.write(' });\n\n') f.write(' function ajaxFormCallback(json) {\n') f.write(' var isjson = Object.prototype.toString.call(json).toLowerCase() == "[object object]";\n') f.write(' if (isjson && json.success) {\n') f.write(' $(\'#import-dialog\').dialog(\'close\');\n') f.write(' $.messager.alert(\'消息\', json.message, \'info\');\n') f.write(' setTimeout(function () {\n') f.write(' $(\'#dataTable\').datagrid(\'load\', {\n') with open(output_file, 'r', encoding='utf-8') as f2: columns = f2.readlines() for column in columns: column = util.entity_attributes_standardize(column.strip()) f.write(' ' + column + ': $(\'#' + column + '\').val(),\n') f.write(' });\n }, 2);\n') f.write(' } else {\n') f.write(' $.messager.alert(\'错误\', json.message, \'error\');\n }\n') f.write(' $.messager.progress(\'close\');\n }\n\n') f.write(' <a id="importBtn" href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-add" ' 'plain="true">导入</a>\n\n') f.write(' <div id="import-dialog" class="easyui-dialog"\n') f.write(' title="Excel导入"\n') f.write(' buttons="#import-tools"\n') f.write(' closed="true"\n') f.write(' cache="false"\n') f.write(' style="width:450px; height:300px"\n') f.write(' iconCls="icon-edit"\n') f.write(' modal="true">\n') f.write(' <iframe id="file-target" name="file-target" style="display: none"></iframe>\n') f.write(' <div class="modal-body">\n') f.write(' <form action="${ctx}/file/multipart.json" id="file-action" method="post" ' 'enctype="multipart/form-data"\n') f.write(' class="form-horizontal" target="file-target">\n') f.write(' <input name="user" type="hidden" value="${login_name}"/>\n') f.write(' <div class="control-group">\n') f.write(' <label class="control-label">是否覆盖:</label>\n') f.write(' <div class="controls">\n') f.write(' <select id="recover" name="recover" class="easyui-combobox" ' 'style="width:150px;"\n') f.write(' required="required">\n') f.write(' <option value="0">否</option>\n') f.write(' <option value="1">是</option>\n') f.write(' </select>\n') f.write(' </div>\n </div>\n') f.write(' <div class="control-group" style="display:none">\n') f.write(' <label class="control-label">数据类型:</label>\n') f.write(' <div class="controls">\n') f.write(' <input id="dataType" name="dataType" class="easyui-textbox" ' 'style="width:150px;" type="text"/>\n') f.write(' </div>\n </div>\n') f.write(' <div class="control-group">\n') f.write(' <label class="control-label">年份:</label>\n') f.write(' <div class="controls">\n') f.write(' <select class="easyui-combobox" name="year" style="width:150px;" ' 'required="required">\n') f.write(' <c:forEach items="${years}" var="d">\n') f.write(' <option value="${d}">${d}年</option>\n') f.write(' </c:forEach>\n') f.write(' </select>\n') f.write(' </div>\n') f.write(' </div>\n') f.write(' <div class="control-group">\n') f.write(' <label class="control-label">月份:</label>\n') f.write(' <div class="controls">\n') f.write(' <select class="easyui-combobox" name="month" style="width:150px;" ' 'required="required">\n') f.write(' <c:forEach items="1,2,3,4,5,6,7,8,9,10,11,12" var="m" step="1">\n') f.write(' <option value="${m}">${m}月</option>\n') f.write(' </c:forEach>\n') f.write(' <option value="13">全年</option>\n') f.write(' </select>\n') f.write(' </div>\n') f.write(' </div>\n') f.write(' <div class="control-group">\n') f.write(' <label class="control-label">数据文件:</label>\n') f.write(' <div class="controls">\n') f.write(' <input name="file" type="file" style="width:200px" required="required"\n') f.write(' value="选择..."/>\n') f.write(' </div>\n') f.write(' </div>\n') f.write(' </form>\n') f.write(' </div>\n </div>\n') f.write(' <div id="import-tools">\n') f.write(' <a id="import" href="javascript:void(0)" class="easyui-linkbutton" ' 'iconCls="icon-save">保存</a>\n') f.write(' <a href="javascript:void(0)" class="easyui-linkbutton" iconCls="icon-cancel"\n') f.write(' onclick="javascript:$(\'#importDialog\').dialog(\'close\')">关闭</a>\n') f.write(' </div>\n\n') f.write(' void deleteByYearMonth(@Param("yearMonth") String yearMonth);\n\n') f.write(' <delete id="deleteByYearMonth" parameterType="java.lang.String">\n') f.write(' DELETE FROM ' + table_name + ' WHERE YEAR_MONTH = #{yearMonth, jdbcType = VARCHAR}\n') f.write(' </delete>\n\n') f.write(' case ' + table_name + ':\n') f.write(' count = ' + entity_name + 'ExcelHelper.insert(originalFilename, file, ' 'fileImport, sqlSessionTemplate);\n') f.write(' break;\n')
def create_jsp(entity_name, package_name='medicare', columns_file='output.txt', comments_file='comment.txt'): """ 生成jsp文件 :param entity_name: 实体类名 :param package_name: 包名 :param columns_file: 传入字段名文件 :param comments_file: 传入注释名文件 :return: """ entity_name = util.low_case_first_letter(entity_name) file_name = entity_name + 'List.jsp' url = package_name + '/' + entity_name with open(file_name, 'w', encoding='utf-8') as f: f.write('<%--\n') f.write(' User: [email protected]\n') f.write(' Date: ' + time.strftime("%Y/%m/%d", time.localtime())) f.write('\n Time: ' + time.strftime("%H:%M", time.localtime())) f.write('\n--%>\n') f.write( '<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>\n' ) f.write( '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ' '"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n') f.write('<html xmlns="http://www.w3.org/1999/xhtml">\n') f.write('<head>\n') f.write(' <title></title>\n') f.write(' <%@include file="/WEB-INF/views/include/head.jsp" %>\n') f.write(' <style>\n') f.write(' #searchForm table{\n') f.write(' width: 100%;\n') f.write(' }\n') f.write(' #searchForm table tr td,\n') f.write(' #searchForm table tr th\n') f.write(' {\n') f.write(' padding: 5px;\n') f.write(' }\n') f.write(' #searchForm table tr td input{\n') f.write(' width: 90%;\n') f.write(' margin-right: 15px;\n') f.write(' }\n') f.write(' #searchForm table tr th{\n') f.write(' width: 80px;\n') f.write(' padding-left:10px;\n') f.write(' text-align: right;\n') f.write(' }\n') f.write(' th{\n') f.write(' font-weight: normal;\n') f.write(' }\n') f.write(' .breadcrumb{\n') f.write(' padding-left:0;\n') f.write(' margin-bottom: 0;\n') f.write(' }\n') f.write(' #searchForm table tr td input.search-btn{\n') f.write(' width: 80%;\n') f.write(' margin: 0;\n') f.write(' }\n') f.write(' #searchForm table tr td input.combo-text{\n') f.write(' margin-right: 0;\n') f.write(' }\n') f.write(' </style>\n') f.write(' <script type="text/javascript">\n\n') f.write(' $(function () {\n') f.write(' $(\'#dataTable\').datagrid({\n') f.write(' rownumbers: true,\n') f.write(' loading: true,\n') f.write(' fit: true,\n') f.write(' toolbar: "#dataTableBar",\n') f.write(' url: \'${ctx}/' + url + '/list.do\',\n') f.write(' pagination: true,\n') f.write(' pageSize: 20,\n') f.write(' columns: [[\n') with open(columns_file, 'r', encoding='utf-8') as f2: fields = f2.readlines() with open(comments_file, 'r', encoding='utf-8') as f3: titles = f3.readlines() for i in range(len(fields)): f.write(' {field: \'' + util.entity_attributes_standardize(fields[i]) + '\', title: \'' + titles[i].strip() + '\', width: 120},\n') f.write(' ]]\n });\n\n') f.write(' new CrudForm({datagrid: \'dataTable\'});\n\n') f.write(' $("#search").click(function() {\n') f.write( ' $(\'#dataTable\').datagrid("load", yibo.util.formJson($("#searchForm")));\n' ) f.write(' });\n });\n') f.write(' </script>\n</head>\n') f.write('<body class="easyui-layout">\n') f.write( '<div data-options="region:\'center\'" style="padding:0px;border:0px;" data-options="fit:true">\n' ) f.write(' <table id="dataTable"></table>\n') f.write(' <div id="dataTableBar">\n') f.write( ' <a class="easyui-linkbutton" id="tool-search-btn" ' 'data-options="plain: true, iconCls: \'layout-button-up\'">查询</a>\n' ) f.write(' <!-- 查询条件 -->\n') f.write( ' <form id="searchForm" class="breadcrumb form-search" style="display:none" method="post">\n' ) f.write(' <table>\n') f.write(' <tr>\n') f.write( ' <td style="text-align: center"><input id="search" ' 'class="btn btn-primary search-btn" type="button" value="查询" style="line-height:15px"/></td>\n' ) f.write(' </tr>\n') f.write(' </table>\n') f.write(' </form>\n') f.write(' </div>\n</div>\n</body>\n</html>\n\n')
def create_xml(entity_name, table_name, package_name='medicare', input_file='output.txt'): """ 生成Mybatis的xml文件 :param entity_name: 实体类名 :param table_name: 表名 :param package_name: 包名 :param input_file: 传入字段名文件 :return: """ output_file = entity_name + '.xml' with open(output_file, 'w', encoding='utf-8') as f: f.write('<?xml version="1.0" encoding="UTF-8"?>\n') f.write('<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ' '"http://mybatis.org/dtd/mybatis-3-mapper.dtd">\n') f.write('<mapper namespace="com.yibo.modules.' + package_name + '.dao.' + entity_name + 'Dao">\n\n') f.write(' <sql id="sql">\n') f.write(' ' + table_name + '.PK_ID AS ' + table_name + '_PK_ID, \n') columns = [] attributes = [] with open(input_file, 'r', encoding='utf-8') as f1: column = f1.readline().strip() while column: columns.append(column) attributes.append(util.entity_attributes_standardize(column)) column = f1.readline().strip() leng = len(columns) for i in range(leng - 1): f.write(' ' + table_name + '.' + columns[i] + ' AS ' + table_name + '_' + columns[i] + ', \n') f.write(' ' + table_name + '.' + columns[-1] + ' AS ' + table_name + '_' + columns[-1] + '\n') f.write(' </sql>\n\n') f.write(' <resultMap id="BaseResultMap" ' 'type="com.yibo.modules.' + package_name + '.entity.' + entity_name + '">\n') f.write(' <id column="' + table_name + '_PK_ID" jdbcType="BIGINT" property="pkId"/>\n') with open(input_file, 'r', encoding='utf-8') as f1: column = f1.readline().strip() while column: attribute = util.entity_attributes_standardize(column) f.write(' <result column="' + table_name + '_' + column + '" jdbcType="VARCHAR" property="' + attribute + '"/>\n') column = f1.readline().strip() f.write(' </resultMap>\n\n') f.write( ' <select id="findPage" parameterType="java.util.Map" resultMap="BaseResultMap">\n' ) f.write(' SELECT\n') f.write(' <include refid="sql"/>\n') f.write(' FROM ' + table_name + '\n') f.write(' <where>\n') f.write(' <if test="pkId != null and pkId != \'\' ">\n') f.write(' ' + table_name + '.PK_ID = #{pkId,jdbcType=VARCHAR}\n') f.write(' </if>\n') with open(input_file, 'r', encoding='utf-8') as f1: column = f1.readline().strip() while column: attribute = util.entity_attributes_standardize(column) f.write(' <if test="' + attribute + ' != null and ' + attribute + ' != \'\' ">\n') f.write(' AND ' + table_name + '.' + column + ' LIKE \'%\' + #{' + attribute + ',jdbcType=VARCHAR} + \'%\'\n') f.write(' </if>\n') column = f1.readline().strip() f.write(' </where>\n') f.write(' ORDER BY ' + table_name + '.PK_ID\n') f.write(' </select>\n\n') f.write(' <delete id="delete" parameterType="java.lang.Long">\n') f.write(' DELETE FROM ' + table_name + ' WHERE ' + table_name + '.PK_ID = #{pkId,jdbcType=BIGINT}\n') f.write(' </delete>\n\n') f.write(' <insert id="insert" parameterType="com.yibo.modules.' + package_name + '.entity.' + entity_name + '">\n') f.write(' INSERT INTO ' + table_name + ' (\n') for i, x in enumerate(columns): if i != len(columns) - 1: f.write(' ' + x + ', \n') continue f.write(' ' + x + '\n') f.write(' )\n') f.write(' VALUES\n (\n') for i, x in enumerate(attributes): if i != len(attributes) - 1: f.write(' #{' + x + ', jdbcType = VARCHAR}, \n') continue f.write(' #{' + x + ', jdbcType = VARCHAR}\n') f.write(' )\n') f.write(' </insert>\n\n') f.write( ' <update id="updateNull" parameterType="com.yibo.modules.' + package_name + '.entity.' + entity_name + '">\n') f.write(' UPDATE ' + table_name + '\n') f.write(' <set>\n') for i in range(leng - 1): f.write(' ' + columns[i] + ' = #{' + attributes[i] + ', jdbcType = VARCHAR}, \n') f.write(' ' + columns[-1] + ' = #{' + attributes[-1] + ', jdbcType = VARCHAR}\n') f.write(' </set>\n') f.write(' WHERE ' + table_name + '.PK_ID = #{pkId, jdbcType = BIGINT}\n') f.write(' </update>\n\n') f.write(' <update id="update" parameterType="com.yibo.modules.' + package_name + '.entity.' + entity_name + '">\n') f.write(' UPDATE ' + table_name + '\n') f.write(' <set>\n') for i in range(leng - 1): f.write(' <if test="' + attributes[i] + ' != null and ' + attributes[i] + ' != \'\'">\n') f.write(' ' + table_name + '.' + columns[i] + ' = #{' + attributes[i] + ', jdbcType = VARCHAR}, \n') f.write(' </if>\n') f.write(' <if test="' + attributes[-1] + ' != null and ' + attributes[-1] + ' != \'\'">\n') f.write(' ' + table_name + '.' + columns[-1] + ' = #{' + attributes[-1] + ', jdbcType = VARCHAR}\n') f.write(' </if>\n') f.write(' </set>\n') f.write(' WHERE ' + table_name + '.PK_ID = #{pkId,jdbcType=BIGINT}\n') f.write(' </update>\n\n') f.write( ' <select id="queryBySql" parameterType="java.lang.String" resultType="java.util.Map">\n' ) f.write(' ${executeSql}\n') f.write(' </select>\n\n') f.write( ' <delete id="deleteByIds" parameterType="java.lang.String">\n') f.write(' DELETE FROM ' + table_name + ' WHERE PK_ID IN\n') f.write( ' <foreach collection="list" item="id" open="(" separator="," close=")">\n' ) f.write(' #{id}\n') f.write(' </foreach>\n') f.write(' </delete>\n\n') f.write('</mapper>')