package com.fgkj.services; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import com.fgkj.dao.BaseDAO; import com.fgkj.dao.BaseDAOFactory; import com.fgkj.dao.DAOHelper; import com.fgkj.dao.impl.Battresdata_infDAOImpl; import com.fgkj.dao.impl.Batttestdata_infDAOImpl; import com.fgkj.dto.BattInf; import com.fgkj.dto.Battresdata_inf; import com.fgkj.dto.Batttestdata_inf; import com.fgkj.dto.Com; import com.fgkj.dto.ServiceModel; import com.fgkj.fbo.CsvData; import com.fgkj.fbo.FboDataInf; public class FileService { private ServiceModel model; private BaseDAO dao; private BaseDAO daoAgain; private BaseDAO daoThird; public FileService() { model = new ServiceModel(); dao = BaseDAOFactory.getBaseDAO(BaseDAO.BATTINF); daoAgain = BaseDAOFactory.getBaseDAO(BaseDAO.BATTTESTDATA_INF); daoThird = BaseDAOFactory.getBaseDAO(BaseDAO.BATTRESDATA_INF); } private String[] unuploadReasonFbo = new String[] { "无", "已经存在该数据", "标称容量不符合", "单体数量不符合", "标称单体电压不符合", "放电时长不够", }; //res不能上传原因 private String[] unuploadReasonRes = new String[] { "无", "已经存在该数据", "标称容量不符合", "单体数量不符合", "标称单体电压不符合", "放电时长不够", "找不到目标电池组", "数据格式不支持", }; // 返回Fbo上传后显示的数据 public ServiceModel addBattDataToTable(int bg_id, String file_name, FboDataInf data_inf, int data_block_count) { Calendar mcld = Calendar.getInstance(); mcld.set(Calendar.YEAR, 2000 + data_inf.TestStartTime.year); mcld.set(Calendar.MONTH, data_inf.TestStartTime.month); mcld.set(Calendar.DATE, data_inf.TestStartTime.day); mcld.set(Calendar.HOUR_OF_DAY, data_inf.TestStartTime.hour); mcld.set(Calendar.MINUTE, data_inf.TestStartTime.minute); mcld.set(Calendar.SECOND, data_inf.TestStartTime.second); //System.out.println("addBattDataToTable "+DAOHelper.sdf.format(mcld.getTime())); Date test_starttime = mcld.getTime(); //System.out.println("test_starttime: " + test_starttime); boolean data_ok = true; int data_reason_type = 0; BattInf binf = new BattInf(); Batttestdata_inf tdata = new Batttestdata_inf(); binf.setBattGroupId(bg_id); tdata.setBattGroupId(bg_id); tdata.setTest_starttime(test_starttime); float batt_cap = 0f; int mon_count = 0; float mon_vol = 0f; List 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 listT = ((Batttestdata_infDAOImpl) daoAgain) .serchTest_record_count(tdata); if (listT != null && listT.size() > 0) { // int test_record_count = listT.get(0).getTest_record_count(); data_reason_type = 1; } if (0 == data_reason_type) { if (batt_cap != data_inf.STDCap) { data_reason_type = 2; } else if (mon_count != data_inf.BattSum) { data_reason_type = 3; } else if (mon_vol != data_inf.MonomerVol) { data_reason_type = 4; } } if (data_reason_type > 0) { data_ok = false; } List list = new ArrayList(); list.add(String.valueOf(bg_id)); list.add(file_name); list.add(data_ok); list.add(unuploadReasonFbo[data_reason_type]); list.add(false); list.add(0); list.add(String.valueOf(data_inf.STDCap)); list.add(String.valueOf(data_inf.BattSum)); list.add(String.valueOf(data_inf.MonomerVol)); list.add(FboDataInf.getTestType(data_inf.DataType)); list.add(FboDataInf.getDeviceType(data_inf.Device)); list.add(Com.get_DTF(mcld.getTime(), Com.DTF_YMDhms)); list.add(+data_inf.TestTimeLong.hour + ":" + data_inf.TestTimeLong.minute + ":" + data_inf.TestTimeLong.second); list.add(String.format("%1.1f", data_inf.TestCur)); list.add(String.format("%1.0f", data_inf.TestCap)); list.add(String.valueOf(data_inf.SaveInterval)); list.add(String.valueOf(data_block_count)); list.add(String.valueOf(data_inf.SMinIndex[0] + 1)); list.add(String.format("%1.3f", data_inf.SMinVol[0])); list.add(FboDataInf.getStopType(data_inf.StopType)); if (list.size() > 0) { model.setCode(1); model.setData(list); } else { model.setCode(0); } return model; } //返回Res上传后显示的数据 public ServiceModel addResDataToTable(int bg_id, String file_name, CsvData res_data) { Calendar mcld = Calendar.getInstance(); mcld.setTime(res_data.m_TestTime); Date test_starttime=mcld.getTime(); boolean data_ok = true; int data_reason_type = 0; if(false == res_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 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 listR=((Battresdata_infDAOImpl)daoThird).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 != res_data.m_BattSum) { data_reason_type = 3; } else if(mon_vol != res_data.m_MonomerVol) { data_reason_type = 4; } } if(data_reason_type > 0) { data_ok = false; } //System.out.println("m_TestType="+res_data.m_TestType+"m_DevType="+res_data.m_DevType); List list = new ArrayList(); list.add(String.valueOf(bg_id)); list.add(file_name); list.add(data_ok); list.add(unuploadReasonRes[data_reason_type]); list.add(false); list.add(0); list.add(String.valueOf(batt_cap)); list.add(String.valueOf(res_data.m_BattSum)); list.add(String.valueOf(res_data.m_MonomerVol)); list.add(FboDataInf.getTestType(res_data.m_TestType)); list.add(FboDataInf.getDeviceType(res_data.m_DevType)); list.add(Com.get_DTF(mcld.getTime(), Com.DTF_YMDhms)); list.add(String.valueOf(res_data.m_MinNum)); list.add(String.format("%1.0f", res_data.m_MinValue)); if(list.size()>0){ model.setCode(1); model.setData(list); }else{ model.setCode(0); } return model; } }