优惠券管理--优惠券发行

 

 

上图分别是优惠券的展示,新增,编辑,删除等等。

 

下面我们开始来进行分析优惠券发行的一些细节,以及如何具体实现的业务逻辑。

下满先把全部的代码贴一下

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="ctx" value="${pageContext.request.contextPath}" />
<jsp:include page="/jsp/common/header.jsp"></jsp:include>
<script src="${ctx }/js/promote/ec_coupon_publish.js"></script>

<body>
<table class="queryTable" width="100%" >
    <tr>
        <td class="queryTitle" width="100">发行批次</td>
        <td class="queryContent" width="100">
            <input class="inputText" type="text" id="publishId_s" />
        </td>
        <td class="queryTitle" width="100">优惠券类型</td>
        <td class="queryContent" width="100">
            <select id="couponTypeId_s" class="easyui-combobox" style="width: 100px" panelHeight="auto">
                <option value="">请选择</option>
                <c:forEach var="couponType" items="${couponTypeList }">
                    <option value="${couponType.couponTypeId}">${couponType.couponTypeName}</option>
                </c:forEach>
            </select>
        </td>
        <td class="queryTitle" width="100">发行张数</td>
        <td class="queryContent" width="100">
            <input class="inputText" type="text" id="publishAmount_s" />
        </td>
        <td class="queryTitle" width="100">优惠券预警</td>
        <td class="queryContent" width="100">
            <select id="remindTypeSelect" name='remindTypeSelect' class="easyui-combobox" style="width: 100px" panelHeight="auto">
                <option value="">请选择</option>
                <option value="1">已设置</option>
                <option value="0"></option> 
            </select>
        </td>
        <td>
            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="javascript:void(0)" class="easyui-linkbutton" onclick="doQuery()" iconCls="icon-search" >查询</a>
        </td>
    </tr>
</table>
<table id="couponPublishGrid" ></table>

<input type="hidden" id="publishId" name="publishId" />

<!-- 优惠券发行--编辑 -->
<div id="addCouponPublishDlg" class="easyui-window" title="" iconCls="icon-edit" style="width:600px; height:200px;text-align:center; background: #fafafa;">
    <div class="easyui-layout" fit="true">
        <div region="center" border="false" style="background:#fff;border:1px solid #ccc;">
            <form id="addCouponPublishForm"  method="POST">
            <table class="queryTable" width="100%" >
                <tr>
                    <td class="queryTitle" width="100">发行券种</td>
                    <td class="queryContent" width="100">
                        <select id="couponTypeId" class="easyui-combobox" style="width: 100px" panelHeight="auto">
                            <option value="">请选择</option>
                            <c:forEach var="couponType" items="${couponTypeList }">
                                <option value="${couponType.couponTypeId}">${couponType.couponTypeName}</option>
                            </c:forEach>
                        </select>
                        <label id="couponTypeNot" style="color: red;display: none;">* 发行券种不能为空</label>
                    </td>
                    <td class="queryTitle" width="100">生成张数</td>
                    <td class="queryContent" width="100">
                        <input class="inputText" type="text" id="publishAmount" />
                        <label id="publishAmountNot" style="color: red;display: none;">* 生成张数不能为空</label>
                    </td>
                </tr>
                <tr>
                    <td class="queryTitle" width="80px">开始日期</td>
                    <td class="queryContent">
                        <input class="inputText easyui-datebox" type="text" id="beginDate" style="width:125px" editable="false" />
                        <label id="beginDateNot" style="color: red;display: none;">* 开始日期不能为空</label>
                    </td>
                    <td class="queryTitle" width="80px">结束日期</td>
                    <td class="queryContent">
                        <input class="inputText easyui-datebox" type="text" id="endDate" style="width:125px" editable="false" />
                        <label id="endDateNot" style="color: red;display: none;">* 结束日期不能为空</label>
                    </td>
                </tr>
                <tr>
                    <td class="queryTitle" width="100">券号前缀</td>
                    <td class="queryContent" width="100">
                        <input class="inputText" type="text" id="numberPrefix" />
                        <label id="numberPrefixNot" style="color: red;display: none;">* 券号前缀不能为空</label>
                        <label id="numberPrefixLimit" style="color: red;display: none;">* 券号前缀为2~4位</label>
                    </td>
                    <td class="queryTitle" width="100">券号长度</td>
                    <td class="queryContent" width="100">
                        <input class="inputText" type="text" id="numberLength" />
                        <label id="numberLengthNot" style="color: red;display: none;">* 券号长度不能为空</label>
                        <label id="numberLengthLimit" style="color: red;display: none;">* 券号长度应该在6~16位</label>
                    </td>
                </tr>
                <tr>
                    <td class="queryTitle" width="100">优惠券预警</td>
                    <td class="queryContent" width="100" colspan="3">
                           剩余优惠券少于&nbsp;<input class="inputText" type="text" id="warnNum" />&nbsp;<label id="warnNumRemind" style="color: red;display: none;"></label>
                         
                    </td>
                    
                </tr>
                <tr>
                    <td class="queryTitle" width="100">预警方式</td>
                    <td class="queryContent" width="100" colspan="3">
                         
                        <input type='radio' name="remindType" id="remindTypeId" value="email" onclick="showVal()"/> 邮件提示&nbsp;&nbsp;
                        <input class="inputText" type="text" id="remindPath" />
                        <input type='hidden'  id="remindTypeIdValue" /> 
                        <label id="remindPathRemind" style="color: red;display: none;"></label>
                    </td>
                    
                </tr>
                
                <tr>
                <td class="queryTitle" >发行描述</td>
                <td class="queryContent" colspan="3">
                    <textarea id="publishNotes" name="publishNotes" rows="5" cols="10" style="width: 480px;" class="inputText"></textarea>      
                </td>
            </tr>
            </table>
            </form>
        </div>
        <div region="south" border="false" style="text-align:center;height:30px;line-height:30px;">
            <a class="easyui-linkbutton" iconCls="icon-ok" href="javascript:void(0)" onclick="saveCouponPublish()">开始生成优惠券</a>&nbsp;&nbsp;
            <a class="easyui-linkbutton" iconCls="icon-cancel" href="javascript:void(0)" onclick="closeAddCouponPublishDlg()">取消</a>
        </div>
    </div>
</div>

<!-- 优惠券明细 -->
<div id="showCouponsDlg" class="easyui-window" title="" iconCls="icon-edit" style="width:600px; height:200px;text-align:center; background: #fafafa;">
    <div class="easyui-layout" fit="true">
        <div region="center" border="false" style="background:#fff;border:1px solid #ccc;">
            <table id="queryCouponsGrid"></table>
        </div>
    </div>
</div>

<!-- 优惠券预览 -->
<div id="previewCouponsDlg" class="easyui-window" title="" iconCls="icon-edit" style="width:600px; height:200px;text-align:center; background: #fafafa;">
    <div class="easyui-layout" fit="true">
        <div region="center" border="false" style="background:#fff;border:1px solid #ccc;">
            <div id="showCoupon"></div>
        </div>
    </div>
</div>
</body>
var appPath = getAppPath();    
$(function(){
    $('#addCouponPublishDlg').window('close');
    $('#showCouponsDlg').window('close');
    $('#previewCouponsDlg').window('close');
  

    couponPublisGrid();
});


function couponPublisGrid(){
    $('#couponPublishGrid').datagrid({
        url:appPath+'/page/couponPublish/list',
        method:'post',
//        queryParams:getQueryParam(),
        height:'full',
        width:'full',
        singleSelect:true,
        striped: true,
        remoteSort:false,
        checkbox:false,
        idField:'publishId',
        
        frozenColumns:[[
                      {field:'id',title:'操作',width:'80',align:'left',
                      formatter:function(value,rowData,rowIndex){
                              var dataStr = JSON.stringify(rowData);
                              return "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;'  src='"+appPath+"/js/lib/jquery-easyui/themes/icons/pencil.png' title='编辑' onClick='showEdit("+dataStr+")'/></a> &nbsp;" +
                              "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;'  src='"+appPath+"/js/lib/jquery-easyui/themes/icons/cancel.png' title='删除' onClick='del("+dataStr+")'/></a> &nbsp;"+
                              "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;'  src='"+appPath+"/js/lib/jquery-easyui/themes/icons/search.png' title='券明细' onClick='queryCoupons("+dataStr+")'/></a>&nbsp; ";
                              
                      }
                      }
                  ]],
        columns:[[
                  {field:'publishId',title:'发行批次号',styler:function(index,row){     
                       if (row.remindSuccess=="1"){     
                            return 'background-color:red;';     
                          }     
                     }, width:80,align:'center',sortable:true},
                  {field:'couponTypeName',title:'优惠券类型',width:120,align:'center',sortable:true},
                  {field:'publishAmount',title:'发行张数',width:80,align:'center',sortable:true},
                  {field:'userRealName',title:'发行人',width:80,align:'center',sortable:true},
                  {field:'publishTime',title:'发行时间',width:120,align:'center',sortable:true},
                  {field:'numberPrefix',title:'券号前缀',width:80,align:'center',sortable:true},
                  {field:'numberLength',title:'券号长度',width:80,align:'center',sortable:true},
                  {field:'beginDate',title:'有效开始日期',width:120,align:'center',sortable:true},
                  {field:'endDate',title:'有效截止日期',width:120,align:'center',sortable:true},
                  {field:'remindTypeName',title:'优惠券预警',formatter:function(value){return remindTypeName(value); },width:120,align:'center',sortable:true},
                  {field:'remindType',title:'预警提醒方式',formatter:function(value){return remindType(value); },width:120,align:'center',sortable:true}
                  
                 ]],
         pagination:true,
         rownumbers:true,
         toolbar:[{
                 id:'btnadd',
                text:'新增发行',
                iconCls:'icon-add',
                handler:function(){
                    addGoodsDlg();
                }
             }
         ]
    });
}

function remindTypeName(value){
    if(value ==1 )return '已设置'
    else return '无';
}

function remindType(value){
    if(value=='email') return'邮箱提醒'
    else return '无';
}



function doQuery(){
    var param = $('#couponPublishGrid').datagrid('options').queryParams;
    param.couponTypeId = $("#couponTypeId_s").combobox("getValue");
    param.publishId = $.trim($('#publishId_s').val());
    param.publishAmount = $.trim($('#publishAmount_s').val());
    param.remindType = $("input[name=remindTypeSelect]").val();
    $("#couponPublishGrid").datagrid('unselectAll');
    $("#couponPublishGrid").datagrid('load',param);
}


//添加商品弹出框
function addGoodsDlg(){
    $('#publishId').val('');
    $("#couponTypeId").combobox('select','');
    $('#publishAmount').val('');
    $('#beginDate').datebox('setValue','');
    $('#endDate').datebox('setValue','');
    $('#numberPrefix').val('');
    $('#numberLength').val('');
    $('#publishNotes').val('');
    $('#warnNum').val('');
    $("input[name=remindType]").attr("checked",false); 
    $("#remindTypeIdValue").val('');
    $('#remindPath').val('');
    
    $('#addCouponPublishDlg').window({
        title:'优惠券发行--编辑',
        iconCls:'icon-add',
        width:693,
        height:300,
        left:100,
        modal: true,
        shadow: true,
        collapsible:false,
        minimizable:false,
        maximizable:false
    });
    $('#addCouponPublishDlg').window('move',{top:0});
    $('#addCouponPublishDlg').window('open');
}

function closeAddCouponPublishDlg(){
    $('#addCouponPublishDlg').window('close');
}

//保存优惠券发行数据
function saveCouponPublish(){
    //发行券种
    var couponTypeId = $("#couponTypeId").combobox("getValue");
    //生成张数
    var publishAmount = $('#publishAmount').val();
    //开始日期
    var beginDate = $('#beginDate').datebox("getValue");
    //结束日期
    var endDate = $('#endDate').datebox("getValue");
    //券号前缀
    var numberPrefix = $('#numberPrefix').val();
    //券号长度
    var numberLength = $('#numberLength').val();
    //发行描述
    var publishNotes = $('#publishNotes').val();
    
    //预警数
    var warnNum = $("#warnNum").val();
    //预警方式
    
    var remindType =$("#remindTypeIdValue").val();
    //预警途径
    var remindPath = $("#remindPath").val();
    
    if(couponTypeId==''){
        $('#couponTypeNot').css('display','');
        return;
    }else{
        $('#couponTypeNot').css('display','none');
    }
    if(publishAmount==''){
        $('#publishAmountNot').css('display','');
        return;
    }else{
        $('#publishAmountNot').css('display','none');
    }
    if(isNaN(publishAmount)){
        $.messager.alert('提示信息','生成张数请输入数字!','info'); 
        return;
    }
    if(beginDate==''){
        $('#beginDateNot').css('display','');
        return;
    }else{
        $('#beginDateNot').css('display','none');
    }
    if(endDate==''){
        $('#endDateNot').css('display','');
        return;
    }else{
        $('#endDateNot').css('display','none');
    }
    
    if(beginDate && endDate && parseFloat(beginDate.replace(/\-/g,""))>parseFloat(endDate.replace(/\-/g,""))){
        $.messager.alert('提示信息','开始日期要小于或等于结束日期','info');
        return;
    }
    
    if(numberPrefix==''){
        $('#numberPrefixNot').css('display','');
        return;
    }else{
        $('#numberPrefixNot').css('display','none');
    }
    if(numberPrefix.length<2 || numberPrefix.length>4){
        $('#numberPrefixLimit').css('display','');
        return;
    }else{
        $('#numberPrefixLimit').css('display','none');
    }
    
    if(numberLength==''){
        $('#numberLengthNot').css('display','');
        return;
    }else{
        $('#numberLengthNot').css('display','none');
    }
    if(isNaN(numberLength)){
        $.messager.alert('提示信息','券号长度请输入数字!','info'); 
        return;
    }
    if(parseInt(numberLength)<6 || parseInt(numberLength)>16){
        $('#numberLengthLimit').css('display','');
        return;
    }else{
        $('#numberLengthLimit').css('display','none');
    }
    
    
    if($.trim(warnNum) !='' && warnNum!=null){
        if(!checkNumber(warnNum)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        }else if(parseInt(warnNum) > parseInt(publishAmount)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        } else $('#warnNumRemind').css('display','none');    
            
            
        if(remindType ==''){
            $('#remindPathRemind').html('请选择预警提示方式');
            $('#remindPathRemind').css('display','');
            return;
        }else if(remindPath ==''){
            $('#remindPathRemind').html('请填写预警提示方式途径');
            $('#remindPathRemind').css('display','');
            return;
        }else if(!CheckMail(remindPath)){
            $('#remindPathRemind').html('请填写正确的邮箱格式');
            $('#remindPathRemind').css('display','');
            return;
        } else{      
            $('#warnNumRemind').css('display','none');    
            $('#remindPathRemind').css('display','none');    
        }
    }else{
        $('#warnNumRemind').css('display','none');    
    }
    
    if(remindType !='' &&remindType != null){
        if(!checkNumber(warnNum)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        }else if(parseInt(warnNum) > parseInt(publishAmount)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        } else $('#warnNumRemind').css('display','none');    
        if(remindPath ==''){
            $('#remindPathRemind').html('请填写预警提示方式途径');
            $('#remindPathRemind').css('display','');
            return;
        }else if(!CheckMail(remindPath)){
            $('#remindPathRemind').html('请填写正确的邮箱格式');
            $('#remindPathRemind').css('display','');
            return;
        } else{ 
            $('#warnNumRemind').css('display','none');    
            $('#remindPathRemind').css('display','none');    
        }
            
    }else{
        $('#remindPathRemind').css('display','none');    
    }
    

    if($.trim(remindPath) !='' && remindPath!=null){
        if(!checkNumber(warnNum)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        }else if(parseInt(warnNum) > parseInt(publishAmount)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        } else $('#warnNumRemind').css('display','none');    
            
        if(remindType ==''){
            $('#remindPathRemind').html('请选择预警提示方式');
            $('#remindPathRemind').css('display','');
            return;
     
        }else if(!CheckMail(remindPath)){
            $('#remindPathRemind').html('请填写正确的邮箱格式');
            $('#remindPathRemind').css('display','');
            return;
        } else{  
            $('#warnNumRemind').css('display','none');    
            $('#remindPathRemind').css('display','none');    
        }
    }else{ 
        $('#remindPathRemind').css('display','none');    
    }
    
    var type = "save";
    if($('#publishId').val()!=''){
        type = "update";
    }
    

    var mod = $("<div class='panel window' style='position: absolute;text-align:center;top:50%;left:50%;z-index:9100'>" +
            "<img src='"+appPath+"/images/common/loading.gif'><br/>正在生成优惠券</div>" +
            "<div class='window-mask' style='z-index:9100'></div>");
        mod.appendTo('body');
    
        var data = {publishId:$('#publishId').val(),type:type,couponTypeId:couponTypeId,publishAmount:publishAmount,
                beginDate:beginDate,endDate:endDate,numberPrefix:numberPrefix,numberLength:numberLength,
                warnNum:warnNum,remindType:remindType,remindPath:remindPath,
                publishNotes:publishNotes,isDelete:'N'}; 
    doAjax({
        url:appPath+'/page/couponPublish/updateCouponPublish',
        type:'post',
        data:data,
        success:function(data){
            mod.remove();
            if(data=='ok'){
                $.messager.alert('提示信息','保存成功','info');
            }
            doCouponPublishReload();
            $('#addCouponPublishDlg').window('close');
        },
        error:function(XMLHttpRequest, textStatus, errorThrown){
            mod.remove();
            $.messager.alert('提示信息','抱歉,保存失败,'+textStatus,'error');
            doCouponPublishReload();
        }
    });        
}


