📄 rmrecommandproductservice.java
字号:
/**
* @author chenjq
*/
package com.doone.fj1w.fjmgr.sysmgr;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import com.doone.data.DacClient;
import com.doone.data.DataRow;
import com.doone.data.DataTable;
import com.doone.util.ExtString;
import com.doone.util.FileLogger;
public class RMRecommandProductService {
private FileLogger log = new FileLogger();
private RMRecommandInterface rmrDAO;//接口
private DacClient dacClient=new DacClient();//DacClient对象
private int top=3;//推荐产品数目
private int show_count=0;
/**
* 构造函数
* @param request
*/
public RMRecommandProductService(){
rmrDAO=new RMRecommandDAO(dacClient);
}
/**
* 1-特别推荐,2-其他推荐
* @param request ServletRequest对象
* @param response ServletResponse对象
* @param map 条件参数
* @return 返回"特别推荐(?) 其他推荐(?)"的字符串
*/
public String getRecommandProductMethod(ServletRequest request,ServletResponse response,Map map){
StringBuffer sb=new StringBuffer();
sb.append("<table><tr><td style='cursor: default;'>");
//获取前端要显示的条数
int total=0;
try {
total = rmrDAO.getRecommandProductCount(map);
} catch (SQLException e) {
log.error(e.getMessage());
}
int others=0;
if (total==0){
sb.append(" <font color='red'>没有符合以上条件的查询记录结果。</font>");
}
else if (total>top){
others=total-top;
sb.append(" <a href='javascript:' ")
.append(" onclick='fnStateClick(this)' ")
.append(" name='ACTION' ")
.append(" value='special' ")
.append(" style='color: white;'>")
.append(" 特别推荐(").append(top).append(")</a>");
sb.append("<a href='javascript:' ")
.append(" onclick='fnStateClick(this)' ")
.append(" name='ACTION' ")
.append(" value='others' ")
.append(" style='color: white;'>")
.append(" 其他推荐(").append(others).append(")</a>");
}
else{
top=total;
others=0;
sb.append(" <a href='javascript:' ")
.append(" onclick='fnStateClick(this)' ")
.append(" name='ACTION' ")
.append(" value='special' ")
.append(" style='color: white;'>")
.append(" 特别推荐(").append(top).append(")</a>");
sb.append(" 其他推荐(").append(0).append(")");
}
sb.append("</td></tr></table>");
return sb.toString();
}
/**
* 分类方式的行(表格的行数)
* @param request ServletRequest对象
* @param response ServletResponse对象
* @param map 条件参数
* @return
*/
public int getRecommandProductMethodCount(ServletRequest request,
ServletResponse response,
Map map){
return 1;
}
/**
* 隐藏过长的字符串
* @param target 目标字符串
* @param length 显示的长度
* @return
*/
private String cutString(String target,int length){
if(target.length()<=length){
return target;
}else{
return target.substring(0,length)+"......";
}
}
/**
* 获取推荐产品列表的数据
* @param request ServletRequest对象
* @param response ServletResponse对象
* @param map 条件参数
* @return 列表字符串
*/
public String getRecommandProductList(ServletRequest request,
ServletResponse response,
Map map){
DataTable dt=null;
try {
dt = rmrDAO.getRecommandProductList(map);
} catch (SQLException e) {
log.error(e.getMessage());
}
if(dt!=null){
StringBuffer sb=new StringBuffer();
sb.append("<table><tbody>");
show_count=dt.getRows().getCount();
for(int i=0;i<dt.getRows().getCount();i++){
DataRow dr=dt.getRow(i);
int iRecommandId=dr.getInt("RECOMMENDID");//推荐产品序号
String sTitle=ExtString.getHTMLString(this.cutString(dr.getString("TITLE"),10));//标题
String sAbstract=ExtString.getHTMLString(this.cutString(dr.getString("ABSTRACT"),20));//摘要
String sCityName=dr.getString("CITYNAME");//地市名称
int iRmIndex=dr.getInt("RMINDEX");//级别指数
String state=dr.getString("STATE");//状态
Date dStartTime=dr.getDate("STARTTIME");//开始时间
Date dEndTime=dr.getDate("ENDTIME");//结束时间
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String sStartTime=sdf.format(dStartTime);
String sEndTime=sdf.format(dEndTime);
String sToday=sdf.format(new Date());
java.sql.Date d1=java.sql.Date.valueOf(sEndTime);
java.sql.Date d2=java.sql.Date.valueOf(sToday);
boolean enabled=d1.before(d2);
sb.append("<tr key='").append(iRecommandId).append("'");
if(enabled && state.equals("可用")){
//sb.append(" style='background-color:gray'");
//过期,设置不可用
try {
rmrDAO.deleteRMRecommandProduct(new Long(iRecommandId));
state="禁用";
} catch (SQLException e) {
log.error(e.getMessage());
}
}
sb.append(">");
sb.append("<td class='body_td' align='left' nowrap width='20%'>")
.append("<a href='javascript:' onclick='window.setTimeout(\"fn_dblClick();\",10);'>")
.append(sTitle).append("</a>").append("</td>");
sb.append("<td class='body_td' align='left' nowrap width='35%'>")
.append(sAbstract).append("</td>");
sb.append("<td class='body_td' align='center' nowrap width='10%'>")
.append(sStartTime).append("</td>");
sb.append("<td class='body_td' align='center' nowrap width='10%'>")
.append(sEndTime).append("</td>");
sb.append("<td class='body_td' align='center' nowrap width='10%'>")
.append(sCityName).append("</td>");
sb.append("<td class='body_td' align='center' nowrap width='5%'>")
.append(iRmIndex).append("</td>");
sb.append("<td class='body_td' align='center' nowrap width='10%'>")
.append(state).append("</td>");
sb.append("</tr>");
}
sb.append("</tbody></table>");
return sb.toString();
}
return null;
}
/**
* 检索出来的记录显示的行数(pagesize)
* @param request ServletRequest对象
* @param response ServletResponse对象
* @param map 条件参数
* @return
*/
public int getRecommandProductCount(ServletRequest request,
ServletResponse response,
Map map){
return show_count;
}
/**
* 增加推荐产品信息(私有函数)
* @throws SQLException
*/
private long add_recommandproduct(RMRecommandProductBean rmrpb) throws SQLException{
TD_RecommandProduct bean=buildTD_RecommandProduct(rmrpb);
bean.save();
return bean.getRECOMMENDID();
}
/**
* 增加推荐产品条件信息(私有函数)
* @param reomandid
* @throws SQLException
*/
private void add_product_affair(long recomandid,List lst_product,List lst_affair) throws SQLException{
//循环增加推荐产品条件
Map map=new HashMap();
if(lst_product!=null){
//针对conditionType="P"的程控
for(int i=0;i<lst_product.size();i++){
RMRecommendConditionBean productbean=(RMRecommendConditionBean)lst_product.get(i);
productbean.setRecommandId(recomandid);
productbean.setUpConditionId(0);
TD_RecommendCondition bean1=buildTD_RecommendCondition(productbean);
bean1.save();
//保存conditionType="F"的recommendcontion对象的序列号,key:产品id,value:序列号
map.put(productbean.getParameter(),new Long(bean1.getCONDITIONID()));
}
if(lst_affair!=null){
//针对conditionType="F"的程控,先要设置它的upConditionId
//upConditionId根据flag来获取,flag保存了它的产品id
for(int i=0;i<lst_affair.size();i++){
RMRecommendConditionBean affairbean=(RMRecommendConditionBean)lst_affair.get(i);
affairbean.setRecommandId(recomandid);
//通过flag(所属的产品id号),在hashMap中查找相应的产品序列号,即程控的upconditionid
affairbean.setUpConditionId(((Long)map.get(affairbean.getFlag())).longValue());
TD_RecommendCondition bean2=buildTD_RecommendCondition(affairbean);
bean2.save();
}
}
}
}
/**
* 将RMRecommandProductBean的值转到TD_RecommandProduct对象中,可用于增加和修改
* @param bean
* @return
*/
private TD_RecommandProduct buildTD_RecommandProduct(RMRecommandProductBean rmrpb){
TD_RecommandProduct bean=null;
long recommandId=rmrpb.getRecommandId();
if(recommandId==0L){//增加
bean=new TD_RecommandProduct(this.dacClient);
}else{//修改
bean=new TD_RecommandProduct(this.dacClient,recommandId);
}
bean.setABSTRACT(rmrpb.getAbstracts());
bean.setCITYCODE(rmrpb.getCityCode());
bean.setCREATETIME(new Date());
bean.setDESCRIPTION(rmrpb.getDescrption());
bean.setDISPLAYTYPE(rmrpb.getDisplaytype());
bean.setENDTIME(rmrpb.getEndTime());
bean.setRMINDEX(rmrpb.getRmindex());
bean.setSTARTTIME(rmrpb.getStartTime());
bean.setSTATE(rmrpb.getState());
bean.setTITLE(rmrpb.getTitle());
return bean;
}
/**
* 将RMRecommendConditionBean的值转到TD_RecommendCondition对象中,仅用于增加
* @param bean
* @return
*/
private TD_RecommendCondition buildTD_RecommendCondition(RMRecommendConditionBean bean){
TD_RecommendCondition bean2=new TD_RecommendCondition(this.dacClient);
bean2.setRECOMMENDID(bean.getRecommandId());
bean2.setCONDITIONTYPE(bean.getConditionType());
bean2.setEXPERSSION(bean.getExpression());
bean2.setPARAMETER(bean.getParameter());
bean2.setSTATE(bean.getState());
bean2.setUPCONDITIONID(bean.getUpConditionId());
return bean2;
}
/**
* 增加推荐产品
* @param request
* @return 1-正常,0-出异常
*/
public int addRMRecommandProduct(RMRecommandProductBean rmrpb,List lst_product,List lst_affair){
if(rmrpb==null) return 0;
try {
dacClient.beginTransaction(-1);//启动事务
long recommandid=this.add_recommandproduct(rmrpb);//增加推荐产品信息,返回推荐产品id
if(recommandid<=0){
dacClient.endTransaction(false);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -