SSH系列:(26)投诉受理
admin
2023-06-06 18:20:56
0


1、Hibernate逆向工程


1.1、CDM概念模型

SSH系列:(26)投诉受理

SSH系列:(26)投诉受理

这里虽然用了T_Complain,但是不建议这样做,因为后面生成JavaBean类时,会生成TComplain.java类,而不是Complain.java。

SSH系列:(26)投诉受理

SSH系列:(26)投诉受理

SSH系列:(26)投诉受理


1.2、物理模型

SSH系列:(26)投诉受理

1.3、生成的实体类和Hibernate映射文件

Complain.java

package com.rk.tax.entity;

import java.sql.Timestamp;
import java.util.HashSet;
import java.util.Set;
import java.util.Map;
import java.util.HashMap;

/**
 * TComplain entity. @author MyEclipse Persistence Tools
 */

public class Complain implements java.io.Serializable {

	// Fields

	private String compId;
	private String compCompany;
	private String compName;
	private String compMobile;
	private Boolean isAnonymous;
	private Timestamp compTime;
	private String compTitle;
	private String toCompName;
	private String toCompDept;
	private String compContent;
	private String state;
	private Set complainreplies = new HashSet(0);

	//状态
	public static String COMPLAIN_STATE_UNDONE = "0";
	public static String COMPLAIN_STATE_DONE = "1";
	public static String COMPLAIN_STATE_INVALID = "2";
	public static Map COMPLAIN_STATE_MAP;
	static {
		COMPLAIN_STATE_MAP = new HashMap();
		COMPLAIN_STATE_MAP.put(COMPLAIN_STATE_UNDONE, "待受理");
		COMPLAIN_STATE_MAP.put(COMPLAIN_STATE_DONE, "已受理");
		COMPLAIN_STATE_MAP.put(COMPLAIN_STATE_INVALID, "已失效");
	}
	
	// Constructors

	/** default constructor */
	public Complain() {
	}

	public String getCompId() {
		return compId;
	}

	public void setCompId(String compId) {
		this.compId = compId;
	}

	public String getCompCompany() {
		return compCompany;
	}

	public void setCompCompany(String compCompany) {
		this.compCompany = compCompany;
	}

	public String getCompName() {
		return compName;
	}

	public void setCompName(String compName) {
		this.compName = compName;
	}

	public String getCompMobile() {
		return compMobile;
	}

	public void setCompMobile(String compMobile) {
		this.compMobile = compMobile;
	}

	public Boolean getIsAnonymous() {
		return isAnonymous;
	}

	public void setIsAnonymous(Boolean isAnonymous) {
		this.isAnonymous = isAnonymous;
	}

	public Timestamp getCompTime() {
		return compTime;
	}

	public void setCompTime(Timestamp compTime) {
		this.compTime = compTime;
	}

	public String getCompTitle() {
		return compTitle;
	}

	public void setCompTitle(String compTitle) {
		this.compTitle = compTitle;
	}

	public String getToCompName() {
		return toCompName;
	}

	public void setToCompName(String toCompName) {
		this.toCompName = toCompName;
	}

	public String getToCompDept() {
		return toCompDept;
	}

	public void setToCompDept(String toCompDept) {
		this.toCompDept = toCompDept;
	}

	public String getCompContent() {
		return compContent;
	}

	public void setCompContent(String compContent) {
		this.compContent = compContent;
	}

	public String getState() {
		return state;
	}

	public void setState(String state) {
		this.state = state;
	}

	public Set getComplainreplies() {
		return complainreplies;
	}

	public void setComplainreplies(Set complainreplies) {
		this.complainreplies = complainreplies;
	}

}


知识点(1)

	//状态
	public static String COMPLAIN_STATE_UNDONE = "0";
	public static String COMPLAIN_STATE_DONE = "1";
	public static String COMPLAIN_STATE_INVALID = "2";
	public static Map COMPLAIN_STATE_MAP;
	static {
		COMPLAIN_STATE_MAP = new HashMap();
		COMPLAIN_STATE_MAP.put(COMPLAIN_STATE_UNDONE, "待受理");
		COMPLAIN_STATE_MAP.put(COMPLAIN_STATE_DONE, "已受理");
		COMPLAIN_STATE_MAP.put(COMPLAIN_STATE_INVALID, "已失效");
	}


Complain.hbm.xml

注意:在生成的映射文件中去掉 catalog=”数据库名称”






    
        
            
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
                
            
            
        
    


知识点(1):

        
            
        

知识点(2):

        
            
        

知识点(3):

        
            
        

对应的类字段

	private Boolean isAnonymous;
	private Timestamp compTime;
	private String compContent;

知识点(4):

        
            
                
            
            
        

其中

lazy="false" cascade="save-update" order-by="reply_time"

lazy="false"表示不使用懒加载,

cascade="save-update"表示级联保存、更新

order-by="reply-time"是指取出的数据按照reply-time排序。注意:reply_time是数据库的列的名称,这里也可以类的字段replyTime,但是类的字段replyTime与数据库的列名reply_time相比,类的字段replyTime可能在某些版本中存在问题,而数据库的列名reply_time更具有通用性

另外,也可以对reply-time进行排序,如使用order-by="reply-time desc",它的默认值是asc,可以省略


Complainreply.java

package com.rk.tax.entity;

import java.sql.Timestamp;

/**
 * TComplainreply entity. @author MyEclipse Persistence Tools
 */

public class Complainreply implements java.io.Serializable {

	// Fields

	private String replyId;
	private Complain complain;
	private String replyer;
	private String replyDept;
	private Timestamp replyTime;
	private String replyContent;

	// Constructors

	/** default constructor */
	public Complainreply() {
	}

	/** minimal constructor */
	public Complainreply(Complain complain) {
		this.complain = complain;
	}

	/** full constructor */
	public Complainreply(Complain complain, String replyer,
			String replyDept, Timestamp replyTime, String replyContent) {
		this.complain = complain;
		this.replyer = replyer;
		this.replyDept = replyDept;
		this.replyTime = replyTime;
		this.replyContent = replyContent;
	}

	public String getReplyId() {
		return replyId;
	}

	public void setReplyId(String replyId) {
		this.replyId = replyId;
	}

	public Complain getComplain() {
		return complain;
	}

	public void setComplain(Complain complain) {
		this.complain = complain;
	}

	public String getReplyer() {
		return replyer;
	}

	public void setReplyer(String replyer) {
		this.replyer = replyer;
	}

	public String getReplyDept() {
		return replyDept;
	}

	public void setReplyDept(String replyDept) {
		this.replyDept = replyDept;
	}

	public Timestamp getReplyTime() {
		return replyTime;
	}

	public void setReplyTime(Timestamp replyTime) {
		this.replyTime = replyTime;
	}

	public String getReplyContent() {
		return replyContent;
	}

	public void setReplyContent(String replyContent) {
		this.replyContent = replyContent;
	}

}


Complainreply.hbm.xml

注意:在生成的映射文件中去掉 catalog=”数据库名称”





    
        
            
            
        
        
            
        
        
            
        
        
            
        
        
            
        
        
            
        
    



2、从dao到action

dao->service->action->config

2.1、dao层

ComplainDao.java

package com.rk.tax.dao;

import com.rk.core.dao.BaseDao;
import com.rk.tax.entity.Complain;

public interface ComplainDao extends BaseDao {

}

ComplainDaoImpl.java

package com.rk.tax.dao.impl;

import com.rk.core.dao.impl.BaseDaoImpl;
import com.rk.tax.dao.ComplainDao;
import com.rk.tax.entity.Complain;

public class ComplainDaoImpl extends BaseDaoImpl implements ComplainDao {

}


2.2、service层

ComplainService.java

package com.rk.tax.service;

import com.rk.core.service.BaseService;
import com.rk.tax.entity.Complain;

public interface ComplainService extends BaseService {
	
}

ComplainServiceImpl.java

package com.rk.tax.service.impl;


import java.util.Calendar;
import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.rk.core.service.Impl.BaseServiceImpl;
import com.rk.core.utils.QueryHelper;
import com.rk.tax.dao.ComplainDao;
import com.rk.tax.entity.Complain;
import com.rk.tax.service.ComplainService;

@Service("complainService")
public class ComplainServiceImpl extends BaseServiceImpl implements ComplainService {
	private ComplainDao complainDao;
	@Resource
	public void setComplainDao(ComplainDao complainDao) {
		setBaseDao(complainDao);
		this.complainDao = complainDao;
	}

}



2.3、action层

ComplainAction.java

package com.rk.tax.action;

import java.net.URLDecoder;
import java.sql.Timestamp;
import java.util.Date;

import javax.annotation.Resource;

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.opensymphony.xwork2.ActionContext;
import com.rk.core.action.BaseAction;
import com.rk.core.utils.QueryHelper;
import com.rk.tax.entity.Complain;
import com.rk.tax.entity.Complainreply;
import com.rk.tax.service.ComplainService;