function CheckMail(mail) { 
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    if (filter.test(mail)) return true; 
    else  return false;
}
function doCouponPublishReload(){
    $('#couponPublishGrid').datagrid('unselectAll');
    $('#couponPublishGrid').datagrid('reload');
    $('#addCouponPublishDlg').window('close');
}


//删除数据
function del(rowData){
    $.messager.confirm('提示信息','您确定要删除这条记录?',function(r){
        if(r){
            doAjax({
                url:appPath+'/page/couponPublish/delEcCouponPublish',
                type:'post',
                data:{publishId:rowData.publishId,isDelete:'Y'},
                success:function(data){
                    if(data='ok'){
                        $.messager.alert('提示信息','删除成功!','info');
                    }
                    doCouponPublishReload();
                },
                error:function(XMLHttpRequest, textStatus, errorThrown){
                    $.messager.alert('提示信息','删除失败!','info');
                    doCouponPublishReload();
                }
            });    
        }
    });
    
}

//显示编辑页面
function showEdit(rowData){
    $('#addCouponPublishForm').form('clear');
    $('#addCouponPublishForm').form('load',rowData);

    $('#publishId').val(rowData.publishId);
    $("#couponTypeId").combobox('select',rowData.couponTypeId);
    $('#publishAmount').val(rowData.publishAmount);
    $('#beginDate').datebox('setValue',rowData.beginDate);
    $('#endDate').datebox('setValue',rowData.endDate);
    $('#numberPrefix').val(rowData.numberPrefix);
    $('#numberLength').val(rowData.numberLength);
    $('#publishNotes').val(rowData.publishNotes);
     
    $('#warnNum').val(rowData.warnNum);
    $('#remindPath').val(rowData.remindPath);
    $("input[name='remindType']").each(function(){ 
         if($(this).val()==rowData.remindType){
             $(this).attr("checked","true");
             
         }
            
    });
      $("#warnNum").val(rowData.warnNum);
      $("#remindPath").val(rowData.remindPath);
 
    $('#addCouponPublishDlg').window({
        title:'优惠券发行--编辑',
        iconCls:'icon-add',
        width:693,
        height:300,
        left:100,
        modal: true,
        shadow: true,
        collapsible:false,
        minimizable:false,
        maximizable:false
    });
    $('#addCouponPublishDlg').window('move',{top:0});
    $('#addCouponPublishDlg').window('open');
}


//券明细弹出框
function queryCoupons(rowData){
    $('#showCouponsDlg').window({
        title:'优惠券发行--券明细',
        iconCls:'icon-add',
        width:993,
        height:400,
        left:50,
        modal: true,
        shadow: true,
        collapsible:false,
        minimizable:false,
        maximizable:false
    });
    $('#showCouponsDlg').window('move',{top:0});
    $('#showCouponsDlg').window('open');
    couponsGrid(rowData.publishId);
    $('#publishId').val(rowData.publishId);
}

function couponsGrid(publishId){
    $('#queryCouponsGrid').datagrid({
        url:appPath+'/page/couponsQuery/couponsList',
        method:'post',
        queryParams:{publishId:publishId},
        height:'350',
        width:'full',
        singleSelect:true,
        striped: true,
        remoteSort:false,
        checkbox:false,
        idField:'couponNo',
        frozenColumns:[[
                          {field:'id',title:'操作',width:'40',align:'center',
                          formatter:function(value,rowData,rowIndex){
                                  var dataStr = JSON.stringify(rowData);
                                  return "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;'  src='"+appPath+"/js/lib/jquery-easyui/themes/icons/search.png' title='预览' onClick='preview("+dataStr+")'/></a> &nbsp;";
                                  
                          }
                          }
                      ]],
        columns:[[
                  {field:'publishId',title:'发行批次号',width:80,align:'center',sortable:true},
                  {field:'couponNo',title:'券号',width:80,align:'center',sortable:true},
                  {field:'couponTypeName',title:'优惠券类型',width:120,align:'center',sortable:true},
                  {field:'couponFee',title:'面额',width:80,align:'center',sortable:true},
                  {field:'discountFee',title:'优惠额',width:60,align:'center',sortable:true},
                  {field:'orderFeeLimit',title:'订单限额',width:120,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.orderFeeLimit=='0'){
                                  return '无';
                              }else{
                                  return rowData.orderFeeLimit;
                              }
                      }
                  },        
                  {field:'useAmountLimit',title:'限用张数',width:60,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.useAmountLimit=='0'){
                                  return '无';
                              }else{
                                  return rowData.useAmountLimit;
                              }
                      }
                  },
                  {field:'isLimitGoods',title:'适用商品',width:60,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.isLimitGoods=='N'){
                                  return '全部商品';
                              }else{
                                  return '指定商品';
                              }
                      }
                  },
                  {field:'couponState',title:'优惠券状态',width:70,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.couponState=='create'){
                                  return '已发行';
                              }else if(rowData.couponState=='assign'){
                                  return '已分发';
                              }else if(rowData.couponState=='used'){
                                  return '已使用';
                              }else if(rowData.couponState=='expired'){
                                  return '已过期';
                              }
                      }
                  },
                  {field:'publishTime',title:'发行日期',width:120,align:'center',sortable:true},
                  {field:'beginDate',title:'生效日期',width:120,align:'center',sortable:true},
                  {field:'endDate',title:'失效日期',width:120,align:'center',sortable:true},
                  {field:'assignType',title:'分发方式',width:60,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.assignType=='auto'){
                                  return '自动';
                              }else if(rowData.couponState=='byhand'){
                                  return '手工';
                              }
                      }
                  },
                  {field:'assignTime',title:'分发日期',width:120,align:'center',sortable:true},
                  {field:'usedTime',title:'使用日期',width:120,align:'center',sortable:true},
                  {field:'loginName',title:'使用会员',width:80,align:'center',sortable:true},
                  {field:'orderId',title:'使用订单号',width:80,align:'center',sortable:true}
                  
                 ]],
         pagination:true,
         rownumbers:true,
         toolbar:[{
                id:'btnExcel',
                text:'导出Excel',
                iconCls:'icon-exportExcel',
                handler:function(){
                    exportOrderExcel();
                }
            },{
                id:'btnPDF',
                text:'导出PDF',
                iconCls:'icon-exportPDF',
                handler:function(){
                    exportOrderPdf();
                }
            }]
    });
}

/**
 * 导出订单Excel
 */
function exportOrderExcel(){
    $.messager.confirm('提示信息','您确定要导出到Excel?',function(r){
        if(r){
            var columns = $("#queryCouponsGrid").datagrid("options").columns[0];
        
            //--------把标题grid标题和grid的field,拼接成字符串-----------
            var stringTitle = "";
            var stringFields = "";
            for(var i = 0; i < columns.length; i++){
                stringTitle = stringTitle + columns[i].title + ",";
                stringFields = stringFields + columns[i].field + ",";
            }
            if(stringTitle.lastIndexOf(",") == (stringTitle.length-1)){
                stringTitle = stringTitle.substring(0, stringTitle.lastIndexOf(","));    
            }
            if(stringFields.lastIndexOf(",") == (stringFields.length-1)){
                stringFields = stringFields.substring(0, stringFields.lastIndexOf(","));    
            }
            
            var queryParams = $("#queryCouponsGrid").datagrid("options").queryParams;
            queryParams.gridTitle = stringTitle;
            queryParams.gridField = stringFields;
            queryParams.moduleName = "优惠券查询.xls";
            
            var formObj = $("<form></form>").attr("method","post").attr("action",appPath+"/page/export/exportCouponsList");
            formObj.append("<input type='text' name='gridTitle'>")
                   .append("<input type='text' name='gridField'>")
                   .append("<input type='text' name='moduleName'>")
                   .append("<input type='text' name='publishId'>")
                   .append("<input type='text' name='couponNo'>")
                   .append("<input type='text' name='couponTypeName'>")
                   .append("<input type='text' name='couponFee'>")
                   .append("<input type='text' name='discountFee'>")
                   .append("<input type='text' name='orderFeeLimit'>")
                   .append("<input type='text' name='useAmountLimit'>")
                   .append("<input type='text' name='isLimitGoods'>")
                   .append("<input type='text' name='couponState'>")
                   .append("<input type='text' name='publishTime'>")
                   .append("<input type='text' name='beginDate'>")
                   .append("<input type='text' name='endDate'>")
                   .append("<input type='text' name='assignType'>")
                   .append("<input type='text' name='assignTime'>")
                   .append("<input type='text' name='usedTime'>")
                   .append("<input type='text' name='realName'>")
                   .append("<input type='text' name='orderId'>")
                   .css('display','none')
                   .appendTo("body");
            formObj.form("load",queryParams);       
            formObj.submit();
            formObj.remove();
        }
    });
}

/**
 * 导出pdf
 * @param rowData
 */
function exportOrderPdf(rowData){
    var mod = $("<div class='panel window' style='position: absolute;text-align:center;top:50%;left:50%;z-index:1100'>" +
            "<img src='"+appPath+"/images/common/loading.gif'><br/>正在生成打印文件</div>" +
            "<div class='window-mask' style='z-index:10'></div>");
        mod.appendTo('body');
        var publishId = $('#publishId').val();
        doAjax({
            url : appPath + "/page/couponPublish/printPdf",
            data : {publishId:publishId},
            type : "post",
            timeout : 1000*60*10,
            success:function(data){
                mod.remove();
                var code = data.code;
                switch(code){
                    case 0:
                        $.messager.alert('提示信息',data.msg,'error');
                        break;
                    case 1:
                        $.messager.alert('提示信息','打印文件生成,请下载','info',function(){
                            window.location.href = appPath+"/download.jsp?fileName="+data.fileUrl;
                        });
                        break;
                    default:
                        $.messager.alert('提示信息',data,'error');
                        break;
                }
            },
            error:function(XMLHttpRequest, textStatus, errorThrown){
                mod.remove();
                $.messager.alert('提示信息','打印失败'+textStatus,'error');
            }
        });
}

//优惠券预览
function preview(rowData){
    $('#previewCouponsDlg').window({
        title:'优惠券预览',
        iconCls:'icon-add',
        width:300,
        height:300,
        left:100,
        modal: true,
        shadow: true,
        collapsible:false,
        minimizable:false,
        maximizable:false
    });
    $('#previewCouponsDlg').window('move',{top:0});
    $('#previewCouponsDlg').window('open');
    var picUrl = "<img width='100px' height='100px' style='border:0px;'  src='"+appPath+rowData.couponPicUrl+"'/>";
    document.getElementById('showCoupon').innerHTML=picUrl;
}

function showVal(){
    $("#remindTypeIdValue").val('email');
}
package com.founder.ec.promote.action;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;



import cfca.util.GUID;

import com.founder.ec.base.action.BaseAction;
import com.founder.ec.common.utils.DateUtils;
import com.founder.ec.order.model.OrderShipping;
import com.founder.ec.promote.model.EcCouponPublish;
import com.founder.ec.promote.model.EcCouponType;
import com.founder.ec.promote.model.EcCouponTypeGoods;
import com.founder.ec.promote.model.EcCouponTypeGoodsTemp;
import com.founder.ec.promote.model.EcCoupons;
import com.founder.ec.promote.service.EcCouponPublishService;

@Controller
@RequestMapping(value = "/couponPublish")
public class EcCouponPublishAction extends BaseAction {
    @Autowired
    private EcCouponPublishService ecCouponPublishService;
    
