Aug-07-01

今天的任务有

1. 再次检查菜品做法以及做法关联模块的各个功能以及边界条件,并且测试Excel导出功能的作用


2. 同步: 将菜品做法以及做法关联同步到服务器上


3. 制作新模块



   3.1 首先将一个类似的模块放进来, 设置好导航界面并且增加权限



增加导航:

            <li></li>
            #set ($moudle=$myTool.getMoudleByTname('b_packagemeal'))
            <li class="ico_main_bg_blue"><a href="$link.contextPath/$!moudle.url" target="$!moudle.act" rel="$!moudle.tname" max="true" mask="false" minable="true" title="$!moudle.cname">$!moudle.cname</a></li>


增加权限::

delete  from sys_moudle where tname='b_packagemeal';
delete  from sys_moudle where tname='b_packagemeal_add';
delete  from sys_moudle where tname='b_packagemeal_edit';
delete  from sys_moudle where tname='b_packagemeal_del';
delete  from sys_moudle where tname='b_packagemeal_open';
INSERT INTO sys_moudle VALUES (REPLACE(uuid(),'-',''), NOW(), NOW(), 'b_packagemeal_edit', '修改', 'EDIT', 'b_packagemeal', 'base/packagemeal!edit.do', '[\"base/packagemeal!edit.do\",\"base/packagemeal!update.do\"]', null, '9999', '2', 'dialog', '2', '0', '1', '9999', '9999');
INSERT INTO sys_moudle VALUES (REPLACE(uuid(),'-',''), NOW(), NOW(), 'b_packagemeal_open', '打开', 'OPEN', 'b_packagemeal', 'base/packagemeal!list.do', '[\"base/packagemeal!list.do\",\"base/dishcooking!list.do\",\"base/dishcook!list.do\"]', null, '9999', '2', 'dialog', '8', '0', '1', '9999', '9999');
INSERT INTO sys_moudle VALUES (REPLACE(uuid(),'-',''), NOW(), NOW(), 'b_packagemeal', '做法关联', 'b_packagemeal', 'base', 'base/packagemeal!list.do', '[\"base/packagemeal!list.do\"]', null, '9999', '1', 'dialog', '8', '0', '1', '9999', '9999');
INSERT INTO sys_moudle VALUES (REPLACE(uuid(),'-',''), NOW(), NOW(), 'b_packagemeal_add', '新增', 'ADD', 'b_packagemeal', 'base/packagemeal!add.do', '[\"base/packagemeal!add.do\",\"base/packagemeal!save.do\",\"base/packagemeal!detail.do\"]', null, '9999', '2', 'dialog', '1', '0', '1', '9999', '9999');
INSERT INTO sys_moudle VALUES (REPLACE(uuid(),'-',''), NOW(), NOW(), 'b_packagemeal_del', '删除', 'DELETE', 'b_packagemeal', 'base/packagemeal!drop.do', '[\"base/packagemeal!drop.do\",\"base/packagemeal!dropDetails.do\"]', null, '9999', '2', 'dialog', '4', '0', '1', '9999', '9999');
delete  from sys_moudlegrant  where tname='b_packagemeal';
INSERT INTO sys_moudlegrant(select REPLACE(uuid(),'-',''), NOW(), NOW(), 'b_packagemeal', '15');

重启服务器, 完成第一步

(就不放截图了)

3.2 完成显示(只是显示, 不包括点击相应)菜品(最左边的那个栏), 要求从数据库中查找 套菜=true 的菜品, 显示在左边的列表中

增加界面表格

#set($width=$!math.getTotal($myTool.getMx('base_dishes'),"width"))
                #set($width=$width+500)
                <table class="table" layoutH="120" layoutV="200" style="width:$!{width}px;">
                    <thead>
                        <tr>
                            <th width="60" align="center">#text('data.rowName')</th>
                            #foreach($t in $myTool.getMx('base_dishes'))
                                <th width="$!{t.width}px" align="$!t.align" >$!t.cname</th>
                            #end
                        </tr>
                    </thead>
                    <tbody>
                        #foreach($tempdishes in $!dishess)
                          <tr target="sid_obj" rel="$!tempdishes.id" οndblclick="migr.baseMoudleDblick(this)"> 
                              <td>$!velocityCount
                                    <input name="ids" type="checkbox" value="$!tempdishes.id"/>
                              </td>
                              #foreach($t in $myTool.getMx('base_dishes'))
                                 #if($!t.colName=='vegetablesCode')
                                     <td class="datagrid_body  width="$!{t.width}px" align="$!t.align">[$!tempdishes.vegetablesCode]$service.getVegetablesString($!tempdishes.vegetablesCode)</td>
                                 #elseif($!t.colName=='string41'||$!t.colName=='string42'||$!t.colName=='string43'||$!t.colName=='string44'||$!t.colName=='string45'||$!t.colName=='string46'||$!t.colName=='string47'||$!t.colName=='string48'||$!t.colName=='string49'||$!t.colName=='string50')
                                     <td class="datagrid_body  width="$!{t.width}px" align="$!t.align"> #if('1'==$!myTool.getValue($tempdishes,$!t,"yyyy-MM-dd")) 是#else 否 #end</td>
                                 #else  
                                     <td class="datagrid_body #if($!t.colName=='code'||$!t.colName=='name'||$!t.colName=='helpCode')highlightArea#end"  width="$!{t.width}px" align="$!t.align">$!myTool.getValue($tempdishes,$!t,"yyyy-MM-dd")</td>
                                 #end
                              #end
                          </tr>
                        #end
                    </tbody>
                 </table>