@Controller("complainAction")
@Scope("prototype")
public class ComplainAction extends BaseAction {
	/*****1、业务数据*****/
	private Complain complain;
	private String startTime;
	private String endTime;
	private String state;
	private Complainreply reply;
	/*****2、业务实现类*****/
	@Resource
	private ComplainService complainService;
	
	/*****3、响应页面操作*****/
	//列表
	public String listUI(){
		//加载状态集合
		ActionContext.getContext().getContextMap().put("complainStateMap", Complain.COMPLAIN_STATE_MAP);
		try {
			QueryHelper queryHelper = new QueryHelper(Complain.class, "c");
			if(StringUtils.isNotBlank(startTime)){//查询开始时间之后的投诉数据
				startTime = URLDecoder.decode(startTime, "utf-8");
				queryHelper.addCondition("c.compTime >= ?", DateUtils.parseDate(startTime+":00", "yyyy-MM-dd HH:mm:ss"));
			}
			if(StringUtils.isNotBlank(endTime)){//查询结束时间之前的投诉数据
				endTime = URLDecoder.decode(endTime, "utf-8");
				queryHelper.addCondition("c.compTime <= ?", DateUtils.parseDate(endTime+":00", "yyyy-MM-dd HH:mm:ss"));
			}
			if(StringUtils.isNotBlank(searchContent)){
				searchContent = URLDecoder.decode(searchContent, "utf-8");
				queryHelper.addCondition("c.compTitle like ?", "%" + searchContent + "%");
			}
			if(StringUtils.isNotBlank(state)){
				queryHelper.addCondition("c.state=?", state);
			}
			//按照状态升序排序
			queryHelper.addOrderByProperty("c.state", QueryHelper.ORDER_BY_ASC);
			//按照投诉时间升序排序
			queryHelper.addOrderByProperty("c.compTime", QueryHelper.ORDER_BY_ASC);
			pageResult = complainService.getPageResult(queryHelper, pageNo, pageSize);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "listUI";
	}
	
	//跳转到受理页面
	public String dealUI(){
		//加载状态集合
		ActionContext.getContext().getContextMap().put("complainStateMap", Complain.COMPLAIN_STATE_MAP);
		if(complain != null && StringUtils.isNotBlank(complain.getCompId())){
			complain = complainService.findById(complain.getCompId());
		}
		return "dealUI";
	}
	
	public String deal(){
		if(complain != null && StringUtils.isNotBlank(complain.getCompId())){
			Complain temp = complainService.findById(complain.getCompId());
			//1、更新投诉的状态为 已受理
			if(!Complain.COMPLAIN_STATE_DONE.equals(temp.getState())){
				temp.setState(Complain.COMPLAIN_STATE_DONE);
			}
			//2、保存回复信息
			if(reply != null){
				reply.setComplain(temp);
				/**
				 * 在后台设置时间,有两点好处:
				 * (1)在前台JSP页面,不需要再提供相应的表单域
				 * (2)有两个时间:JSP前台页面生成的时间、服务器保存数据的时间,后者更准确一些
				 */
				reply.setReplyTime(new Timestamp(new Date().getTime())); 
				temp.getComplainreplies().add(reply);
			}
			complainService.update(temp);
		}
		return "list";
	}
	
	// Properties
	public Complain getComplain() {
		return complain;
	}
	public void setComplain(Complain complain) {
		this.complain = complain;
	}
	public String getStartTime() {
		return startTime;
	}
	public void setStartTime(String startTime) {
		this.startTime = startTime;
	}
	public String getEndTime() {
		return endTime;
	}
	public void setEndTime(String endTime) {
		this.endTime = endTime;
	}
	public String getState() {
		return state;
	}
	public void setState(String state) {
		this.state = state;
	}
	public Complainreply getReply() {
		return reply;
	}
	public void setReply(Complainreply reply) {
		this.reply = reply;
	}
}


知识点(1):级联 保存、更新

在deal()方法中

			Complain temp = complainService.findById(complain.getCompId());
			//1、更新投诉的状态为 已受理
			if(!Complain.COMPLAIN_STATE_DONE.equals(temp.getState())){
				temp.setState(Complain.COMPLAIN_STATE_DONE);
			}
			//2、保存回复信息
			if(reply != null){
				reply.setComplain(temp);
				/**
				 * 在后台设置时间,有两点好处:
				 * (1)在前台JSP页面,不需要再提供相应的表单域
				 * (2)有两个时间:JSP前台页面生成的时间、服务器保存数据的时间,后者更准确一些
				 */
				reply.setReplyTime(new Timestamp(new Date().getTime())); 
				temp.getComplainreplies().add(reply);
			}
			complainService.update(temp);

最后只调用complainService.update(temp),而temp是Complain类型的变量,而真正想要保存的的reply变量,这是通过级联保存(更新)实现的,Complain.hbm.xml中设置了cascade="save-update"

        
            
                
            
            
        


2.4、config

entity层的配置就是*.hbm.xml文件

dao层的配置是将dao类加入到Spring的IOC容器中

service层的配置是将service类加入到Spring的IOC容器中

action层的配置是将action类加入到Spring的IOC容器中,并在struts中对action进行url映射

最后记得将spring和struts的配置都汇总到applicationContext.xml和struts.xml文件中 


3、JSP页面


listUI.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    <%@include file="/common/header.jsp"%>
    投诉受理管理
    
    
    	var list_url = "${basePath}/tax/complain_listUI.action";
    	function doAnnualStatistic(){
    		// TODO
    	}
    	function doDeal(id){
    		document.forms[0].action = "${basePath}/tax/complain_dealUI.action?complain.compId="+id;
    		document.forms[0].submit();
    	}
    



    
        
            
                
投诉受理管理
 
                                     
  •                         投诉标题:                     
  •                     
  •                         投诉时间:                               -                                                    
  •                     
  •                         状态:                     
  •                     
  •                                                                                  
                                                                                               投诉标题                             被投诉部门                             被投诉人                             投诉时间                             受理状态                             操作                                                                               bgcolor="f8f8f8"  >                                                                                                                                                                                                                                           ')">受理                                                                                                                             
                
            <%@include file="/common/pageNavigator.jsp" %>         
        

    知识点(1):WDatePicker

    知识点(2)


    dealUI.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    
    
        <%@include file="/common/header.jsp"%>
        投诉受理管理
    
    
    
        
            
                
        
    投诉受理管理 - 投诉受理
        投诉详细信息(已受理)
              投诉人信息                      是否匿名投诉:                                            投诉人单位:                                                                                                投诉人姓名:                                                                      投诉人手机:                                                                   10">                                                                                                投诉信息                      投诉时间:                                                                      被投诉部门:                                            被投诉人:                                            投诉标题:                                            投诉内容:                               受理信息                                                 回复  回复部门:    回复人:   回复时间:
                                               受理操作                      回复部门:                                                                                   回复人:                                                                                   回复内容:                                                                         
        

    知识点(1):OGNL字符中长度判断 和 拼接

     10">
    	
    

    知识点(2)

    知识点(3) 似乎对OGNL的支持不同

    
    

    知识点(4):escape

    投诉内容:
    











    上一篇:sql中根据字段字符串的长度进行删除

    下一篇:关于sql server日志变得超大的删除解决办法

    相关内容

    热门资讯

    预祝圆满成功!李家超与黎家盈视... 据凤凰卫视报道,神舟二十三号载人飞船即将发射,乘组成员包括首位来自香港的航天员黎家盈。香港特区行政长...
    《给阿嬷的情书》,票房超10亿... 据网络平台数据截至5月24日,2026年度电影总票房(含预售)已突破151亿元!其中,电影《给阿嬷的...
    美媒称伊朗同意放弃高浓缩铀库存 新华社华盛顿5月23日电(记者黄强 颜亮)据美国媒体23日报道,作为美国与伊朗即将达成的协议中的一个...
    全自动洗衣机进水管漏水怎么办 造成全自动洗衣机进水管漏水,要根据原因寻找解决办法,1、由于洗衣机进水管使用年限过长,部分出现损坏,...
    电视机闪屏一下又黑屏 问答:1、电视显示屏出现短路或损坏等问题。2、电视的信号源出现干扰。3、电视内部的小零件损坏,如屏幕...
    燃气灶点火又灭了怎么回事 原因可能是燃气管道堵塞,需要清理燃气管道,自己不会的话需要让专业的人来;还有可能是燃气灶电池没有电了...
    林内热水器点火后一会又熄火 林内热水器不会无缘由的打火之后又熄火,因此需要注意检查这些方面:看热水器当中的水气联动装置,看看是不...
    lg电视开机后屏闪一下就黑屏怎... 出现这种情况时,一般就是电视的启动瞬间电流过大造成的,当电流过大时,电视便会自动启动内部的保护机制,...
    具身智能新场景浮现,行业等待商... 近日,他山科技发布视频介绍了AI触觉剥虾机,可以给大小不一的潜江小龙虾快速去头。而在浙江纺织业工厂,...
    闭眼入不踩雷的日常实用手机推荐 在如今快节奏的生活中,选择一款日常使用方便的品牌手机显得尤为重要。它不仅需要满足工作、娱乐、社交等多...