    /**
     * 转到查询页面
     * @param request
     * @return
     */
    @RequestMapping(value="/queryPage")
    public String toQueryPage(HttpServletRequest request){
        EcCouponType ecCouponType = new EcCouponType();
        List<HashMap<String,Object>> couponTypeList = ecCouponPublishService.getCouponTypeList(ecCouponType);
        request.setAttribute("couponTypeList", couponTypeList);
        return "/jsp/promote/ec_coupon_publish.jsp";
    }
    
    /**
     * 优惠券类型列表
     * @param request
     * @param ecCouponType
     * @return
     */
    @RequestMapping(value="/list")
    @ResponseBody
    public Map<String,Object> memberPointList(HttpServletRequest request,EcCouponPublish ecCouponPublish)
    {
        String pageNo = request.getParameter("page");
        String pageSize = request.getParameter("rows");
        return ecCouponPublishService.queryEcCouponPublishPage(ecCouponPublish, Integer.parseInt(pageNo),Integer.parseInt(pageSize));
    }
    
    /**
     * 保存优惠券发行信息
     * @param request
     * @param EcPromoteRule
     * @return
     */
    @RequestMapping(value="/updateCouponPublish")
    @ResponseBody
    public String updateEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish)
    {
        Integer userId = (Integer)request.getSession().getAttribute("userId");
        if(!ecCouponPublish.getRemindType().equals("email"))ecCouponPublish.setRemindType(null);
        if("save".equals(ecCouponPublish.getType())){
            ecCouponPublish.setPublishUserId(userId);
            ecCouponPublish.setAddUserId(userId);
            ecCouponPublish.setAddTime(DateUtils.longToDateAll(System.currentTimeMillis()));
            ecCouponPublish.setPublishTime(DateUtils.longToDateAll(System.currentTimeMillis()));
            ecCouponPublish.setPublishType("general");
        }else{
            ecCouponPublish.setEditUserId(userId);
            ecCouponPublish.setEditTime(DateUtils.longToDateAll(System.currentTimeMillis()));
        }
        ecCouponPublishService.updateEcCouponPublish(request,ecCouponPublish);
        
        return "ok";
    }
    
    /**
     * 删除发行数据
     * @param request
     * @param EcPromoteRule
     * @return
     */
    @RequestMapping(value="/delEcCouponPublish")
    @ResponseBody
    public String delEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish)
    {
        Integer userId = (Integer)request.getSession().getAttribute("userId");
        
        ecCouponPublish.setEditUserId(userId);
        ecCouponPublish.setEditTime(DateUtils.longToDateAll(System.currentTimeMillis()));
        
        ecCouponPublishService.delEcCouponPublish(ecCouponPublish);
        return "ok";
    }
    
    
    /**
     * 发运单批量打印
     * @param request
     * @param shipping
     * @return
     */
    @RequestMapping(value="/printPdf")
    @ResponseBody
    public HashMap<String,Object> batchPrint(HttpServletRequest request,EcCoupons ecCoupons){
        String absolutePath = request.getSession().getServletContext().getRealPath("download");
        return ecCouponPublishService.doPrintPdf(ecCoupons, absolutePath,request);
    }
    
}
package com.founder.ec.promote.service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import com.founder.ec.base.service.BaseService;
import com.founder.ec.promote.model.EcCouponPublish;
import com.founder.ec.promote.model.EcCouponType;
import com.founder.ec.promote.model.EcCoupons;

public interface EcCouponPublishService extends BaseService {

    /**
     * 获取优惠券类型列表
     * @param ecCouponType
     * @return
     */
    public List<HashMap<String, Object>> getCouponTypeList(EcCouponType ecCouponType);
    
    /**
     * 优惠券发行列表
     * @param ecCouponType
     * @param pageNo
     * @param pageSize
     * @return
     */
    public Map<String, Object> queryEcCouponPublishPage(EcCouponPublish ecCouponPublish, int pageNo, int pageSize);
    
    /**
     * 更新优惠券发行
     * @param ecCouponType
     */
    public void updateEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish);
    
    /**
     * 删除优惠券类型
     * @param ecCouponType
     * @param ecCouponTypeGoods
     */
    public void delEcCouponPublish(EcCouponPublish ecCouponPublish);
    
    /**
     * 导出PDF
     * @param param
     * @param printTemplateId
     * @param absolutePath
     * @return
     */
    public HashMap<String, Object> doPrintPdf(EcCoupons ecCoupons,String absolutePath,HttpServletRequest request);
    /**
     * 查询优惠券发行列表(根据couponTypeId查询批次,查询大于30天,且有效期最短的批次优惠券
     * @param ecCouponPublish
     * @return
     */
    public List<EcCouponPublish> getEcCouponPublishTime(EcCouponPublish ecCouponPublish);
    /**
     * 查询可用优惠券发行列表(根据couponTypeId查询批次,查询大于30天,且有效期最短的可用批次优惠券
     * @param ecCouponPublish
     * @return
     */
    public List<EcCouponPublish> getUnUsedEcCouponPublishTime(EcCouponPublish ecCouponPublish);
}
package com.founder.ec.promote.service.impl;

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileOutputStream;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cfca.util.GUID;

import com.founder.ec.base.service.impl.BaseServiceImpl;
import com.founder.ec.common.aop.Cached;
import com.founder.ec.common.dao.CommonDao;
import com.founder.ec.common.page.JspPage;
import com.founder.ec.common.utils.DateUtils;
import com.founder.ec.common.utils.FileUtil;
import com.founder.ec.common.utils.PropertyUtil;
import com.founder.ec.promote.model.EcCouponPublish;
import com.founder.ec.promote.model.EcCouponType;
import com.founder.ec.promote.model.EcCoupons;
import com.founder.ec.promote.service.EcCouponPublishService;
import com.founder.ec.utils.PropertyConfigurer;
import com.itextpdf.text.Document;
import com.itextpdf.text.Font;
import com.itextpdf.text.Image;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

@Service
public class EcCouponPublishServiceImpl extends BaseServiceImpl implements EcCouponPublishService {
    
    @Autowired
    private CommonDao commonDao;
    
    /**
     * 获取优惠券类型列表
     * @param ecCouponType
     * @return
     */
    //@Cached(name="ecCouponType")
    public List<HashMap<String, Object>> getCouponTypeList(EcCouponType ecCouponType) {
        return commonDao.queryForList("EcCouponType.getValidRules", ecCouponType);
    }
    
    
    /**
     * 优惠券发行列表
     * @param ecCouponType
     * @param pageNo
     * @param pageSize
     * @return
     */
    public Map<String, Object> queryEcCouponPublishPage(EcCouponPublish ecCouponPublish, int pageNo, int pageSize){
        JspPage page = (JspPage)commonDao.pageQuery("ecCouponPublish.getEcCouponPublishCount","ecCouponPublish.getEcCouponPublishList", ecCouponPublish, pageNo, pageSize);
        List<EcCouponPublish> list = (List<EcCouponPublish>) page.getData();
        List<EcCouponPublish> newlist =  new ArrayList<EcCouponPublish>();
        SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        if(!list.isEmpty()){
            for(EcCouponPublish ec:list){
                try {
                    if(null !=ec.getEndDate() && !ec.getEndDate().equals("")){
                        Date date = sdf.parse(ec.getEndDate()+" 23:59:59");
                        if(date.after(new Date())){
                            EcCouponPublish e = (EcCouponPublish) commonDao.queryForObject("ecCouponPublish.surplusNum",ec);
                            if(null != ec.getWarnNum()&&Integer.parseInt(e.getRestNum())<Integer.parseInt(ec.getWarnNum()))
                                ec.setRemindSuccess("1");
                        }
                    }
                    newlist.add(ec);
                } catch (ParseException e1) {
                    e1.printStackTrace();
                } 
            }
        } 
        Map<String,Object> resMap = new HashMap<String, Object>();
        resMap.put("total", page.getTotalCount());
        resMap.put("rows", newlist);
        return resMap;
    }
    