完成Action中的list(), 查询函数, 建立List<Dishes> dishess并且提供相关的set(),get()方法

public String list(){
		Search search = new Search();
		search.addEqual("string47", "1");
		search.addEqual("isDelete", 0);
		search.addOrderBy("code", "asc");
		Dishess = dishesService.getList(search);
		return "list";
	}

	private List<Dishes> Dishess;
        public List<Dishes> getDishess() {
		return Dishess;
	}
	public void setDishess(List<Dishes> dishess) {
		Dishess = dishess;
	}


重启服务器, 发现宽度需要进行修改:

(TODO)

完成第二步:


3.2 建立套菜实体, 在数据库中建立套菜实体表(包括和菜品的一个关联属性), 在TableMx中增加相关属性, 写Service中的相关函数, 增加点击相应, 完成界面中的列表显示

建立套菜实体(Dishincluded):

套菜中应该包含的属性有: 套菜编号(packagemealCode), 道菜编号(DishIncludedCode), 道菜名称(DishIncludedName), 最大值(Max), 最小值(Min)

套菜实体的基本功能有: 假删(isDelete), 备注

套菜实体中的保留字段: createMan, updateMan,tag

package com.migrsoft.merp.base.entity;

import javax.persistence.Entity;
import javax.persistence.Table;

import com.migrsoft.base.entity.BaseEntity;

@Entity
@Table(name = "base_dishincluded")
public class Dishincluded extends BaseEntity implements java.io.Serializable{
    
    private String packagemealCode;    //套菜编号
    private String dishIncludedCode;    //道菜编号
    private String dishIncludedName;    // 道菜名称
    private Integer max;    //最大值
    private Integer min;    //最小值
    private String memo;    //备注
    private String tag;
    private Integer isDelete = 0;
    private String creator;
    private String updateMan;
    
    public String getPackagemealCode() {
        return packagemealCode;
    }
    public void setPackagemealCode(String packagemealCode) {
        this.packagemealCode = packagemealCode;
    }
    public String getDishIncludedCode() {
        return dishIncludedCode;
    }
    public void setDishIncludedCode(String dishIncludedCode) {
        this.dishIncludedCode = dishIncludedCode;
    }
    public String getDishIncludedName() {
        return dishIncludedName;
    }
    public void setDishIncludedName(String dishIncludedName) {
        this.dishIncludedName = dishIncludedName;
    }
    public Integer getMax() {
        return max;
    }
    public void setMax(Integer max) {
        this.max = max;
    }
    public Integer getMin() {
        return min;
    }
    public void setMin(Integer min) {
        this.min = min;
    }
    public String getMemo() {
        return memo;
    }
    public void setMemo(String memo) {
        this.memo = memo;
    }
    public String getTag() {
        return tag;
    }
    public void setTag(String tag) {
        this.tag = tag;
    }
    public Integer getIsDelete() {
        return isDelete;
    }
    public void setIsDelete(Integer isDelete) {
        this.isDelete = isDelete;
    }
    public String getCreator() {
        return creator;
    }
    public void setCreator(String creator) {
        this.creator = creator;
    }
    public String getUpdateMan() {
        return updateMan;
    }
    public void setUpdateMan(String updateMan) {
        this.updateMan = updateMan;
    }


}




建立数据库中的套菜实体表:

和实体相对:

DROP TABLE IF EXISTS base_dishincluded;
CREATE TABLE base_dishincluded (
  id varchar(32) NOT NULL COMMENT 'id号',
  createDate datetime DEFAULT NULL COMMENT '创建日期',
  modifyDate datetime DEFAULT NULL COMMENT '修改日期',
  packagemealCode varchar(32) DEFAULT NULL COMMENT '套菜编号',
  dishIncludedCode varchar(32) DEFAULT NULL COMMENT '道菜编号',
  dishIncludedName varchar(32) DEFAULT NULL COMMENT '道菜名称',
  max varchar(11) DEFAULT NULL COMMENT '最大值',
  min varchar(11) DEFAULT NULL COMMENT '最小值',
  creator varchar(32) DEFAULT NULL,
  updateMan varchar(32) DEFAULT NULL,
  isDelete varchar(11) DEFAULT NULL,
  tag varchar(255) DEFAULT NULL,
  memo varchar(255) DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='道菜';	

/*
	private String packagemealCode;	//套菜编号
	private String DishIncludedCode;	//道菜编号
	private String DishIncludedName;	// 道菜名称
	private String memo;	//备注
	private String tag;
	private Integer isDelete = 0;
	private String creator;
	private String updateMan;
	private Integer Max;	//最大值
	private Integer Min;	//最小值
*/

delete from  sys_table where tname='base_dishincluded';
INSERT INTO sys_table VALUES (REPLACE(uuid(),'-',''), 'base_dishincluded', '道菜', '道菜', '道菜', '', NOW(), NOW());

delete from  sys_tablemx where tableName='base_dishincluded';
INSERT INTO sys_tablemx VALUES (REPLACE(uuid(),'-',''),NOW(),NOW(), 'base_dishincluded', 'packagemealCode', 'packagemealCode', '套菜编号', '套菜编号', '1', '80', '1', '3', 'left', '0', '0', null);
INSERT INTO sys_tablemx VALUES (REPLACE(uuid(),'-',''),NOW(),NOW(), 'base_dishincluded', 'dishIncludedCode', 'dishIncludedCode', '道菜编号', '道菜编号', '1', '80', '1', '6', 'left', '0', '0', null);
INSERT INTO sys_tablemx VALUES (REPLACE(uuid(),'-',''),NOW(),NOW(), 'base_dishincluded', 'dishIncludedName', 'dishIncludedName', '道菜名称', '道菜名称', '1', '80', '1', '9', 'left', '0', '1', null);
INSERT INTO sys_tablemx VALUES (REPLACE(uuid(),'-',''),NOW(),NOW(), 'base_dishincluded', 'max', 'max', '最大值', '最大值', '1', '100', '1', '12', 'left', '0', '2', null);
INSERT INTO sys_tablemx VALUES (REPLACE(uuid(),'-',''),NOW(),NOW(), 'base_dishincluded', 'min', 'min', '最小值', '最小值', '1', '80', '1', '15', 'left', '0', '1', null);


放入数据库执行:



插入到配置文件中

applicationContext.xml:

<value>com.migrsoft.merp.base.entity.Dishincluded</value>


完成Service:

首先建立Dao以及DaoImpl

package com.migrsoft.merp.base.dao;

import com.migrsoft.base.dao.BaseDao;
import com.migrsoft.merp.base.entity.Dishincluded;

public interface DishincludedDao extends BaseDao<Dishincluded, String>{

}

package com.migrsoft.merp.base.dao.impl;

import com.migrsoft.base.dao.impl.BaseDaoImpl;
import com.migrsoft.merp.base.dao.DishincludedDao;
import com.migrsoft.merp.base.entity.Dishincluded;

@Repository
public class DishincludedDaoImpl extends BaseDaoImpl<Dishincluded, String>
		implements DishincludedDao {

}

然后建立Service相关类, 增添getDishincludeds方法, 根据套菜编码得到道菜列表

package com.migrsoft.merp.base.service;

import java.util.List;

import com.migrsoft.base.service.BaseService;
import com.migrsoft.merp.base.entity.Dishcook;
import com.migrsoft.merp.base.entity.Dishincluded;

public interface DishincludedService extends BaseService<Dishincluded, String> {

	public List<Dishincluded> getDishincludeds(String DishesCode);
}

package com.migrsoft.merp.base.service.impl;

import java.util.List;

import org.springframework.stereotype.Service;

import com.migrsoft.base.service.impl.BaseServiceImpl;
import com.migrsoft.merp.base.entity.Dishincluded;
import com.migrsoft.merp.base.service.DishincludedService;

@Service("DishincludedService")
public class DishincludedServiceImpl extends BaseServiceImpl<Dishincluded, String> implements DishincludedService{

	@Override
	public List<Dishincluded> getDishincludeds(String DishesCode) {
		// TODO Auto-generated method stub
		return null;
	}

}


完成相关方法

	@Resource
	DishincludedDao dishincludedDao;
	
	@Override
	public List<Dishincluded> getDishincludeds(String DishesCode) {
		Search search = new Search();
		if (MigrStringUtil.isNotEmpty(DishesCode))
			search.addEqual("packagemealCode", DishesCode);
		search.addOrderBy("dishIncludedCode", "asc");
		return dishincludedDao.getList(search);
	}


向Action中增添DishCode的储存和set,get方法

	private String DishesCode;
	

	public String getDishesCode() {
		return DishesCode;
	}
	public void setDishesCode(String dishesCode) {
		DishesCode = dishesCode;
	}	


向vm页面增加点击调用函数

 <tr target="sid_obj" rel="$!tempdishes.code" οnclick="migr.getDishincludeds(this,'$!tempdishes.code')"> 


写相关js函数

dishincludedList:function(obj,dishesCode){
       var $this = $(obj);
       var $p = $this.parents(".unitBox:first");
       var addUrl = $this.attr("href");
       //继续打开新增页面
       var dialogId = $("#dialogId",$p).val();
       navTab.reload(addUrl, {navTabId: dialogId,data:'DishesCode='+$this.attr("rel")});
       return false;
}



添加herf标签

<tr target="sid_obj" rel="$!tempdishes.code" οnclick="migr.dishCookingList(this,'$!tempdishes.code')" href="$!link.contextPath/base/packagemeal!list.do"> 


修改Action中的List()函数, 添加显示功能

public String list(){
	Search search = new Search();
	search.addEqual("string47", "1");
	search.addEqual("isDelete", 0);
	search.addOrderBy("code", "asc");
	Dishess = dishesService.getList(search);
	if(MigrStringUtil.isNotEmpty(DishesCode)){
		dishincludeds = dishincludedService.getDishincludeds(DishesCode);
	}
	return "list";
}


在页面中增添相关列表

 <div class="pageContent" style="border-left:1px #B8D0D6 solid;border-right:1px #B8D0D6 solid">  
                #set($width=$!math.getTotal($myTool.getMx('base_dishincluded'),"width"))
                #set($width=$width+500)
                <table class="table" layoutH="120" layoutV="50" style="width:$!{width}px;">
                    <thead>
                        <tr>
                            <th width="60" align="center">#text('data.rowName')</th>
                            #foreach($t in $myTool.getMx('base_dishincluded'))
                                <th width="$!{t.width}px" align="$!t.align" >$!t.cname</th>
                            #end
                        </tr>
                    </thead>
                    <tbody>
                        #foreach($tempdishes in $!dishincludeds)
                          <tr target="sid_obj" rel="$!tempdishes.code" οnclick="migr.dishCookingList(this,'$!tempdishes.code')"> 
                              <td>$!velocityCount
                              </td>
                            #foreach($t in $myTool.getMx('base_dishincluded'))
                              <td  style="text-align:$!t.align;">$!myTool.getValue($!c,$!t,"yyyy-MM-dd")</td>
                             #end
                          </tr>
                        #end
                    </tbody>
                 </table>
            </form>
 </div>



重启服务器, 进行调试 Start - 15:08


Bug:

navTab.reload(addUrl, {navTabId: dialogId,data:'id='+$this.attr("rel")});中不能添加navTabId: dialogId字段,否则无法跳转

DishesCode中的首字母的大写的, 在调试过程中改成了小写的, 浪费了很多时间

Sql创造表单语句中没有添加memo

dishincludeds没有get(),set()

private List<Dishincluded> dishincludeds;

public List<Dishincluded> getDishincludeds() {
	return dishincludeds;
}
public void setDishincludeds(List<Dishincluded> dishincludeds) {
	this.dishincludeds = dishincludeds;
}

reload不起作用

这便是一个冗长而无趣的调试过程(调试了1h)

知道为什么不起作用吗?

因为这是个NavTab的reload函数 -_-|||| 我才知道这里面还有讲究, 以前根本不知道NavTab和Dialog有什么差别

而我这个是dialog

首先我试图通过吧这个页面换成NavTab来解决, 后来发现It doesn't work! 当然我不知道为什么。

最后我在网上查到了dialog的reload函数, 一次性解决。

JS代码需要修改

dishincludedList:function(obj,dishesCode){
	var $this = $(obj);
	var $p = $this.parents(".unitBox:first");
	var addUrl = $this.attr("href");
	//继续打开新增页面
	var dialogId = $("#dialogId",$p).val();
	//navTab.reload(addUrl, {navTabId: dialogId,data:'id='+$this.attr("rel")});
	  var dialog = $("body").data(dialogId);  
           if(dialog){  
               $.pdialog.reload(addUrl,{dialogId:dialogId,data:'dishesCode='+$this.attr("rel")});  
           }  
	//navTab.reload(addUrl,{data:'dishesCode='+$this.attr("rel")},dialogId);
	return false;
}


第二张表的宽度需要进行修改:

(TODO)

最终完成第三步(真是艰难)



17:20 调试完毕











评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值