package com.fgkj.services;
|
|
import java.io.File;
|
import java.util.Calendar;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.servlet.http.HttpSession;
|
|
import com.fgkj.actions.ActionUtil;
|
import com.fgkj.dao.BaseDAO;
|
import com.fgkj.dao.BaseDAOFactory;
|
import com.fgkj.dao.impl.Battresdata_infDAOImpl;
|
import com.fgkj.dao.impl.Batttestdata_infDAOImpl;
|
import com.fgkj.dao.impl.ResDataUploadImpl;
|
import com.fgkj.dto.BattInf;
|
import com.fgkj.dto.Battresdata_inf;
|
import com.fgkj.dto.Batttestdata_inf;
|
import com.fgkj.dto.DLG_Progress;
|
import com.fgkj.dto.ServiceModel;
|
import com.fgkj.dto.User_inf;
|
import com.fgkj.fbo.CsvData;
|
import com.fgkj.fbo.FboDataInf;
|
|
public class ResDataUploadService extends Thread{
|
private ServiceModel model;
|
private User_inf uinf;
|
private int bg_id;
|
private String[][] tableRowData;
|
private File[] file;
|
private HttpSession session;
|
private DLG_Progress progress;
|
|
|
public ResDataUploadService(
|
User_inf uinf,
|
int bg_id,
|
String[][] tableRowData,
|
File[] file,
|
HttpSession session) {
|
this.model = new ServiceModel();
|
this.uinf = uinf;
|
this.bg_id = bg_id;
|
this.tableRowData=tableRowData;
|
this.file=file;
|
this.session=session;
|
progress=new DLG_Progress(true,false);
|
progress.setTableData(tableRowData);
|
progress.setTotal(file.length);
|
session.setAttribute("Resprogress", progress);
|
}
|
|
public void run(){
|
for(int n=0; n<tableRowData.length; n++)
|
{
|
if(false == progress.isJudge())
|
{
|
break;
|
}
|
|
if("false".equals(tableRowData[n][2])) //是否能上传
|
{
|
continue;
|
}
|
if("true".equals(tableRowData[n][4])) //是否已上传
|
{
|
continue;
|
}
|
//m_UploadCount++;
|
CsvData res_data = new CsvData();
|
File f = file[n];
|
if (tableRowData[n][1].toUpperCase().endsWith(".CSV")) {
|
res_data.checkCsvFile(f);
|
} else if (tableRowData[n][1].toUpperCase().endsWith(".FGXLS")) {
|
res_data.checkFgxlsFile(f);
|
}else if(tableRowData[n][1].toUpperCase().endsWith(".XML")){
|
res_data.checkXmlFile(f);
|
}
|
int bg_id = Integer.parseInt((String)tableRowData[n][0]);
|
// if(!FileisUpload(bg_id,res_data)){
|
// continue;
|
// }
|
//System.out.println("正在上传");
|
boolean res = new ResDataUploadImpl().uploadResData(uinf, bg_id, res_data,
|
tableRowData[n], progress.isJudge());
|
|
if(true==res){
|
System.out.println(f.getName());
|
tableRowData[n][4]="true";
|
tableRowData[n][5]="100";
|
progress.setUploadOkcount(progress.getUploadOkcount()+1);
|
|
}
|
|
}
|
for(File fl:file){
|
if(fl.exists()){
|
fl.delete();
|
}
|
}
|
|
progress.setCompleteed(true);
|
progress.setJudge(false);
|
}
|
|
//判断当前文件能否上传
|
|
/**
|
*
|
* @param bg_id 电池组名
|
* @param CsvData csv_data 上传数据
|
* @return true :能上传 false:不能上传
|
*/
|
public boolean FileisUpload(int bg_id,CsvData csv_data) {
|
BaseDAO dao = BaseDAOFactory.getBaseDAO(BaseDAO.BATTINF);
|
BaseDAO daoAgain = BaseDAOFactory.getBaseDAO(BaseDAO.BATTRESDATA_INF);
|
Calendar mcld = Calendar.getInstance();
|
mcld.setTime(csv_data.m_TestTime);
|
|
Date test_starttime=mcld.getTime();
|
|
boolean data_ok = true;
|
int data_reason_type = 0;
|
|
if(false == csv_data.m_DataOk) {
|
data_reason_type = 7;
|
}
|
BattInf binf=new BattInf();
|
Battresdata_inf rinf=new Battresdata_inf();
|
binf.setBattGroupId(bg_id);
|
rinf.setBattGroupId(bg_id);
|
rinf.setTest_starttime(test_starttime);
|
float batt_cap=0f;
|
int mon_count=0;
|
float mon_vol=0f;
|
if(0 == data_reason_type) {
|
List<BattInf> listB=dao.serchByCondition(binf);
|
if(listB!=null&&listB.size()>0){
|
batt_cap = listB.get(0).getMonCapStd();
|
mon_count = listB.get(0).getMonCount();
|
mon_vol = listB.get(0).getMonVolStd();
|
}
|
List<Battresdata_inf> listR=((Battresdata_infDAOImpl)daoAgain).serchTest_record_count(rinf);
|
if(listR!=null&&listR.size()>0){
|
int test_record_count = listR.get(0).getTest_record_count();
|
data_reason_type = 1;
|
}
|
//******************************************************************//
|
if(bg_id < 1) {
|
data_reason_type = 6;
|
} else if(mon_count != csv_data.m_BattSum) {
|
data_reason_type = 3;
|
} else if(mon_vol != csv_data.m_MonomerVol) {
|
data_reason_type = 4;
|
}
|
}
|
|
if(data_reason_type > 0) {
|
data_ok = false;
|
}
|
return data_ok;
|
}
|
}
|