    /**
     * 更新优惠券发行
     * @param ecCouponPublish
     */
    public void updateEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish){
        Integer userId = (Integer)request.getSession().getAttribute("userId");
        if("save".equals(ecCouponPublish.getType())){
            commonDao.save("ecCouponPublish.insert",ecCouponPublish);
        }else{
            commonDao.update("ecCouponPublish.updateByPrimaryKeySelective", ecCouponPublish);
            EcCoupons ecCoupons = new EcCoupons();
            ecCoupons.setIsDelete("Y");
            ecCoupons.setPublishId(ecCouponPublish.getPublishId());
            commonDao.update("ecCoupons.updateByPublishId", ecCoupons);
        }
        //保存优惠券数据
        if(null!=ecCouponPublish.getPublishAmount() && 0!=ecCouponPublish.getPublishAmount()
                && !"".equals(ecCouponPublish.getPublishAmount().toString())){//发行数不为空
            List<String> couponNoList = new ArrayList<String>();
            String numberPrefix = ecCouponPublish.getNumberPrefix();
            int numberLength = ecCouponPublish.getNumberLength();
            
            //查询数据库中已经存在的优惠券
//            EcCoupons coupons = new EcCoupons();
//            List<EcCoupons> couponList = (List<EcCoupons>)commonDao.queryForList("ecCoupons.getAllCouponsList",coupons);
            
            //去除重复的优惠券号
            boolean flag = true;//是否有重复
            do{
                Set<String> ss = new HashSet<String>();
                ss.addAll(couponNoList);
                couponNoList.clear();
                couponNoList.addAll(ss);
                
                //判断数据库中是否已经存在
//                for(int i=0;i<couponList.size();i++){
//                    EcCoupons coupon = couponList.get(i);
//                    for(int j=0;j<couponNoList.size();j++){
//                        String couponNo = couponNoList.get(j);
//                        if(couponNo.equals(coupon.getCouponNo())){
//                            couponList.remove(i);
//                            break;
//                        }
//                    }
//                }
                
                
                int cfCount = ecCouponPublish.getPublishAmount()-couponNoList.size();//重复的数量
                if(cfCount>0){
                    for(int i=0;i<cfCount;i++){
                        String couponNo = creCouponNo(numberPrefix, numberLength);
                        couponNoList.add(couponNo);
                    }
                }else{
                    flag = false;
                }
            }while(flag);
            
            List<EcCoupons> couponsList = new ArrayList<EcCoupons>();
            for(String couponNo : couponNoList){
                EcCoupons ecCoupons = new EcCoupons();
                ecCoupons.setCouponNo(couponNo);
                ecCoupons.setCouponTypeId(Long.valueOf(ecCouponPublish.getCouponTypeId()));
                ecCoupons.setPublishId(ecCouponPublish.getPublishId());
                ecCoupons.setBeginDate(ecCouponPublish.getBeginDate());
                ecCoupons.setEndDate(ecCouponPublish.getEndDate());
                ecCoupons.setCouponState("create");
                ecCoupons.setIsDelete("N");
                ecCoupons.setAddUserId(userId);
                ecCoupons.setAddTime(DateUtils.longToDateAll(System.currentTimeMillis()));
                couponsList.add(ecCoupons);
            }
            
            commonDao.batchInsert("ecCoupons.insert", couponsList);
        }
    }
    
    /**
     * 生成优惠券号
     * @param numberPrefix
     * @param numberLength
     * @return
     */
    public String creCouponNo(String numberPrefix,int numberLength){
        String myGuid = GUID.generateGUID();
        myGuid.replaceAll(myGuid, "o");
        myGuid.replaceAll(myGuid, "O");
        myGuid.replaceAll(myGuid, "l");
        myGuid.replaceAll(myGuid, "L");
        myGuid.replaceAll(myGuid, "i");
        myGuid.replaceAll(myGuid, "I");
        myGuid.replaceAll(myGuid, "0");
        myGuid.replaceAll(myGuid, "1");
        myGuid = myGuid.substring((myGuid.length()-numberLength), myGuid.length());
        String couponNo = numberPrefix+myGuid;
        return couponNo;
    }
    
    
    /**
     * 删除优惠券类型
     * @param ecCouponType
     * @param ecCouponTypeGoods
     */
    public void delEcCouponPublish(EcCouponPublish ecCouponPublish){
        commonDao.update("ecCouponPublish.updateByPrimaryKeySelective",ecCouponPublish);
        EcCoupons ecCoupons = new EcCoupons();
        ecCoupons.setIsDelete("Y");
        ecCoupons.setPublishId(ecCouponPublish.getPublishId());
        commonDao.update("ecCoupons.updateByPublishId", ecCoupons);
    }
    
    
    public List<EcCouponPublish> getEcCouponPublishTime(EcCouponPublish ecCouponPublish){
        return commonDao.queryForList("ecCouponPublish.getEcCouponPublishTime", ecCouponPublish);
    }
    
    /**
     * 导出PDF
     * @param param
     * @param printTemplateId
     * @param absolutePath
     * @return
     */
    public HashMap<String, Object> doPrintPdf(EcCoupons ecCoupons,String absolutePath,HttpServletRequest request) {
        HashMap<String,Object> rslt = new HashMap<String, Object>();
        List<Object> couponsList = commonDao.queryForList("ecCoupons.getEcCouponsList", ecCoupons);
        if(null!=couponsList && !couponsList.isEmpty()){
            try {
                Document document = new Document();
//                String propertisFileName = "/itext.properties";
//                String outPutFile = PropertyUtil.getPropertyValue(propertisFileName, "ec_coupons_outputFolder") ;
                String outPutFile =(String)PropertyConfigurer.getContextProperty("ec_coupons_outputFolder");
                
                FileUtil.createFolder(absolutePath + "/"+ outPutFile);
                String fileName = absolutePath + "/"+ outPutFile+"/"+ DateUtils.getCurrentDateString().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")+".pdf";
                PdfWriter.getInstance(document, new FileOutputStream(fileName));
                document.open();
                
                this.generateDelivery(document, couponsList,request);
                
                
                
//                Image bmp = Image.getInstance("E:\\sunset.jpg");
//
//                // 缩小到原来的25%
//
//                bmp.scalePercent(25f);
//                
                // 关闭文档

                document.close();
                
                
                rslt.put("code", 1);
                rslt.put("fileUrl", fileName);
            } catch (Exception e) {
                rslt.put("code", 0);
                rslt.put("msg", e.getMessage());
                e.printStackTrace();
            } 
        }
        return rslt;
    }
    
    private void generateDelivery(Document document,List<Object> couponsList,HttpServletRequest request)throws Exception{
        DecimalFormat df = new DecimalFormat("#.00");
        
        document.newPage();//新建一页
        
//        String propertisFileName = "/itext.properties";
        String outPutFile =(String)PropertyConfigurer.getContextProperty("ec_coupons_fontFile");
        
        BaseFont cf = BaseFont.createFont(outPutFile, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        Font chFont = new Font(cf,12,Font.NORMAL);
        
//        String orderIdString = String.valueOf(coupons.getOrderId());
//        orderIdString = orderIdString.substring(orderIdString.length()-4);
        
//        Paragraph noPara = new Paragraph(orderIdString,chFont);
//        noPara.setAlignment(2);
//        noPara.setSpacingAfter(12f);
//        document.add(noPara);
        
        
        Font tableFont = new Font(cf,9,Font.NORMAL);
        
        
        float w = 0.1f;
        //第一行
        
        
        
        //货品明细列表
        PdfPTable itemTable = new PdfPTable(2);
//        itemTable.setWidthPercentage(100f);
//        itemTable.setWidths(new float[]{60f,60f});
//        itemTable.setSpacingBefore(20f);
        itemTable.getDefaultCell().setBorder(0);
        
        PdfPCell itemTitleCell = new PdfPCell();
        //itemTitleCell.setBorderColor(new BaseColor(153,187,232));//边框颜色
//        itemTitleCell.setFixedHeight(18f);
//        itemTitleCell.setVerticalAlignment(1);//居中
//        itemTitleCell.setHorizontalAlignment(1);//居中
        
        //标题行
//        itemTitleCell.setPhrase(new Phrase("序号",tableFont));
//        this.setCellBorder(itemTitleCell, w, w, w, w);
//        itemTable.addCell(itemTitleCell);
//        
//        itemTitleCell.setPhrase(new Phrase("货品名称",tableFont));
//        this.setCellBorder(itemTitleCell, w, w, 0, w);
//        itemTable.addCell(itemTitleCell);
        
        if(null!=couponsList && couponsList.size()>1){
            EcCoupons coupon = (EcCoupons)couponsList.get(0);
            HashMap<String,Object> param = new HashMap<String, Object>();
            param.put("couponTypeId", coupon.getCouponTypeId());
            List<EcCouponType> typeList = (List<EcCouponType>)commonDao.queryForList("EcCouponType.getCouponTypeById",param);
            EcCouponType ecCouponType = null;
            if(null!=typeList && !typeList.isEmpty()){
                ecCouponType = (EcCouponType)typeList.get(0);
            }
            if(couponsList.size()%2==0){
                for(int i=0;i<couponsList.size();i+=2){
                    EcCoupons coupons = (EcCoupons)couponsList.get(i);
                    BufferedImage image = passSy(coupons,ecCouponType,request);
                    Image imageRight = Image.getInstance(image, null, false);
                    imageRight.scalePercent(100f);
                    itemTable.addCell(imageRight);
                    
                    EcCoupons coupons2 = (EcCoupons)couponsList.get(i+1);
                    BufferedImage image2 = passSy(coupons2,ecCouponType,request);
                    Image imageRight2 = Image.getInstance(image2, null, false);
                    imageRight.scalePercent(100f);
                    itemTable.addCell(imageRight2);
                }
            }else{
                for(int i=0;i<couponsList.size()-1;i+=2){
                    EcCoupons coupons = (EcCoupons)couponsList.get(i);
                    BufferedImage image = passSy(coupons,ecCouponType,request);
                    Image imageRight = Image.getInstance(image, null, false);
                    imageRight.scalePercent(100f);
                    itemTable.addCell(imageRight);
                    
                    EcCoupons coupons2 = (EcCoupons)couponsList.get(i+1);
                    BufferedImage image2 = passSy(coupons2,ecCouponType,request);
                    Image imageRight2 = Image.getInstance(image2, null, false);
                    imageRight.scalePercent(100f);
                    itemTable.addCell(imageRight2);
                }
                EcCoupons coupons = (EcCoupons)couponsList.get(couponsList.size()-1);
                BufferedImage image = passSy(coupons,ecCouponType,request);
                Image imageRight = Image.getInstance(image, null, false);
                imageRight.scalePercent(100f);
                itemTable.addCell(imageRight);
                itemTable.addCell("");
            }
            
        }else if(null!=couponsList && couponsList.size()==1){
            EcCoupons coupon = (EcCoupons)couponsList.get(0);
            HashMap<String,Object> param = new HashMap<String, Object>();
            param.put("couponTypeId", coupon.getCouponTypeId());
            List<EcCouponType> typeList = (List<EcCouponType>)commonDao.queryForList("EcCouponType.getCouponTypeById",param);
            EcCouponType ecCouponType = null;
            if(null!=typeList && !typeList.isEmpty()){
                ecCouponType = (EcCouponType)typeList.get(0);
            }
            EcCoupons coupons = (EcCoupons)couponsList.get(0);
            BufferedImage image = passSy(coupons,ecCouponType,request);
            Image imageRight = Image.getInstance(image, null, false);
            imageRight.scalePercent(100f);
            itemTable.addCell(imageRight);
            itemTable.addCell("");
        }
        
        document.add(itemTable);
        
        
    }
    
    
    /**
     * 打水印
     * @param coupons
     * @return
     */
    public BufferedImage passSy(EcCoupons coupons,EcCouponType ecCouponType,HttpServletRequest request){
        BufferedImage image = null;
        try{
            String saveFolder = request.getSession().getServletContext().getRealPath("upload")+"/promote";
            String newFileNamePath = ecCouponType.getCouponPicUrl();
            if(null!=newFileNamePath && !"".equals(newFileNamePath)){
                String name[] = newFileNamePath.split("/");
                File img = new File(saveFolder+"/"+name[name.length-1]);
//            File img = new File("E:\\sunset.jpg");
                java.awt.Image src = ImageIO.read(img);
                int width = src.getWidth(null);
                int height = src.getHeight(null);
                image = new BufferedImage(width, height,
                        BufferedImage.TYPE_INT_RGB);
                Graphics2D g = image.createGraphics();
                g.drawImage(src, 0, 0, width, height, null);
                g.setColor(Color.black);
                g.setFont(new java.awt.Font("宋体", 12, 12));
                g.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_ATOP,
                        0.6f));
                String couponNo = coupons.getCouponNo();
                if(couponNo.length()==16){
                    couponNo = couponNo.substring(0, 4)+"-"+couponNo.substring(4, 8)+"-"+couponNo.substring(8, 12)+"-"+couponNo.substring(12, 16);
                }
                g.drawString(couponNo, 30, 80);//水印打的位置
                // g.drawString(pressText, wideth - fontSize - x, height -
                // fontSize/2 - y);
                g.dispose();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        
        return image;
    }

    
    public static int getLength(String text) {
        int length = 0;
        for (int i = 0; i < text.length(); i++) {
            if (new String(text.charAt(i) + "").getBytes().length > 1) {
                length += 2;
            } else {
                length += 1;
            }
        }
        return length / 2;
    }
       

    
    
    
    private void setCellBorder(PdfPCell cell,float r,float b,float l,float t){
        cell.setBorderWidthRight(r);
        cell.setBorderWidthBottom(b);
        cell.setBorderWidthLeft(l);
        cell.setBorderWidthTop(t);
    }
    
    
    
    private int getItextAlign(String alignCode){
        if("center".equals(alignCode)){
            return PdfContentByte.ALIGN_CENTER;
        }else if("right".equals(alignCode)){
            return PdfContentByte.ALIGN_RIGHT;
        }else{
            return PdfContentByte.ALIGN_LEFT;
        }
    }


    @Override
    public List<EcCouponPublish> getUnUsedEcCouponPublishTime(
            EcCouponPublish ecCouponPublish) {
        return commonDao.queryForList("ecCouponPublish.getUnUsedEcCouponPublishTime", ecCouponPublish);
    }
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="ecCouponPublish">
    
    <typeAlias alias="EcCouponPublish" type="com.founder.ec.promote.model.EcCouponPublish"/>
    
    <resultMap id="ecCouponPublishResult" class="EcCouponPublish">
        <result column="PUBLISH_ID" property="publishId" />
        <result column="COUPON_TYPE_ID" property="couponTypeId" />
        <result column="PUBLISH_AMOUNT" property="publishAmount" />
        <result column="PUBLISH_USER_ID" property="publishUserId" />
        <result column="PUBLISH_TIME" property="publishTime" />
        <result column="BEGIN_DATE" property="beginDate" />
        <result column="END_DATE" property="endDate" />
        <result column="NUMBER_PREFIX" property="numberPrefix" />
        <result column="NUMBER_LENGTH" property="numberLength" />
        <result column="IS_DELETE" property="isDelete" />
        <result column="ADD_USER_ID" property="addUserId" />
        <result column="ADD_TIME" property="addTime" />
        <result column="EDIT_USER_ID" property="editUserId" />
        <result column="EDIT_TIME" property="editTime" />
        <result column="PUBLISH_NOTES" property="publishNotes" />
        <result column="PUBLISH_TYPE" property="publishType" />
 
        
        <result column="WRAN_NUM" property="warnNum" />
        <result column="REMIND_TYPE_NAME" property="remindTypeName" />
        <result column="REMIND_TYPE" property="remindType" />
        <result column="REMIND_PATH" property="remindPath" />
        <result column="REMIND_SUCCESS" property="remindSuccess" />
        
    </resultMap>
    
    <resultMap id="ecCouponPublishResult" class="EcCouponPublish" extends = "ecCouponPublishResult">
        <result column="coupon_type_name" property="couponTypeName" />
        <result column="user_real_name" property="userRealName" />
    </resultMap>
    
    
    <insert id="insert" parameterClass="EcCouponPublish">
        <selectKey resultClass="int" keyProperty="publishId" >  
            SELECT COUPON_PUBLISH_SEQ.nextval AS publishId  from dual
        </selectKey>
        insert into EC_COUPON_PUBLISH (PUBLISH_ID, COUPON_TYPE_ID, PUBLISH_AMOUNT, PUBLISH_USER_ID,
            PUBLISH_TIME, BEGIN_DATE, END_DATE, NUMBER_PREFIX, NUMBER_LENGTH, IS_DELETE,
            ADD_USER_ID, ADD_TIME, EDIT_USER_ID, EDIT_TIME,PUBLISH_NOTES,PUBLISH_TYPE,WRAN_NUM,REMIND_TYPE,REMIND_PATH,REMIND_SUCCESS)
        values (#publishId#, #couponTypeId#, #publishAmount#, #publishUserId#, #publishTime#,
            #beginDate#, #endDate#, #numberPrefix#, #numberLength#, #isDelete#, #addUserId#,
            #addTime#, #editUserId#, #editTime#,#publishNotes#,#publishType#,#warnNum#,#remindType#,#remindPath#,#remindSuccess#)
    </insert>
    <update id="updateByPrimaryKey" parameterClass="EcCouponPublish">
        update EC_COUPON_PUBLISH
        set COUPON_TYPE_ID = #couponTypeId#,
            PUBLISH_AMOUNT = #publishAmount#,
            PUBLISH_USER_ID = #publishUserId#,
            PUBLISH_TIME = #publishTime#,
            BEGIN_DATE = #beginDate#,
            END_DATE = #endDate#,
            NUMBER_PREFIX = #numberPrefix#,
            NUMBER_LENGTH = #numberLength#,
            IS_DELETE = #isDelete#,
            ADD_USER_ID = #addUserId#,
            ADD_TIME = #addTime#,
            EDIT_USER_ID = #editUserId#,
            EDIT_TIME = #editTime#,
            PUBLISH_NOTES = #publishNotes#,
            PUBLISH_TYPE = #publishType#,
            
            <!-- WRAN_NUM= #warnNum#,
            REMIND_TYPE=#remindType#,
            REMIND_PATH=#remindPath#,
            REMIND_SUCCESS=#remindSuccess# -->
        where PUBLISH_ID = #publishId#
    </update>
    <update id="updateByPrimaryKeySelective" parameterClass="EcCouponPublish">
        update EC_COUPON_PUBLISH
        <dynamic prepend="set">
            <isNotNull prepend="," property="couponTypeId">
                COUPON_TYPE_ID = #couponTypeId#
            </isNotNull>
            <isNotNull prepend="," property="publishAmount">
                PUBLISH_AMOUNT = #publishAmount#
            </isNotNull>
            <isNotNull prepend="," property="publishUserId">
                PUBLISH_USER_ID = #publishUserId#
            </isNotNull>
            <isNotNull prepend="," property="publishTime">
                PUBLISH_TIME = #publishTime#
            </isNotNull>
            <isNotNull prepend="," property="beginDate">
                BEGIN_DATE = #beginDate#
            </isNotNull>
            <isNotNull prepend="," property="endDate">
                END_DATE = #endDate#
            </isNotNull>
            <isNotNull prepend="," property="numberPrefix">
                NUMBER_PREFIX = #numberPrefix#
            </isNotNull>
            <isNotNull prepend="," property="numberLength">
                NUMBER_LENGTH = #numberLength#
            </isNotNull>
            <isNotNull prepend="," property="isDelete">
                IS_DELETE = #isDelete#
            </isNotNull>
            <isNotNull prepend="," property="addUserId">
                ADD_USER_ID = #addUserId#
            </isNotNull>
            <isNotNull prepend="," property="addTime">
                ADD_TIME = #addTime#
            </isNotNull>
            <isNotNull prepend="," property="editUserId">
                EDIT_USER_ID = #editUserId#
            </isNotNull>
            <isNotNull prepend="," property="editTime">
                EDIT_TIME = #editTime#
            </isNotNull>
            <isNotNull prepend="," property="publishNotes">
                PUBLISH_NOTES = #publishNotes#
            </isNotNull>
            <isNotNull prepend="," property="publishType">
            PUBLISH_TYPE = #publishType#
            </isNotNull>
             
              <isNotNull prepend="," property="warnNum">
                 WRAN_NUM= #warnNum#
              </isNotNull>
                <isNotNull prepend="," property="remindType">
                    REMIND_TYPE=#remindType#
              </isNotNull>
              <isNotNull prepend="," property="remindPath">
                    REMIND_PATH=#remindPath#
              </isNotNull>
              <isNotNull prepend="," property="remindSuccess">
                  REMIND_SUCCESS=#remindSuccess#
              </isNotNull>
            
            
 
        </dynamic>
        where PUBLISH_ID = #publishId#
    </update>
    <delete id="deleteByPrimaryKey" parameterClass="EcCouponPublish">
        delete from EC_COUPON_PUBLISH
        where PUBLISH_ID = #publishId#
    </delete>
    <select id="getByPrimaryKey" resultMap="ecCouponPublishResult" parameterClass="EcCouponPublish">
        select PUBLISH_ID, COUPON_TYPE_ID, PUBLISH_AMOUNT, PUBLISH_USER_ID, PUBLISH_TIME,
            BEGIN_DATE, END_DATE, NUMBER_PREFIX, NUMBER_LENGTH, IS_DELETE, ADD_USER_ID, ADD_TIME,
            EDIT_USER_ID, EDIT_TIME
        from EC_COUPON_PUBLISH
        where PUBLISH_ID = #publishId#
    </select>
    
    <!-- 查询优惠券发行列表List -->
    <select id="getEcCouponPublishList" resultMap="ecCouponPublishResult" parameterClass="EcCouponPublish">
        select p.*, c.coupon_type_name,m.user_real_name
        from (select case  when  remind_type is not null then '1' when remind_type is null then '0' end as remind_type_name,  ep.* from EC_COUPON_PUBLISH ep)  p
        left join ec_coupon_type c on p.coupon_type_id=c.coupon_type_id and c.is_delete='N'
        left join sys_user m on p.publish_user_id=m.user_id and m.is_delete='N'
        where p.is_delete='N'
        <isNotEmpty prepend="and" property="couponTypeId">
            p.COUPON_TYPE_ID = #couponTypeId#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="publishId">
            p.PUBLISH_ID = #publishId#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="publishAmount">
            p.PUBLISH_AMOUNT = #publishAmount#
        </isNotEmpty>
         <isNotEmpty prepend="and" property="remindType">
            p.REMIND_TYPE_NAME  = #remindType# 
        </isNotEmpty>
        order by p.PUBLISH_TIME desc
    </select>
    
    <!-- 查询优惠券发行列表count -->
    <select id="getEcCouponPublishCount" resultClass="Integer" parameterClass="EcCouponPublish">
        select count(1)
        from (select case  when  remind_type is not null then '1' when remind_type is null then '0' end as remind_type_name,  ep.* from EC_COUPON_PUBLISH ep)  p
        left join ec_coupon_type c on p.coupon_type_id=c.coupon_type_id and c.is_delete='N'
        left join sys_user m on p.publish_user_id=m.user_id and m.is_delete='N'
        where p.is_delete='N'
        <isNotEmpty prepend="and" property="couponTypeId">
            p.COUPON_TYPE_ID = #couponTypeId#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="publishId">
            p.PUBLISH_ID = #publishId#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="publishAmount">
            p.PUBLISH_AMOUNT = #publishAmount#
        </isNotEmpty>
         <isNotEmpty prepend="and" property="remindType">
            p.REMIND_TYPE_NAME  = #remindType# 
        </isNotEmpty>
    </select>
    
    
    <resultMap id="ecCouponPublishResultObj" class="EcCouponPublish">
        <result column="PUBLISH_ID" property="publishId" />
        <result column="publishAmount" property="publishAmount" />
    </resultMap>
        <!-- 查询优惠券发行列表(根据couponTypeId查询批次,查询大于30天,且有效期最短的批次优惠券) -->
    <select id="getEcCouponPublishTime" resultMap="ecCouponPublishResultObj" parameterClass="EcCouponPublish">
         select p.publish_id,round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') -sysdate)*24) publishAmount
         from EC_COUPON_PUBLISH p
         left join ec_coupon_type c on p.coupon_type_id=c.coupon_type_id 
         where c.is_delete='N' and p.is_delete='N' and  round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') -sysdate)*24)>720
        <isNotEmpty prepend="and" property="couponTypeId">
            p.COUPON_TYPE_ID = #couponTypeId#
        </isNotEmpty>
         order by round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') -sysdate)*24)
    </select>
    
    
     <resultMap id="needSendEmailResult" class="EcCouponPublish" >
      <result column="PUBLISH_ID" property="publishId" />
        <result column="COUPON_TYPE_ID" property="couponTypeId" />
        <result column="PUBLISH_AMOUNT" property="publishAmount" />
        <result column="PUBLISH_USER_ID" property="publishUserId" />
        <result column="PUBLISH_TIME" property="publishTime" />
        <result column="BEGIN_DATE" property="beginDate" />
        <result column="END_DATE" property="endDate" />
        <result column="NUMBER_PREFIX" property="numberPrefix" />
        <result column="NUMBER_LENGTH" property="numberLength" />
        <result column="IS_DELETE" property="isDelete" />
        <result column="ADD_USER_ID" property="addUserId" />
        <result column="ADD_TIME" property="addTime" />
        <result column="EDIT_USER_ID" property="editUserId" />
        <result column="EDIT_TIME" property="editTime" />
        <result column="PUBLISH_NOTES" property="publishNotes" />
        <result column="PUBLISH_TYPE" property="publishType" />
        <result column="WRAN_NUM" property="warnNum" />
        <result column="REMIND_TYPE" property="remindType" />
        <result column="REMIND_PATH" property="remindPath" />
        <result column="REMIND_SUCCESS" property="remindSuccess" />
        <result column="rest_num" property="restNum" />
        <result column="coupon_type_name" property="couponTypeName" />
    </resultMap>
    
     <select id="needSendEmail" resultMap="needSendEmailResult" parameterClass="EcCouponPublish">
         select * from   (select p.*, c.coupon_type_name from EC_COUPON_PUBLISH p  left join ec_coupon_type c on p.coupon_type_id=c.coupon_type_id and c.is_delete='N')  pb ,
          (select count(1) as rest_num ,publish_id from (select publish_id from EC_COUPONS where COUPON_STATE = 'create' and is_delete ='N' and publish_id in (select publish_id from EC_COUPON_PUBLISH  WHERE  REMIND_TYPE ='email'AND REMIND_SUCCESS IS   NULL )) 
          GROUP BY PUBLISH_ID) n where pb.wran_num >= n.rest_num   and pb.publish_id = n.publish_id
     </select>
     
           
     <resultMap id="surplusNumResult" class="EcCouponPublish" >
        <result column="rest_num" property="restNum" />
     </resultMap>
     
      <select id="surplusNum" resultMap="surplusNumResult" parameterClass="EcCouponPublish">
       select count(1) as rest_num from EC_COUPONS where COUPON_STATE = 'create' and is_delete ='N' and publish_id = #publishId#
      </select>
      
    <resultMap id="unUsedEcCouponPublishResult" class="EcCouponPublish">
        <result column="PUBLISH_ID" property="publishId" />
    </resultMap>
    
    <!-- 查询可用优惠券发行列表(根据couponTypeId查询批次,查询大于30天,且有效期最短的可用批次优惠券) -->
    <select id="getUnUsedEcCouponPublishTime" resultMap="unUsedEcCouponPublishResult" parameterClass="EcCouponPublish">
         select p.publish_id
          from EC_COUPON_PUBLISH p
          left join ec_coupon_type c
            on p.coupon_type_id = c.coupon_type_id
         where c.is_delete = 'N'
           and p.is_delete = 'N'
           and round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') - sysdate) * 24) > 720
           <isNotEmpty prepend="and" property="couponTypeId">
               p.COUPON_TYPE_ID = #couponTypeId#
           </isNotEmpty>
           and (select count(1)
                  from ec_coupons t, EC_COUPON_PUBLISH ecp
                 where t.publish_id = ecp.publish_id
                   and p.publish_id = ecp.publish_id
                   and t.coupon_state in ('create')
                   and t.is_delete = 'N') > 0
         order by round((to_date(p.end_date, 'YYYY-MM-DD hh24:mi:ss') - sysdate) * 24)
    </select>
    
</sqlMap>

 

 

优惠券类型是下拉列表

实现方式如下:

/**
 * 转到查询页面
 * @param request
 * @return
 */
@RequestMapping(value="/queryPage")
public String toQueryPage(HttpServletRequest request){
   EcCouponType ecCouponType = new EcCouponType();
  //将查询出来的数据放在request 中
   List<HashMap<String,Object>> couponTypeList = ecCouponPublishService.getCouponTypeList(ecCouponType);
   request.setAttribute("couponTypeList", couponTypeList);
   return "/jsp/promote/ec_coupon_publish.jsp";
}

 

 <!--    从request遍历取出数据,  -->

<td class="queryTitle" width="100">优惠券类型</td>
<td class="queryContent" width="100">
   <select id="couponTypeId_s" class="easyui-combobox" style="width: 100px" panelHeight="auto">
      <option value="">请选择</option>
      <c:forEach var="couponType" items="${couponTypeList }">
         <option value="${couponType.couponTypeId}">${couponType.couponTypeName}</option>
      </c:forEach>
   </select>

</td>



  <tr>
<td class="queryTitle" width="80px">活动状态</td>
<td class="queryContent">
<select class="inputText easyui-combobox" id="addisStatus" style="width: 150px" panelHeight="auto">
<c:forEach var="weixinStatus" items="${weixinStatusList }">
<option value="${weixinStatus }">${weixinStatus.code }</option>
</c:forEach>
</select>
</td>
 

查询条件,获取列表下拉菜单:

function doQuery(){
    var param = $('#couponPublishGrid').datagrid('options').queryParams;
    param.couponTypeId = $("#couponTypeId_s").combobox("getValue");
    param.publishId = $.trim($('#publishId_s').val());
    param.publishAmount = $.trim($('#publishAmount_s').val());
    param.remindType = $("input[name=remindTypeSelect]").val();
    $("#couponPublishGrid").datagrid('unselectAll');
    $("#couponPublishGrid").datagrid('load',param);
}

 

 

 

 

分析新增:

 toolbar:[{
                 id:'btnadd',
                text:'新增发行',
                iconCls:'icon-add',
                handler:function(){
                    addGoodsDlg();
                }
             }


//添加商品弹出框
function addGoodsDlg(){
    $('#publishId').val('');
    $("#couponTypeId").combobox('select','');
    $('#publishAmount').val('');
    $('#beginDate').datebox('setValue','');
    $('#endDate').datebox('setValue','');
    $('#numberPrefix').val('');
    $('#numberLength').val('');
    $('#publishNotes').val('');
    $('#warnNum').val('');
    $("input[name=remindType]").attr("checked",false); 
    $("#remindTypeIdValue").val('');
    $('#remindPath').val('');
    
    $('#addCouponPublishDlg').window({
        title:'优惠券发行--编辑',
        iconCls:'icon-add',
        width:693,
        height:300,
        left:100,
        modal: true,
        shadow: true,
        collapsible:false,
        minimizable:false,
        maximizable:false
    });
    $('#addCouponPublishDlg').window('move',{top:0});
    $('#addCouponPublishDlg').window('open');
}




////对比微信


    toolbar : [ {
                            id : 'btnadd',
                            text : '新增微信团',
                            iconCls : 'icon-add',
                            handler : function() {
                                showWin(null,null);
                            }
                        } ]




/**
 * 编辑
 * 
 * @param id
 */
function showWin(id,isStatus) {
    if (id != null && isStatus!=null) {
        // 不同的活动状态不同的编辑字段
        if(isStatus !=null){
            if (isStatus == 'finished'||isStatus=='stopped' ) {
                $.messager.alert('提示', "此活动状态不可编辑", 'info');
                return;
            }
            if (isStatus =='activated') {
                $("#addstartTime").datetimebox("disable");
                $("#addendTime").datetimebox("disable");
                $("#form_edit").find("input[id=addweixinName]").attr(
                        "disabled", "disabled");
                //隐藏照片的上传按钮
                $("#fsUploadDiv").css("display","none");
                $("#form_edit").find("input[id=addgroupPrice]").attr(
                        "disabled", "disabled");
                $("#form_edit").find("input[id=adddiscountLab]").attr(
                        "disabled", "disabled");
                $("#form_edit").find("input[id=addminimumJoinMemberNum]").attr(
                        "disabled", "disabled");
                $("#form_edit").find("input[id=addbeginWaitTime]").attr(
                        "disabled", "disabled");
                $("#form_edit").find("input[id=addorderBy]").attr("disabled",
                        "disabled");
            }else{
                $("#fsUploadDiv").css("display","block");
                $("#addstartTime").datetimebox("enable");
                $('#addendTime').datetimebox("enable");
                $('#addweixinName').removeAttr("disabled");
                $('#addgroupPrice').removeAttr("disabled");
                $('#adddiscountLab').removeAttr("disabled");
                $('#addminimumJoinMemberNum').removeAttr("disabled");
                $('#addbeginWaitTime').removeAttr("disabled");
                $('#addorderBy').removeAttr("disabled");
            }
        }
    }else{
        $("#fsUploadDiv").css("display","block");
        $("#addstartTime").datetimebox("enable");
        $('#addendTime').datetimebox("enable");
        $('#addweixinName').removeAttr("disabled");
        $('#addgroupPrice').removeAttr("disabled");
        $('#adddiscountLab').removeAttr("disabled");
        $('#addminimumJoinMemberNum').removeAttr("disabled");
        $('#addbeginWaitTime').removeAttr("disabled");
        $('#addorderBy').removeAttr("disabled");
    
    
    }
    /**
     * 三种方法移除disabled属性
     * $('#form_edit').attr("enable",true); 
     * $('#form_edit').attr("disabled",false);
     * $('#addweixinName').removeAttr("disabled");
     * $('#form_edit').attr("disabled","");
     */
    $("#fileList").html("");
    $("#idHidden").val("");
    $("#adddiscountLab").val("");
    $("#addweixinName").val("");
    // 团长开团等待时间  #12327 修复
    $("#addbeginWaitTime").val("24");

    $("#addgroupPrice").val("");
    $("#addminimumJoinMemberNum").val("");
    $("#addstartTime").datebox("setValue","");
    $("#addendTime").datebox("setValue","");
//    $("#addbeginTime").datebox("setValue","");
//    $("#addendTime").datebox("setValue","");
    $("#addorderBy").val("");
    $("#addisStatus").combobox("setValue", 'nonactivated');
    $("#imgUrlHidden").val("");

    var iconStr = "icon-add";
    var title = "新增微信团";
    var urlList;
    if (id != null) {
        iconStr = "icon-edit";
        title = "编辑微信团";
        $.post(appPath + "/page/weixinActivityAct/getBean/" + id, {}, function(
                data) {
            $("#idHidden").val(data.weixinId);
            $("#adddiscountLab").val(data.discountLab);
            $("#addweixinName").val(data.weixinName);
            $("#addbeginWaitTime").val(data.beginWaitTime);
            $("#addgroupPrice").val(data.groupPrice);
            $("#addminimumJoinMemberNum").val(data.minimumJoinMemberNum);
//             $("#addbeginTime").datebox("setValue",data.beginTime); 
            $("#addendTime").datebox("setValue", data.endTime);
            $("#addstartTime").datebox("setValue", data.startTime);
            $("#addTimeweixin").val(data.addTimeweixin);
            $("#addorderBy").val(data.sortBy);
            $("#addisStatus").combobox('setValue', data.isStatus);
            
//             $("#editWeixinStatus").val(data.editWeixinStatus);
             $("#editWeixinStatus").val(data.isStatus);
            if (data.bannerImgUrl != null && data.bannerImgUrl !=""){
                $("#imgUrlHidden").val(data.bannerImgUrl+";");
                //获取Img标签Url
                urlList = data.bannerImgUrl.split(';');
            }
            if(urlList!=null && urlList!=''){
                for (var i=0;i<urlList.length;i++){
                    // 获取当前时间作为随机值,用于img标签ID
                    var randomVal = getTimestamp();
                    //读取每个Url,并创建Img标签
                    $("#fileList")
                    .append("<div id = 'div"+randomVal+"'  style='display: inline'><img id='img"+ randomVal+ "'  style='border: solid 1px #ccc; padding: 3px; width: 70px; height: 50px; cursor: hand;' /> " +
                            "<a id='a"+randomVal+"' href='javascript:void(0)' οnclick='deleteImg(this)'>删除</a>&nbsp;&nbsp;</div>");
                    //设置Src属性
                    $("#img" + randomVal).attr("src", urlList[i]);
                }
                //激活状态下,隐藏删除<a>标签
                if (isStatus =='activated') {
                    $("#form_edit a").hide();
                }else{
                    $("#form_edit a").show();
                }
            }
        }, "json");
        
    }
    $('#opreateHtml').window({
        title : title,
        iconCls : iconStr,
        width : 888,
        height : 500,
        left : 200,
        modal : true,
        shadow : true,
        collapsible : false,
        minimizable : false,
        maximizable : false
    });
    $('#opreateHtml').window('move', {
        top : 20
    });

    $('#opreateHtml').window('open');
}

function closeWin(id) {
    $('#opreateHtml').window('close');
}

//优惠券的保存

//保存优惠券发行数据
function saveCouponPublish(){
    //发行券种
    var couponTypeId = $("#couponTypeId").combobox("getValue");
    //生成张数
    var publishAmount = $('#publishAmount').val();
    //开始日期
    var beginDate = $('#beginDate').datebox("getValue");
    //结束日期
    var endDate = $('#endDate').datebox("getValue");
    //券号前缀
    var numberPrefix = $('#numberPrefix').val();
    //券号长度
    var numberLength = $('#numberLength').val();
    //发行描述
    var publishNotes = $('#publishNotes').val();
    
    //预警数
    var warnNum = $("#warnNum").val();
    //预警方式
    
    var remindType =$("#remindTypeIdValue").val();
    //预警途径
    var remindPath = $("#remindPath").val();
    
    if(couponTypeId==''){
        $('#couponTypeNot').css('display','');
        return;
    }else{
        $('#couponTypeNot').css('display','none');
    }
    if(publishAmount==''){
        $('#publishAmountNot').css('display','');
        return;
    }else{
        $('#publishAmountNot').css('display','none');
    }
    if(isNaN(publishAmount)){
        $.messager.alert('提示信息','生成张数请输入数字!','info'); 
        return;
    }
    if(beginDate==''){
        $('#beginDateNot').css('display','');
        return;
    }else{
        $('#beginDateNot').css('display','none');
    }
    if(endDate==''){
        $('#endDateNot').css('display','');
        return;
    }else{
        $('#endDateNot').css('display','none');
    }
    
    if(beginDate && endDate && parseFloat(beginDate.replace(/\-/g,""))>parseFloat(endDate.replace(/\-/g,""))){
        $.messager.alert('提示信息','开始日期要小于或等于结束日期','info');
        return;
    }
    
    if(numberPrefix==''){
        $('#numberPrefixNot').css('display','');
        return;
    }else{
        $('#numberPrefixNot').css('display','none');
    }
    if(numberPrefix.length<2 || numberPrefix.length>4){
        $('#numberPrefixLimit').css('display','');
        return;
    }else{
        $('#numberPrefixLimit').css('display','none');
    }
    
    if(numberLength==''){
        $('#numberLengthNot').css('display','');
        return;
    }else{
        $('#numberLengthNot').css('display','none');
    }
    if(isNaN(numberLength)){
        $.messager.alert('提示信息','券号长度请输入数字!','info'); 
        return;
    }
    if(parseInt(numberLength)<6 || parseInt(numberLength)>16){
        $('#numberLengthLimit').css('display','');
        return;
    }else{
        $('#numberLengthLimit').css('display','none');
    }
    
    
    if($.trim(warnNum) !='' && warnNum!=null){
        if(!checkNumber(warnNum)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        }else if(parseInt(warnNum) > parseInt(publishAmount)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        } else $('#warnNumRemind').css('display','none');    
            
            
        if(remindType ==''){
            $('#remindPathRemind').html('请选择预警提示方式');
            $('#remindPathRemind').css('display','');
            return;
        }else if(remindPath ==''){
            $('#remindPathRemind').html('请填写预警提示方式途径');
            $('#remindPathRemind').css('display','');
            return;
        }else if(!CheckMail(remindPath)){
            $('#remindPathRemind').html('请填写正确的邮箱格式');
            $('#remindPathRemind').css('display','');
            return;
        } else{      
            $('#warnNumRemind').css('display','none');    
            $('#remindPathRemind').css('display','none');    
        }
    }else{
        $('#warnNumRemind').css('display','none');    
    }
    
    if(remindType !='' &&remindType != null){
        if(!checkNumber(warnNum)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        }else if(parseInt(warnNum) > parseInt(publishAmount)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        } else $('#warnNumRemind').css('display','none');    
        if(remindPath ==''){
            $('#remindPathRemind').html('请填写预警提示方式途径');
            $('#remindPathRemind').css('display','');
            return;
        }else if(!CheckMail(remindPath)){
            $('#remindPathRemind').html('请填写正确的邮箱格式');
            $('#remindPathRemind').css('display','');
            return;
        } else{ 
            $('#warnNumRemind').css('display','none');    
            $('#remindPathRemind').css('display','none');    
        }
            
    }else{
        $('#remindPathRemind').css('display','none');    
    }
    

    if($.trim(remindPath) !='' && remindPath!=null){
        if(!checkNumber(warnNum)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        }else if(parseInt(warnNum) > parseInt(publishAmount)){
            $('#warnNumRemind').html('请填写正确的预警数,且不大于生成张数');
            $('#warnNumRemind').css('display','');
            return;
        } else $('#warnNumRemind').css('display','none');    
            
        if(remindType ==''){
            $('#remindPathRemind').html('请选择预警提示方式');
            $('#remindPathRemind').css('display','');
            return;
     
        }else if(!CheckMail(remindPath)){
            $('#remindPathRemind').html('请填写正确的邮箱格式');
            $('#remindPathRemind').css('display','');
            return;
        } else{  
            $('#warnNumRemind').css('display','none');    
            $('#remindPathRemind').css('display','none');    
        }
    }else{ 
        $('#remindPathRemind').css('display','none');    
    }
    
    var type = "save";
    if($('#publishId').val()!=''){
        type = "update";
    }
   var mod = $("<div class='panel window' style='position: absolute;text-align:center;top:50%;left:50%;z-index:9100'>" +
            "<img src='"+appPath+"/images/common/loading.gif'><br/>正在生成优惠券</div>" +
            "<div class='window-mask' style='z-index:9100'></div>");
        mod.appendTo('body');
    
        var data = {publishId:$('#publishId').val(),type:type,couponTypeId:couponTypeId,publishAmount:publishAmount,
                beginDate:beginDate,endDate:endDate,numberPrefix:numberPrefix,numberLength:numberLength,
                warnNum:warnNum,remindType:remindType,remindPath:remindPath,
                publishNotes:publishNotes,isDelete:'N'}; 
    doAjax({
        url:appPath+'/page/couponPublish/updateCouponPublish',
        type:'post',
        data:data,
        success:function(data){
            mod.remove();
            if(data=='ok'){
                $.messager.alert('提示信息','保存成功','info');
            }
            doCouponPublishReload();
            $('#addCouponPublishDlg').window('close');
        },
        error:function(XMLHttpRequest, textStatus, errorThrown){
            mod.remove();
            $.messager.alert('提示信息','抱歉,保存失败,'+textStatus,'error');
            doCouponPublishReload();
        }
    });        

}

对应的java

    /**
     * 保存优惠券发行信息
     * @param request
     * @param EcPromoteRule
     * @return
     */
    @RequestMapping(value="/updateCouponPublish")
    @ResponseBody
    public String updateEcCouponPublish(HttpServletRequest request,EcCouponPublish ecCouponPublish)
    {
        Integer userId = (Integer)request.getSession().getAttribute("userId");
        if(!ecCouponPublish.getRemindType().equals("email"))ecCouponPublish.setRemindType(null);
        if("save".equals(ecCouponPublish.getType())){
            ecCouponPublish.setPublishUserId(userId);
            ecCouponPublish.setAddUserId(userId);
            ecCouponPublish.setAddTime(DateUtils.longToDateAll(System.currentTimeMillis()));
            ecCouponPublish.setPublishTime(DateUtils.longToDateAll(System.currentTimeMillis()));
            ecCouponPublish.setPublishType("general");
        }else{
            ecCouponPublish.setEditUserId(userId);
            ecCouponPublish.setEditTime(DateUtils.longToDateAll(System.currentTimeMillis()));
        }
        ecCouponPublishService.updateEcCouponPublish(request,ecCouponPublish);
        
        return "ok";
    }

//编辑页面

//显示编辑页面
function showEdit(rowData){
    $('#addCouponPublishForm').form('clear');
    $('#addCouponPublishForm').form('load',rowData);

    $('#publishId').val(rowData.publishId);
    $("#couponTypeId").combobox('select',rowData.couponTypeId);
    $('#publishAmount').val(rowData.publishAmount);
    $('#beginDate').datebox('setValue',rowData.beginDate);
    $('#endDate').datebox('setValue',rowData.endDate);
    $('#numberPrefix').val(rowData.numberPrefix);
    $('#numberLength').val(rowData.numberLength);
    $('#publishNotes').val(rowData.publishNotes);
     
    $('#warnNum').val(rowData.warnNum);
    $('#remindPath').val(rowData.remindPath);
    $("input[name='remindType']").each(function(){ 
         if($(this).val()==rowData.remindType){
             $(this).attr("checked","true");
             
         }
            
    });
      $("#warnNum").val(rowData.warnNum);
      $("#remindPath").val(rowData.remindPath);
 
    $('#addCouponPublishDlg').window({
        title:'优惠券发行--编辑',
        iconCls:'icon-add',
        width:693,
        height:300,
        left:100,
        modal: true,
        shadow: true,
        collapsible:false,
        minimizable:false,
        maximizable:false
    });
    $('#addCouponPublishDlg').window('move',{top:0});
    $('#addCouponPublishDlg').window('open');
}
//券明细弹出框
function queryCoupons(rowData){
    $('#showCouponsDlg').window({
        title:'优惠券发行--券明细',
        iconCls:'icon-add',
        width:993,
        height:400,
        left:50,
        modal: true,
        shadow: true,
        collapsible:false,
        minimizable:false,
        maximizable:false
    });
    $('#showCouponsDlg').window('move',{top:0});
    $('#showCouponsDlg').window('open');
    couponsGrid(rowData.publishId);
    $('#publishId').val(rowData.publishId);
}
function couponsGrid(publishId){
    $('#queryCouponsGrid').datagrid({
        url:appPath+'/page/couponsQuery/couponsList',
        method:'post',
        queryParams:{publishId:publishId},
        height:'350',
        width:'full',
        singleSelect:true,
        striped: true,
        remoteSort:false,
        checkbox:false,
        idField:'couponNo',
        frozenColumns:[[
                          {field:'id',title:'操作',width:'40',align:'center',
                          formatter:function(value,rowData,rowIndex){
                                  var dataStr = JSON.stringify(rowData);
                                  return "<a href='javascript:void(0)'><img width='12px' height='12px' style='border:0px;'  src='"+appPath+"/js/lib/jquery-easyui/themes/icons/search.png' title='预览' onClick='preview("+dataStr+")'/></a> &nbsp;";
                                  
                          }
                          }
                      ]],
        columns:[[
                  {field:'publishId',title:'发行批次号',width:80,align:'center',sortable:true},
                  {field:'couponNo',title:'券号',width:80,align:'center',sortable:true},
                  {field:'couponTypeName',title:'优惠券类型',width:120,align:'center',sortable:true},
                  {field:'couponFee',title:'面额',width:80,align:'center',sortable:true},
                  {field:'discountFee',title:'优惠额',width:60,align:'center',sortable:true},
                  {field:'orderFeeLimit',title:'订单限额',width:120,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.orderFeeLimit=='0'){
                                  return '无';
                              }else{
                                  return rowData.orderFeeLimit;
                              }
                      }
                  },        
                  {field:'useAmountLimit',title:'限用张数',width:60,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.useAmountLimit=='0'){
                                  return '无';
                              }else{
                                  return rowData.useAmountLimit;
                              }
                      }
                  },
                  {field:'isLimitGoods',title:'适用商品',width:60,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.isLimitGoods=='N'){
                                  return '全部商品';
                              }else{
                                  return '指定商品';
                              }
                      }
                  },
                  {field:'couponState',title:'优惠券状态',width:70,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.couponState=='create'){
                                  return '已发行';
                              }else if(rowData.couponState=='assign'){
                                  return '已分发';
                              }else if(rowData.couponState=='used'){
                                  return '已使用';
                              }else if(rowData.couponState=='expired'){
                                  return '已过期';
                              }
                      }
                  },
                  {field:'publishTime',title:'发行日期',width:120,align:'center',sortable:true},
                  {field:'beginDate',title:'生效日期',width:120,align:'center',sortable:true},
                  {field:'endDate',title:'失效日期',width:120,align:'center',sortable:true},
                  {field:'assignType',title:'分发方式',width:60,align:'center',sortable:true,
                      formatter:function(value,rowData,rowIndex){
                              if(rowData.assignType=='auto'){
                                  return '自动';
                              }else if(rowData.couponState=='byhand'){
                                  return '手工';
                              }
                      }
                  },
                  {field:'assignTime',title:'分发日期',width:120,align:'center',sortable:true},
                  {field:'usedTime',title:'使用日期',width:120,align:'center',sortable:true},
                  {field:'loginName',title:'使用会员',width:80,align:'center',sortable:true},
                  {field:'orderId',title:'使用订单号',width:80,align:'center',sortable:true}
                  
                 ]],
         pagination:true,
         rownumbers:true,
         toolbar:[{
                id:'btnExcel',
                text:'导出Excel',
                iconCls:'icon-exportExcel',
                handler:function(){
                    exportOrderExcel();
                }
            },{
                id:'btnPDF',
                text:'导出PDF',
                iconCls:'icon-exportPDF',
                handler:function(){
                    exportOrderPdf();
                }
            }]
    });
}

//导出

 

 

从上可以看出导出的button是在查看明细的弹出界面里面

/**
 * 导出订单Excel
 */
function exportOrderExcel(){
    $.messager.confirm('提示信息','您确定要导出到Excel?',function(r){
        if(r){
            var columns = $("#queryCouponsGrid").datagrid("options").columns[0];
        
            //--------把标题grid标题和grid的field,拼接成字符串-----------
            var stringTitle = "";
            var stringFields = "";
            for(var i = 0; i < columns.length; i++){
                stringTitle = stringTitle + columns[i].title + ",";
                stringFields = stringFields + columns[i].field + ",";
            }
            if(stringTitle.lastIndexOf(",") == (stringTitle.length-1)){
                stringTitle = stringTitle.substring(0, stringTitle.lastIndexOf(","));    
            }
            if(stringFields.lastIndexOf(",") == (stringFields.length-1)){
                stringFields = stringFields.substring(0, stringFields.lastIndexOf(","));    
            }
            
            var queryParams = $("#queryCouponsGrid").datagrid("options").queryParams;
            queryParams.gridTitle = stringTitle;
            queryParams.gridField = stringFields;
            queryParams.moduleName = "优惠券查询.xls";
            
            var formObj = $("<form></form>").attr("method","post").attr("action",appPath+"/page/export/exportCouponsList");
            formObj.append("<input type='text' name='gridTitle'>")
                   .append("<input type='text' name='gridField'>")
                   .append("<input type='text' name='moduleName'>")
                   .append("<input type='text' name='publishId'>")
                   .append("<input type='text' name='couponNo'>")
                   .append("<input type='text' name='couponTypeName'>")
                   .append("<input type='text' name='couponFee'>")
                   .append("<input type='text' name='discountFee'>")
                   .append("<input type='text' name='orderFeeLimit'>")
                   .append("<input type='text' name='useAmountLimit'>")
                   .append("<input type='text' name='isLimitGoods'>")
                   .append("<input type='text' name='couponState'>")
                   .append("<input type='text' name='publishTime'>")
                   .append("<input type='text' name='beginDate'>")
                   .append("<input type='text' name='endDate'>")
                   .append("<input type='text' name='assignType'>")
                   .append("<input type='text' name='assignTime'>")
                   .append("<input type='text' name='usedTime'>")
                   .append("<input type='text' name='realName'>")
                   .append("<input type='text' name='orderId'>")
                   .css('display','none')
                   .appendTo("body");
            formObj.form("load",queryParams);       
            formObj.submit();
            formObj.remove();
        }
    });
}

