JeePlus练习-实现采购计划定制

根据下图所示的原型,实现采购计划订制。业务需求如下:采购计划可根据采购需求自动生成,还可以手动添加;添加时,打开采购需求界面,多选采购需求,然后添加到采购计划中。这种操作是ERP里经典操作之一,即支持数据自动导入,业务上也兼容手工处理。

 

 

解决方法:

1、创建两个按钮

JSP页面按钮代码:

              <shiro:hasPermission name="test:proc_plan:purcPlan:manual">
				<a id="manual" class="btn btn-primary" onclick="manual()"><i class="glyphicon"></i> 手动添加</a>
			</shiro:hasPermission>
			<shiro:hasPermission name="test:proc_plan:purcPlan:auto">
				<a id="auto" class="btn btn-primary" onclick="auto()"><i class="glyphicon"></i> 自动导入</a>
			</shiro:hasPermission>

 到菜单管理添加对应页面中按钮的权限标志:

按钮效果图:

最后还要到权限设置页面对角色进行按钮显示权限授权。

2、设置对应按钮的逻辑

 添加按钮触发函数(在采购计划构建里的JS文件中添加):

 1   function manual(){
 2           jp.openDialog('采购需求记录', "${ctx}/test/proc_plan/purcPlan/manual",'1200px', '800px', $('#purcPlanTable'));
 3       }
 4    
 5   function auto(){
 6        jp.loading("处理中...");
 7        jp.get("${ctx}/test/proc_plan/purcPlan/requnum",function(data){
 8            if(data.success){
 9                jp.confirm(data.msg,function(){
10                    jp.loading("导入中...");
11                    jp.get("${ctx}/test/proc_plan/purcPlan/requimport",function(data1){
12                        $('#purcPlanTable').bootstrapTable('refresh');
13                        jp.info(data1.msg);
14                        })
15                    });
16            }else{
17                jp.error(data.msg);
18            }
19        })
20    }

 

在采购计划构建里的Cotroller添加业务代码:

 1     @Autowired
 2     private PurcRequService purcRequService;//注入一个采购需求构建的service
 3 
 4         /**
 5      * 显示需求表中可选取记录
 6      */
 7     @RequestMapping(value = "manual")
 8     public String manual(PurcRequ purcRequ,Model model) {
 9         model.addAttribute("purcRequ",purcRequ);
10         return "modules/test/proc_plan/purcRequSelect";
11     }
12     
13     /**
14      * 手动选择需求表中的数据导入
15      */
16     @ResponseBody  //返回值非界面的JSON字符串时注意添加这句话
17     @RequiresPermissions("test:proc_plan:purcPlan:manual")
18     @RequestMapping(value = "manualImport")
19     public AjaxJson manualImport( @RequestParam("ids") String ids) {     //,@RequestParam("pher") String pher) {
20         List<Object> result=purcPlanService.executeSelectSql("select count(*) from purc_plan");
21         long count = (long)result.get(0);
22         AjaxJson j = new AjaxJson();
23         String idArray[]=ids.split(",");
24         
25         for(String id : idArray){
26             count++;
27             PurcPlan newPlan=new PurcPlan(); 
28             PurcRequ requ=purcRequService.get(id);
29             newPlan.setDate(requ.getDate());
30             newPlan.setPno(Long.toString(count));
31             newPlan.setMno(requ.getMno());
32             newPlan.setMname(requ.getMname());
33             newPlan.setNum(requ.getNum());
34             
35             purcPlanService.save(newPlan);
36         }
37         j.setSuccess(true);
38         j.setMsg("成功导入"+idArray.length+"条采购需求数据。");
39         return j;
40     }
41     
42     
43     /**
44      * 查询需求表记录数
45      */
46     @ResponseBody
47     @RequestMapping(value = "requnum")
48     public AjaxJson requnum(RedirectAttributes redirectAttributes) {
49         int num=purcRequService.findList(new PurcRequ()).size();
50         AjaxJson json=new AjaxJson();
51         if(num>0) {
52             json.setSuccess(true);
53             json.setMsg("将从需求列表中导入"+num+"条数据?");
54             
55         }else {
56             json.setSuccess(false);
57             json.setMsg("没有读取到采购需求的数据!");
58         }
59         return json;
60     }
61     
62     /**
63      * 导入需求表所有记录
64      */
65     @ResponseBody
66     @RequestMapping(value = "requimport")
67     public AjaxJson requimport(RedirectAttributes redirectAttributes) {
68         List<PurcRequ> requs=purcRequService.findList(new PurcRequ());
69         int num=purcPlanService.findList(new PurcPlan()).size();
70         AjaxJson json=new AjaxJson();
71         for (PurcRequ requ : requs) {
72             num++;
73             PurcPlan newPlan=new PurcPlan(); 
74             newPlan.setDate(requ.getDate());
75             newPlan.setPno(Integer.toString(num));
76             newPlan.setMno(requ.getMno());
77             newPlan.setMname(requ.getMname());
78             newPlan.setNum(requ.getNum());
79             
80             purcPlanService.save(newPlan);
81         }
82         
83         json.setMsg("成功导入"+requs.size()+"条采购需求数据。");
84         return json;
85     }        

一个可以手动选择采购需求记录的JSP页面效果:

该JSP页面的代码:

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ include file="/webpage/include/taglib.jsp"%>

<html>
<head>
    <title>采购需求记录</title>
    <meta name="decorator" content="ani"/>    
    <%@ include file="/webpage/include/bootstraptable.jsp"%>
    <%@include file="/webpage/include/treeview.jsp" %>
    <%@include file="/webpage/modules/test/purc_requ/purcRequList.js" %>
    <script type="text/javascript">
    
        var $table; // 父页面table表格id
        var $topIndex;//弹出窗口的 index
        var selectdata;
        function doSubmit(table, index){//回调函数,在编辑和保存动作时,供openDialog调用提交表单。
          
            /* if(validateForm.form()){
              $table = table;
              $topIndex = index;
              jp.loading();
              $("#inputForm").submit();
              return true;
          } */
          if(getIdSelections()){
              //if(($("#pher").val() == "" || $.trim($("#pher").val()).length == 0)){
                //  jp.info("请填写采购人!");
            //  }else{
                  //原本打算从前台把所选数据全部传到后台;现在仅把所选的数据id传回后台
                  /* selectdata=$("#purcRequTable").bootstrapTable('getSelections');
                  obj={"selectdata":selectdata,"pher":$("#pher").val()}; */
                  jp.loading();      
                  jp.post("${ctx}/test/proc_plan/purcPlan/manualImport",{ids:getIdSelections()+"",pher:$("#pher").val()}, function(data){
                               if(data.success){
                                   table.bootstrapTable('refresh');
                                   jp.success(data.msg);
                                   jp.close(index);
                               }else{
                                   jp.error(data.msg);
                               }
                           }) 
                     
                  
                  
             // }
          }else{
              jp.info("请选择要导入的记录!");
          }
          
        }
        /* $(document).ready(function() {
            
            
            $('#date').datetimepicker({
                 format: "YYYY-MM-DD HH:mm:ss"
            });
        }); */
    </script>
</head>
<body>
<div class="wrapper wrapper-content">        
<sys:message content="${message}"/>        
<div class="row">
    <div class="col-md-12">
    <div class="panel panel-primary">
        
    <div class="panel-body">
        
            <div class="accordion-group">
    <div id="collapseTwo" class="accordion-body collapse in">
        <div class="accordion-inner">
            <form:form id="searchForm" modelAttribute="purcRequ" class="form form-horizontal well clearfix">
             <div class="col-xs-12 col-sm-6 col-md-4">
                <label class="label-item single-overflow pull-left" title="需求编号:">需求编号:</label>
                <form:input path="eqno" htmlEscape="false" maxlength="64"  class=" form-control"/>
            </div>
             <div class="col-xs-12 col-sm-6 col-md-4">
                <label class="label-item single-overflow pull-left" title="物料编号:">物料编号:</label>
                <form:input path="mno" htmlEscape="false" maxlength="64"  class=" form-control"/>
            </div>
             <div class="col-xs-12 col-sm-6 col-md-4">
                <label class="label-item single-overflow pull-left" title="物料名称:">物料名称:</label>
                <form:input path="mname" htmlEscape="false" maxlength="64"  class=" form-control"/>
            </div>
             <div class="col-xs-12 col-sm-6 col-md-4">
                 <div class="form-group">
                    <label class="label-item single-overflow pull-left" title="需求日期:">&nbsp;需求日期:</label>
                    <div class="col-xs-12">
                           <div class="col-xs-12 col-sm-5">
                                  <div class='input-group date' id='beginDate' style="left: -10px;" >
                                       <input type='text'  name="beginDate" class="form-control"  />
                                       <span class="input-group-addon">
                                           <span class="glyphicon glyphicon-calendar"></span>
                                       </span>
                                 </div>    
                            </div>
                            <div class="col-xs-12 col-sm-1">
                                    ~
                               </div>
                            <div class="col-xs-12 col-sm-5">
                                  <div class='input-group date' id='endDate' style="left: -10px;" >
                                       <input type='text'  name="endDate" class="form-control" />
                                       <span class="input-group-addon">
                                           <span class="glyphicon glyphicon-calendar"></span>
                                       </span>
                                   </div>    
                            </div>
                    </div>
                </div>
            </div>
         <div class="col-xs-12 col-sm-6 col-md-4">
            <div style="margin-top:26px">
              <a  id="search" class="btn btn-primary btn-rounded  btn-bordered btn-sm"><i class="fa fa-search"></i> 查询</a>
              <a  id="reset" class="btn btn-primary btn-rounded  btn-bordered btn-sm" ><i class="fa fa-refresh"></i> 重置</a>
             </div>
        </div>    
    </form:form>
    </div>
    </div>
    </div>
    
        
        
        
        <!-- 表格 -->
        <table id="purcRequTable"   data-toolbar="#toolbar"></table>
        
        <div class="col-xs-12 col-sm-6 col-md-4">
                <input id="pher" class=" form-control" maxlength="64" placeholder="填写采购人" />
        </div>
        
    </div>                
    </div>
    </div>
</div>
</div>
</body>
</html>

 

 

 

 

 

 

 

 

JEEPLUS代码生成器遇到问题:

1.表单配置中报错:

解决:JDK版本问题,把JDK版本换成1.8就好了。

 

2.表单配置页面打不开:

解决:Tomcat 8.5中的jasper.jar包引起的,Tomcat换成7.0就正常了。估计是代码生成器不兼容高版本的jasper.jar。

 

posted on 2018-03-13 16:46  BonSan  阅读(364)  评论(0)    收藏  举报

导航