2017-04-20
2017-04-20
①js post 请求 url到action struts2对应配置的name url=“name.action” name-list还未尝试。
②DATE_FORMAT(`addtime`,'%Y-%m-%d')只取年月日字段
③struts2点击不跳转问题,明天去解决。
2017-04-21
①js post 请求 url到action 似乎并不能跳转到新页面,改成form表单提交就可以了。
②图片存在另一台电脑页面读取问题。action出集合后对路径进行split操作。
③数据库更新页面不更新问题:hibernate查询要有事务
④文件上传代码
⑤poi上传excel一般要是xls格式,xlsx格式可能会出异常(估计是自己jar包的缘故,正常两种可以的)
class "org.apache.poi.util.PackageHelper"'s signer information does not match
2017-04-21,23
感冒很难受,摸了两天鱼,excel上的日期存到数据库会变成总天数,明天去解决下。
2017-04-24
①将struts2项目上的导入导出代码移到sm项目上,问题挺多的。
②海安出差。
2017-04-25
①springmvc文件上传代码:
②解决不同框架下同一内容的问题。
2017-04-26
①订单表与黑名单excel筛选用户基本完成。
②新需求:筛选出同一商品,同一用户的信息,读取商品Excel列困难,待定。
2017-04-28
①黑名单与用户多次购买记录筛选完成。安装项目出现问题,本机EXCEL可以上传无问题,局域网其它机子访问可以,上传EXCEL会失败。
②hibernate查询返回分组名,分组数量
public List<Orders> getTmallOrderList(int start,int number,String type) {
int i=-1;
List<Orders> orderlist = new ArrayList<Orders>();
session = HibernateSessionFactory.getSession();
Transaction transaction = session.beginTransaction();
if(type.equals("电话")){
query = session.createQuery("SELECT tel,COUNT(*) from Orders GROUP BY tel HAVING COUNT(*)>1");
}else if(type.equals("用户名")){
query = session.createQuery("SELECT ZName,COUNT(*) from Orders GROUP BY ZName HAVING COUNT(*)>1");
}else if(type.equals("地址")){
query = session.createQuery("SELECT addressA,COUNT(*) from Orders GROUP BY addressA HAVING COUNT(*)>1");
}
query.setFirstResult(start);
query.setMaxResults(number);
List list= query.list();
String[] a = new String[10000];
Long[] b = new Long[10000];
Iterator it= list.iterator();
while(it.hasNext()){
i++;
Object[] res=(Object[]) it.next();
//注意这里的类型转化
String count= (String)res[0];
a[i] = (String) res[0];
b[i] = (Long) res[1];
System.out.println("count"+count);
System.out.println(a[i]+" "+b[i]);
}
for(int j=0;j<i+1;j++){
Orders orders = new Orders();
orders.setZName(a[j]);
orders.setTel(String.valueOf(b[j]));
orderlist.add(orders);
}
transaction.commit();
session.clear();
session.close();
return orderlist;
}
public int ordercount(int start,int number,String type){
List<Orders> list = getTmallOrderList(start, number, type);
return list.size();
}
2017-05-02
①happy三天。上次出现问题两个可能的原因:服务机用户名为中文,tomocat版本高了一丢丢。
②增加了日期查询,编辑和删除功能。年月日日期:
SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String dateString = form.format(date);
2017-05-04
①增加日期查询,编辑删除功能。
②上次问题的原因是由于get提交方式会有不合法字符,本机不会出现问题,但其它电脑访问会有问题。改成post提交。
③easyui主显示界面里的超链接新开选项卡问题。只能新开一个浏览器页面。mainframe.jsp固定好了。
2017-05-05~08
①渠道导航功能新增删除项,包含对应文件文件夹的删除,三张表的级联删除,子项有空内容提示是否都删除。
②界面完善,每个界面都包含其它界面导航。
③新增验证,包括数字,字母,中文等等,查询用户名,文件夹名是否已存在
2017-05-09~11
①多线程抓取因网速等原因线程卡主问题。原部分代码
for(int i=0;i<10;i++){
new Thread(new Runnable() {
@Override
public void run() {
while(true){
String url=getUrl();
if(url!=null){
System.out.println("线程"+Thread.currentThread().getName()+"在抓取 !");
newsService.scrab(prefix, url);
}else{
long end = System.currentTimeMillis();
System.out.println("总共耗时"+(end-start)/1000+"秒");
break;
}
}
}
},"thread"+i).start();
}
设定超时线程pass代码
public class ThreadTester {
public static void main(String[] args) throws InterruptedException {
Thread t1 = new Thread(new ThreadTesterA());
Thread t2 = new Thread(new ThreadTesterB());
t1.start();
t1.join(100000);
if(t1.isAlive()){
t1.stop();
System.out.println("hyyyyyyyyyyyyyyyyyyyyyy");
}
System.out.println(t1.interrupted()+" aaa ");
}
}
class ThreadTesterA implements Runnable {
private int a;
@Override
public void run() {
while (a <= 5000) {
System.out.print("a = " + a + " ");
a++;
}
System.out.println();
}
}
由于源代码是自己调用自己,所以要把线程和调用方法分开才能join计时,然而由于spring框架new对象不受管理问题,
Thread t1 = new Thread(new ThreadTesterA());
解决不了,后面的分析html程序一直报空指针异常。有待解决。
③每天抓到的图片存放在不同日期文件夹下。
2017-05-15~19
①朱总项目的统计功能package com.bll;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.dao.HibernateSessionFactory;
import com.model.Stockitem;
import com.model.TbCommodity;
public class Statisticbll {
static Query query;
static Query query1;
private HttpServletRequest request;
// 获得本月第一天0点时间
public static Date getTimesMonthmorning() {
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
return cal.getTime();
}
public List<TbCommodity> gettodaylist(int start, int number,String time){
SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd");
Date date = new Date();
String dateString = form.format(date);
long times= date.getTime();
//获取7天的毫秒数
long sevenTime = 7*24*60*60*1000;
//当前时间毫秒数-7天的毫秒数=7天之间那天的毫秒数
long timess = times - sevenTime;
//将毫秒数转日期
Date dat=new Date(timess);
String dateString7 = form.format(dat);
Calendar cal = Calendar.getInstance();
//下面的就是把当前日期加一个月
cal.add(Calendar.MONTH,-1);
String dateString30 = form.format(cal.getTime());
//获取本月第一天
String monthstart = getTimesMonthmorning().toLocaleString();
String today = new Date().toLocaleString();
Session session = HibernateSessionFactory .getSession();
List<TbCommodity> list = null;
List list1 = null;
if(time.equals("a")){
query = session.createQuery("from TbCommodity Where date_format(createTime ,'%Y-%m-%d' )=:dateString group by commodityCode " );
query.setParameter("dateString",dateString );
query1 = session.createQuery("SELECT COUNT(*) from TbCommodity Where date_format(createTime ,'%Y-%m-%d' )=:dateString GROUP BY commodityCode ");
query1.setParameter("dateString",dateString );
}else if(time.equals("b")){
query = session.createQuery("from TbCommodity Where date_format(createTime ,'%Y-%m-%d' ) between '"+dateString7+"' and '"+dateString+"' group by commodityCode" );
query1 = session.createQuery("SELECT COUNT(*) from TbCommodity Where date_format(createTime ,'%Y-%m-%d' ) between '"+dateString7+"' and '"+dateString+"' GROUP BY commodityCode ");
}else if(time.equals("c")){
query = session.createQuery("from TbCommodity Where date_format(createTime ,'%Y-%m-%d' ) between '"+dateString30+"' and '"+dateString+"' group by commodityCode" );
query1 = session.createQuery("SELECT COUNT(*) from TbCommodity Where date_format(createTime ,'%Y-%m-%d' ) between '"+dateString30+"' and '"+dateString+"' GROUP BY commodityCode ");
}else if(time.equals("d")){
query = session.createQuery("from TbCommodity Where createTime between '"+monthstart+"' and '"+today+"' group by commodityCode" );
query1 = session.createQuery("SELECT COUNT(*) from TbCommodity Where createTime between '"+monthstart+"' and '"+today+"' GROUP BY commodityCode ");
}
list1 = query1.list();
list = query.list();
for(int i=0;i<list.size();i++){
list.get(i).setCodeamount((Long) list1.get(i));
}
query.setFirstResult(start);
query.setMaxResults(number);
session.clear();
session.close();
return list;
}
public int gettodaycount(int start, int number,String time){
int i =gettodaylist(start, number,time).size();
return i;
}
}
②皇家书法页面,表单提交,页面list展示,时间查询导出Excel
合并单元格代码:
输出Excelsheet.addMergedRegion(new Region(0,(short)0,0,(short)1));
③登录验证,包括短信验证码,各种格式验证,cookie刷新页面60s倒计时不会刷新***String updateTime = new SimpleDateFormat("yyyy-MM-dd").format(new Date()).toString(); //输出Excel文件 OutputStream output=response.getOutputStream(); // FileOutputStream output=new FileOutputStream("d:\\workbook.xls"); response.reset(); response.setHeader("Content-disposition", "attachment; filename="+updateTime+" Order.xls"); response.setContentType("application/msexcel"); wb.write(output); output.close();
String verifyCode = MD5EncryptDecrypt.RandPassword(6);
String content = "尊敬的故乡农情手机用户您好,您的验证码为"+verifyCode;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("http://sms.pica.com/zqhdServer/sendSMS.jsp?");
stringBuilder.append("regcode=ZXHD-CRM-0100-XIWPXW&");
stringBuilder.append("pwd="+MD5EncryptDecrypt.MD5("78358849").toLowerCase());
stringBuilder.append("&phone="+telephone);
String conString = URLEncoder.encode(content,"gbk");
stringBuilder.append("&CONTENT="+conString);
stringBuilder.append("&extnum=&level=1&schtime=&reportflag=1&url=&smstype=4&hardKEY=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
try {
URL url=new URL(stringBuilder.toString());
URLConnection conn = url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuffer readOneLineBuff = new StringBuffer();
String retval ="";
String line = "";
while ((line = reader.readLine()) != null) {
readOneLineBuff.append(line);
}
retval = readOneLineBuff.toString();
reader.close();
// return retval;
} catch (Exception e) {
e.printStackTrace();
}
2017-05-20~06-01
①app端接口,与网页端后台无异,返回json数据,只是多了个页面提示信息功能。
Map<String, Object> map=new HashMap<String, Object>();
map.put("buyList", Relation);
JsonConfig config=new JsonConfig();
config.registerJsonValueProcessor(Timestamp.class,new SupplierSystemRestServer.dao.JsonDateValueProcessor());
JSONObject jsonArray = JSONObject.fromObject(map,config);
②聚宝所网站,主要是页面间的处理,样式等问题。关于注册验证方面采用了validform验证,但ajaxurl方面存在一些问题。