/**
 * 导出pdf
 * @param rowData
 */
function exportOrderPdf(rowData){
    var mod = $("<div class='panel window' style='position: absolute;text-align:center;top:50%;left:50%;z-index:1100'>" +
            "<img src='"+appPath+"/images/common/loading.gif'><br/>正在生成打印文件</div>" +
            "<div class='window-mask' style='z-index:10'></div>");
        mod.appendTo('body');
        var publishId = $('#publishId').val();
        doAjax({
            url : appPath + "/page/couponPublish/printPdf",
            data : {publishId:publishId},
            type : "post",
            timeout : 1000*60*10,
            success:function(data){
                mod.remove();
                var code = data.code;
                switch(code){
                    case 0:
                        $.messager.alert('提示信息',data.msg,'error');
                        break;
                    case 1:
                        $.messager.alert('提示信息','打印文件生成,请下载','info',function(){
                            window.location.href = appPath+"/download.jsp?fileName="+data.fileUrl;
                        });
                        break;
                    default:
                        $.messager.alert('提示信息',data,'error');
                        break;
                }
            },
            error:function(XMLHttpRequest, textStatus, errorThrown){
                mod.remove();
                $.messager.alert('提示信息','打印失败'+textStatus,'error');
            }
        });
}
    /**
     * 发运单批量打印
     * @param request
     * @param shipping
     * @return
     */
    @RequestMapping(value="/printPdf")
    @ResponseBody
    public HashMap<String,Object> batchPrint(HttpServletRequest request,EcCoupons ecCoupons){
        String absolutePath = request.getSession().getServletContext().getRealPath("download");
        return ecCouponPublishService.doPrintPdf(ecCoupons, absolutePath,request);
    }
/**
     * 导出PDF
     * @param param
     * @param printTemplateId
     * @param absolutePath
     * @return
     */
    public HashMap<String, Object> doPrintPdf(EcCoupons ecCoupons,String absolutePath,HttpServletRequest request) {
        HashMap<String,Object> rslt = new HashMap<String, Object>();
        List<Object> couponsList = commonDao.queryForList("ecCoupons.getEcCouponsList", ecCoupons);
        if(null!=couponsList && !couponsList.isEmpty()){
            try {
                Document document = new Document();
//                String propertisFileName = "/itext.properties";
//                String outPutFile = PropertyUtil.getPropertyValue(propertisFileName, "ec_coupons_outputFolder") ;
                String outPutFile =(String)PropertyConfigurer.getContextProperty("ec_coupons_outputFolder");
                
                FileUtil.createFolder(absolutePath + "/"+ outPutFile);
                String fileName = absolutePath + "/"+ outPutFile+"/"+ DateUtils.getCurrentDateString().replaceAll("-", "").replaceAll(" ", "").replaceAll(":", "")+".pdf";
                PdfWriter.getInstance(document, new FileOutputStream(fileName));
                document.open();
                
                this.generateDelivery(document, couponsList,request);
                
                
                
//                Image bmp = Image.getInstance("E:\\sunset.jpg");
//
//                // 缩小到原来的25%
//
//                bmp.scalePercent(25f);
//                
                // 关闭文档

                document.close();
                
                
                rslt.put("code", 1);
                rslt.put("fileUrl", fileName);
            } catch (Exception e) {
                rslt.put("code", 0);
                rslt.put("msg", e.getMessage());
                e.printStackTrace();
            } 
        }
        return rslt;
    }
    
/**
     * 导出PDF
     * @param param
     * @param printTemplateId
     * @param absolutePath
     * @return
     */
    public HashMap<String, Object> doPrintPdf(EcCoupons ecCoupons,String absolutePath,HttpServletRequest request);
    private void generateDelivery(Document document,List<Object> couponsList,HttpServletRequest request)throws Exception{
        DecimalFormat df = new DecimalFormat("#.00");
        
        document.newPage();//新建一页
        
//        String propertisFileName = "/itext.properties";
        String outPutFile =(String)PropertyConfigurer.getContextProperty("ec_coupons_fontFile");
        
        BaseFont cf = BaseFont.createFont(outPutFile, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
        Font chFont = new Font(cf,12,Font.NORMAL);
        
//        String orderIdString = String.valueOf(coupons.getOrderId());
//        orderIdString = orderIdString.substring(orderIdString.length()-4);
        
//        Paragraph noPara = new Paragraph(orderIdString,chFont);
//        noPara.setAlignment(2);
//        noPara.setSpacingAfter(12f);
//        document.add(noPara);
        
        
        Font tableFont = new Font(cf,9,Font.NORMAL);
        
        
        float w = 0.1f;
        //第一行
        
        
        
        //货品明细列表
        PdfPTable itemTable = new PdfPTable(2);
//        itemTable.setWidthPercentage(100f);
//        itemTable.setWidths(new float[]{60f,60f});
//        itemTable.setSpacingBefore(20f);
        itemTable.getDefaultCell().setBorder(0);
        
        PdfPCell itemTitleCell = new PdfPCell();
        //itemTitleCell.setBorderColor(new BaseColor(153,187,232));//边框颜色
//        itemTitleCell.setFixedHeight(18f);
//        itemTitleCell.setVerticalAlignment(1);//居中
//        itemTitleCell.setHorizontalAlignment(1);//居中
        
        //标题行
//        itemTitleCell.setPhrase(new Phrase("序号",tableFont));
//        this.setCellBorder(itemTitleCell, w, w, w, w);
//        itemTable.addCell(itemTitleCell);
//        
//        itemTitleCell.setPhrase(new Phrase("货品名称",tableFont));
//        this.setCellBorder(itemTitleCell, w, w, 0, w);
//        itemTable.addCell(itemTitleCell);
        
        if(null!=couponsList && couponsList.size()>1){
            EcCoupons coupon = (EcCoupons)couponsList.get(0);
            HashMap<String,Object> param = new HashMap<String, Object>();
            param.put("couponTypeId", coupon.getCouponTypeId());
            List<EcCouponType> typeList = (List<EcCouponType>)commonDao.queryForList("EcCouponType.getCouponTypeById",param);
            EcCouponType ecCouponType = null;
            if(null!=typeList && !typeList.isEmpty()){
                ecCouponType = (EcCouponType)typeList.get(0);
            }
            if(couponsList.size()%2==0){
                for(int i=0;i<couponsList.size();i+=2){
                    EcCoupons coupons = (EcCoupons)couponsList.get(i);
                    BufferedImage image = passSy(coupons,ecCouponType,request);
                    Image imageRight = Image.getInstance(image, null, false);
                    imageRight.scalePercent(100f);
                    itemTable.addCell(imageRight);
                    
                    EcCoupons coupons2 = (EcCoupons)couponsList.get(i+1);
                    BufferedImage image2 = passSy(coupons2,ecCouponType,request);
                    Image imageRight2 = Image.getInstance(image2, null, false);
                    imageRight.scalePercent(100f);
                    itemTable.addCell(imageRight2);
                }
            }else{
                for(int i=0;i<couponsList.size()-1;i+=2){
                    EcCoupons coupons = (EcCoupons)couponsList.get(i);
                    BufferedImage image = passSy(coupons,ecCouponType,request);
                    Image imageRight = Image.getInstance(image, null, false);
                    imageRight.scalePercent(100f);
                    itemTable.addCell(imageRight);
                    
                    EcCoupons coupons2 = (EcCoupons)couponsList.get(i+1);
                    BufferedImage image2 = passSy(coupons2,ecCouponType,request);
                    Image imageRight2 = Image.getInstance(image2, null, false);
                    imageRight.scalePercent(100f);
                    itemTable.addCell(imageRight2);
                }
                EcCoupons coupons = (EcCoupons)couponsList.get(couponsList.size()-1);
                BufferedImage image = passSy(coupons,ecCouponType,request);
                Image imageRight = Image.getInstance(image, null, false);
                imageRight.scalePercent(100f);
                itemTable.addCell(imageRight);
                itemTable.addCell("");
            }
            
        }else if(null!=couponsList && couponsList.size()==1){
            EcCoupons coupon = (EcCoupons)couponsList.get(0);
            HashMap<String,Object> param = new HashMap<String, Object>();
            param.put("couponTypeId", coupon.getCouponTypeId());
            List<EcCouponType> typeList = (List<EcCouponType>)commonDao.queryForList("EcCouponType.getCouponTypeById",param);
            EcCouponType ecCouponType = null;
            if(null!=typeList && !typeList.isEmpty()){
                ecCouponType = (EcCouponType)typeList.get(0);
            }
            EcCoupons coupons = (EcCoupons)couponsList.get(0);
            BufferedImage image = passSy(coupons,ecCouponType,request);
            Image imageRight = Image.getInstance(image, null, false);
            imageRight.scalePercent(100f);
            itemTable.addCell(imageRight);
            itemTable.addCell("");
        }
        
        document.add(itemTable);
        
        
    }
    
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="EcCouponType">
     
    <typeAlias alias="EcCouponType" type="com.founder.ec.promote.model.EcCouponType"/>
    <typeAlias alias="EcCouponPublishExpand" type="com.founder.ec.promote.model.EcCouponPublishExpand"/>
    
    <resultMap id="ecCouponTypeResult" class="EcCouponType">
        <result column="COUPON_TYPE_ID" property="couponTypeId" />
        <result column="COUPON_TYPE_NO" property="couponTypeNo" />
        <result column="COUPON_TYPE_NAME" property="couponTypeName" />
        <result column="COUPON_TYPE_NOTES" property="couponTypeNotes" />
        <result column="COUPON_PIC_URL" property="couponPicUrl" />
        <result column="COUPON_FEE" property="couponFee" />
        <result column="DISCOUNT_FEE" property="discountFee" />
        <result column="CONVERT_POINTS" property="convertPoints" />
        <result column="IS_LIMIT_GOODS" property="isLimitGoods" />
        <result column="ORDER_FEE_LIMIT" property="orderFeeLimit" />
        <result column="ORDER_TYPE_LIMIT" property="orderTypeLimit" />
        <result column="USE_AMOUNT_LIMIT" property="useAmountLimit" />
        <result column="IS_DELETE" property="isDelete" />
        <result column="ADD_USER_ID" property="addUserId" />
        <result column="ADD_TIME" property="addTime" />
        <result column="EDIT_USER_ID" property="editUserId" />
        <result column="EDIT_TIME" property="editTime" />
        <result column="IS_E_CUPON" property="isECupon" />
        <result column="IS_REUSE" property="isReuse" />
        <result column="IS_MULTI_USE" property="isMultiUse" />
        <result column="USE_TYPE" property="useType" />
        <result column="is_limit_pay" property="isLimitPay" />
        <result column="payment_type_nos" property="paymentTypeNos" />
        <result column="standby1" property="standby1" />
        <result column="standby2" property="standby2" />
        <result column="standby3" property="standby3" />
        <result column="standby4" property="standby4" />
        <result column="standby5" property="standby5" />
        <result column="member_ship" property="memberShip" />
        <result column="limit_member_roleIds" property="limitMemberRoleIds" />
    </resultMap>
    
    <resultMap id="ecCouponTypeNameByPublishId" class="EcCouponType">
        <result column="COUPON_TYPE_NAME" property="couponTypeName" />
        <result column="COUPON_FEE" property="couponFee" />
        <result column="DISCOUNT_FEE" property="discountFee" />
        <result column="USE_TYPE" property="useType" />
        <result column="IS_DELETE" property="isDelete" />
    </resultMap>
    
    <sql id="Base_sql">
            COUPON_TYPE_ID, COUPON_TYPE_NO, COUPON_TYPE_NAME,
            COUPON_TYPE_NOTES, COUPON_PIC_URL, COUPON_FEE, DISCOUNT_FEE, CONVERT_POINTS,
            IS_LIMIT_GOODS, ORDER_FEE_LIMIT, ORDER_TYPE_LIMIT, USE_AMOUNT_LIMIT, IS_DELETE,
            ADD_USER_ID, ADD_TIME, EDIT_USER_ID, EDIT_TIME,IS_E_CUPON,IS_REUSE,IS_MULTI_USE,USE_TYPE,
            is_limit_pay,payment_type_nos,standby1, standby2,standby3,standby4,standby5,member_ship,limit_member_roleIds
    </sql>

    <select id="getCouponTypeId" resultClass="Integer">
        SELECT COUPON_TYPE_SEQ.nextval from dual
    </select>

    <insert id="insert" parameterClass="EcCouponType">
        insert into EC_COUPON_TYPE (COUPON_TYPE_ID, COUPON_TYPE_NO, COUPON_TYPE_NAME,
            COUPON_TYPE_NOTES, COUPON_PIC_URL, COUPON_FEE, DISCOUNT_FEE, CONVERT_POINTS,
            IS_LIMIT_GOODS, ORDER_FEE_LIMIT,ORDER_TYPE_LIMIT, USE_AMOUNT_LIMIT, IS_DELETE,
            ADD_USER_ID, ADD_TIME, EDIT_USER_ID, EDIT_TIME,IS_E_CUPON,IS_REUSE,IS_MULTI_USE,USE_TYPE,
            is_limit_pay,payment_type_nos,standby1, standby2,standby3,standby4,standby5,member_ship,limit_member_roleIds,yw_catalog_ids)
        values (#couponTypeId#, #couponTypeNo#, #couponTypeName#, #couponTypeNotes#, #couponPicUrl#,
            #couponFee#, #discountFee#, #convertPoints#, #isLimitGoods#, #orderFeeLimit#, #orderTypeLimit#,
            #useAmountLimit#, #isDelete#, #addUserId#, #addTime#, #editUserId#,
            #editTime#,#isECupon#,#isReuse#,#isMultiUse#,#useType#,
            #isLimitPay#,#paymentTypeNos#,#standby1#,#standby2#,#standby3#,#standby4#,#standby5#,#memberShip#,#limitMemberRoleIds#,#ywCatalogIds#)
    </insert>

    <update id="updateById" parameterClass="EcCouponType">
        update EC_COUPON_TYPE
        <dynamic prepend="set">
            <isNotNull prepend="," property="couponTypeNo">
                COUPON_TYPE_NO = #couponTypeNo#
            </isNotNull>
            <isNotNull prepend="," property="couponTypeName">
                COUPON_TYPE_NAME = #couponTypeName#
            </isNotNull>
            <isNotNull prepend="," property="couponTypeNotes">
                COUPON_TYPE_NOTES = #couponTypeNotes#
            </isNotNull>
            <isNotNull prepend="," property="couponPicUrl">
                COUPON_PIC_URL = #couponPicUrl#
            </isNotNull>
            <isNotNull prepend="," property="couponFee">
                COUPON_FEE = #couponFee#
            </isNotNull>
            <isNotNull prepend="," property="discountFee">
                DISCOUNT_FEE = #discountFee#
            </isNotNull>
            <isNotNull prepend="," property="convertPoints">
                CONVERT_POINTS = #convertPoints#
            </isNotNull>
            <isNotNull prepend="," property="isLimitGoods">
                IS_LIMIT_GOODS = #isLimitGoods#
            </isNotNull>
            <isNotNull prepend="," property="orderFeeLimit">
                ORDER_FEE_LIMIT = #orderFeeLimit#
            </isNotNull>
            <isNotNull prepend="," property="orderTypeLimit">
                ORDER_TYPE_LIMIT = #orderTypeLimit#
            </isNotNull>
            <isNotNull prepend="," property="useAmountLimit">
                USE_AMOUNT_LIMIT = #useAmountLimit#
            </isNotNull>
            <isNotNull prepend="," property="isDelete">
                IS_DELETE = #isDelete#
            </isNotNull>
            <isNotNull prepend="," property="addUserId">
                ADD_USER_ID = #addUserId#
            </isNotNull>
            <isNotNull prepend="," property="addTime">
                ADD_TIME = #addTime#
            </isNotNull>
            <isNotNull prepend="," property="editUserId">
                EDIT_USER_ID = #editUserId#
            </isNotNull>
            <isNotNull prepend="," property="editTime">
                EDIT_TIME = #editTime#
            </isNotNull>
             <isNotNull prepend="," property="isECupon">
                IS_E_CUPON = #isECupon#
            </isNotNull>
             <isNotNull prepend="," property="isReuse">
                IS_REUSE = #isReuse#
            </isNotNull>
            <isNotNull prepend="," property="isMultiUse">
                IS_MULTI_USE = #isMultiUse#
            </isNotNull>
            <isNotNull prepend="," property="useType">
                USE_TYPE = #useType#
            </isNotNull>
            <isNotNull prepend="," property="isLimitPay">
                is_Limit_Pay = #isLimitPay#
            </isNotNull>
            <isNotNull prepend="," property="paymentTypeNos">
                payment_type_nos = #paymentTypeNos#
            </isNotNull>
            <isNotNull prepend="," property="standby1">
                standby1 = #standby1#
            </isNotNull>
            <isNotNull prepend="," property="standby2">
                standby2 = #standby2#
            </isNotNull>
            <isNotNull prepend="," property="standby3">
                standby3 = #standby3#
            </isNotNull>
            <isNotNull prepend="," property="standby4">
                standby4 = #standby4#
            </isNotNull>
            <isNotNull prepend="," property="standby5">
                standby5 = #standby5#
            </isNotNull>
            <isNotNull prepend="," property="memberShip">
                member_ship = #memberShip#
            </isNotNull>
            <isNotNull prepend="," property="limitMemberRoleIds">
                limit_member_roleIds = #limitMemberRoleIds#
            </isNotNull>
            <isNotEmpty prepend="," property="ywCatalogIds">
                yw_catalog_ids = #ywCatalogIds#
            </isNotEmpty>
        </dynamic>
        where COUPON_TYPE_ID = #couponTypeId#
    </update>
    
    <sql id="commonQuerySql">
        <isNotEmpty prepend="and" property="couponTypeNo">
            g.COUPON_TYPE_NO = #couponTypeNo#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="couponTypeName">
            g.COUPON_TYPE_NAME like '%$couponTypeName$%'
        </isNotEmpty>
        <isNotEmpty prepend="and" property="exceptGiftIds">
            g.COUPON_TYPE_ID not in
            <iterate property="exceptGiftIds" open="(" close=")" conjunction=",">  
                to_number(#exceptGiftIds[]#)  
            </iterate> 
        </isNotEmpty>
        <isNotEmpty prepend="and" property="ids">
            g.COUPON_TYPE_ID in
            <iterate property="ids" open="(" close=")" conjunction=",">  
                to_number(#ids[]#)  
            </iterate> 
        </isNotEmpty>
        <isNotEmpty prepend="and" property="couponFee">
            g.COUPON_FEE = #couponFee#
        </isNotEmpty>
        
    </sql>
    <!--LIST-->
    <select id="getEcCouponTypeList" resultMap="ecCouponTypeResult" parameterClass="EcCouponType">
        select <include refid="Base_sql"/>
        from (
        select rownum as rn,gg.*
        from EC_COUPON_TYPE gg
        where gg.is_delete='N'
        <isNotEmpty prepend="and" property="endRow">
             <![CDATA[
             rownum <= #endRow#
             ]]>
         </isNotEmpty>
         ) g
        where 1=1 
        <include refid="commonQuerySql"/>
        <isNotEmpty prepend="and" property="startRow">
             <![CDATA[
                 g.rn >= #startRow#
             ]]>
         </isNotEmpty>
         order by g.COUPON_TYPE_ID desc
    </select>
    <!--COUNT-->
    <select id="getEcCouponTypeCount" resultClass="Integer" parameterClass="EcCouponType">
        select count(g.COUPON_TYPE_ID)
        from EC_COUPON_TYPE g
        where g.is_delete='N' 
        <include refid="commonQuerySql"/>
    </select>
    
    <!-- 按条件查询有效规则 -->
    <select id="getValidRules" parameterClass="EcCouponType" resultMap="ecCouponTypeResult">
        select <include refid="Base_sql"/>
        from EC_COUPON_TYPE r
        where r.is_delete='N' 
        <isNotEmpty prepend="and" property="couponTypeId">
            r.COUPON_TYPE_ID = #couponTypeId#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="couponTypeName">
            r.COUPON_TYPE_NAME like '%$couponTypeName$%'
        </isNotEmpty>
        <isNotEmpty prepend="and" property="couponFee">
            r.COUPON_FEE = #couponFee#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="isECupon">
            r.IS_E_CUPON = #isECupon#
        </isNotEmpty>
    </select>
    
    <!-- 根据ID查询优惠券类型,或是根据券的类型去查找优惠券 -->
    <select id="getCouponTypeById" parameterClass="java.util.Map" resultMap="ecCouponTypeResult">
        select <include refid="Base_sql"/>
        from EC_COUPON_TYPE r
        where r.is_delete='N' 
        <isNotEmpty prepend="and" property="couponTypeId">
            r.COUPON_TYPE_ID = #couponTypeId#
        </isNotEmpty>
         <isNotEmpty prepend="and" property="couponTypeName">
            r.COUPON_TYPE_NAME like '%$couponTypeName$%'
        </isNotEmpty>
        <isNotEmpty prepend="and" property="couponFee">
            r.COUPON_FEE = #couponFee#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="useType">
            r.USE_TYPE = #useType#
        </isNotEmpty>
    </select>
    
     <!-- 根据No查询优惠券类型 -->
    <select id="getCouponTypeByNo" parameterClass="EcCouponType" resultMap="ecCouponTypeResult">
        select <include refid="Base_sql"/>
        from EC_COUPON_TYPE r
        where r.is_delete='N' 
        <isNotEmpty prepend="and" property="couponTypeNo">
            r.COUPON_TYPE_NO = #couponTypeNo#
        </isNotEmpty>
            and rownum = 1
    </select>
    
    
    <select id="getCouponTypeListByIds" parameterClass="EcCouponType" resultClass="HashMap">
        select <include refid="Base_sql"/> from EC_COUPON_TYPE  tt
        where tt.is_delete='N'
        and tt.COUPON_TYPE_ID in
        <iterate open="(" close=")" conjunction="," property="myids"  >
                #myids[]#
        </iterate>
        order by tt.COUPON_TYPE_ID desc
    </select>
    
    <!-- 根据优惠卷编码查询优惠券类型 -->
    <select id="getCouponTypeByCouponNo" parameterClass="java.lang.String" resultMap="ecCouponTypeResult">
        select ct.COUPON_TYPE_ID, 
            ct.COUPON_TYPE_NO, 
            ct.COUPON_TYPE_NAME,
            ct.COUPON_TYPE_NOTES, 
            ct.COUPON_PIC_URL, 
            ct.COUPON_FEE, 
            ct.DISCOUNT_FEE, 
            ct.CONVERT_POINTS,
            ct.IS_LIMIT_GOODS, 
            ct.ORDER_FEE_LIMIT, 
            ct.ORDER_TYPE_LIMIT,
            ct.USE_AMOUNT_LIMIT, 
            ct.IS_DELETE,
            ct.ADD_USER_ID, 
            ct.ADD_TIME, 
            ct.EDIT_USER_ID, 
            ct.EDIT_TIME,
            ct.IS_E_CUPON,
            ct.IS_REUSE,
            ct.IS_MULTI_USE,
            ct.USE_TYPE,
            ct.is_limit_pay,
            ct.payment_type_nos,
            ct.standby1, 
            ct.standby2,
            ct.standby3,
            ct.standby4,
            ct.standby5,
            ct.member_ship,
            ct.limit_member_roleIds 
        from EC_COUPON_TYPE ct
             left join ec_coupons c on ct.coupon_type_id = c.coupon_type_id
        where c.coupon_no = #couponNo#
              and rownum = 1
    </select>
    
    <select id="selectCouponTypeNameByPublishId"  resultMap="ecCouponTypeNameByPublishId"  parameterClass="java.lang.Long">
            select 
                ECT.COUPON_TYPE_NAME ,ECT.COUPON_FEE,ECT.DISCOUNT_FEE,ECT.USE_TYPE,ECT.IS_DELETE
            from 
                EC_COUPON_TYPE ect LEFT JOIN EC_COUPON_PUBLISH ecp ON ECP.COUPON_TYPE_ID = ECT.COUPON_TYPE_ID 
            where ECP.PUBLISH_ID=#value#
    </select>

    <select id="getPublishRangeById" parameterClass="EcCouponType" resultClass="String">
        SELECT DISTINCT publish_range
        FROM ec_coupon_publish_expand
        WHERE coupon_type_id = #couponTypeId#
    </select>

    <select id="getPublishRangeByPId" parameterClass="EcCouponPublishExpand" resultClass="String">
        SELECT DISTINCT publish_range
        FROM ec_coupon_publish_expand
        WHERE publish_id = #publishId#
    </select>

    <select id="getPublishId" parameterClass="EcCouponType" resultClass="Integer">
        SELECT DISTINCT publish_id
        FROM ec_coupon_publish ecp
        LEFT JOIN ec_coupon_type ect
        ON ect.coupon_type_id=ecp.coupon_type_id
        WHERE ect.coupon_type_id = #couponTypeId#
    </select>

    <insert id="insertPublishExpand" parameterClass="EcCouponPublishExpand">
        INSERT INTO EC_COUPON_PUBLISH_EXPAND(
        id,
        coupon_type_id,
        PUBLISH_ID,
        PUBLISH_RANGE,
        ADD_USER_ID,
        ADD_TIME
        )VALUES (
        EC_COUPON_PUBLISH_EXPAND_seq.nextval,
        #couponTypeId#,
        #publishId#,
        #publishRange#,
        #addUserId#,
        #addTime#
        )
    </insert>

    <update id="updatePublishExpandById" parameterClass="EcCouponPublishExpand">
        UPDATE EC_COUPON_PUBLISH_EXPAND
        SET
        PUBLISH_RANGE=#publishRange#,
        EDIT_USER_ID=#editUserId#,
        EDIT_TIME=#editTime#
        WHERE 1=1
        <isNotEmpty prepend="and" property="couponTypeId">
            COUPON_TYPE_ID = #couponTypeId#
        </isNotEmpty>
        <isNotEmpty prepend="and" property="publishId">
            publish_id = #publishId#
        </isNotEmpty>
    </update>

    <select id="getExpandCount" parameterClass="EcCouponType" resultClass="Integer">
        SELECT COUNT (1)
        FROM EC_COUPON_PUBLISH_EXPAND
        WHERE coupon_type_id = #couponTypeId#
    </select>

    <select id="getExpandCountByPublishId" parameterClass="EcCouponPublishExpand" resultClass="Integer">
        SELECT COUNT (1)
        FROM EC_COUPON_PUBLISH_EXPAND
        WHERE publish_id = #publishId#
    </select>

</sqlMap>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值