- 论坛徽章:
- 0
|
public String importExcel() {
HttpServletRequest request = ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
ServletContext sc = request.getSession().getServletContext();
RequestDispatcher rd = null;
response.setContentType("text/html;charset=gbk");
Employee employee = ((Employee) session.get("employee"));
String pageInfo = "";
// 权限处理,用于上传做判断
List listVillageCode = getEqualsVillageCode(employee);
RelaRoleEmp emp = this.pro10kvBiz.selEntity(employee);
Integer roleid = emp.getRole().getRoleId();
RelaRoleFlow flow = this.pro10kvBiz.selRelaEntity(roleid);
Long flowid = flow.getId().getRelaFlowId();
Workflowdefine workflowdefine = this.pro10kvBiz.selWorkEntity(flowid);
Long step = Long.parseLong(workflowdefine.getStep().toString());
PrintWriter out = null;
List<Pro10kv> list = new ArrayList<Pro10kv>();
java.text.DecimalFormat formatter1 = new java.text.DecimalFormat(
"##.###");
int arra = 0;
int arrj = 0;
try {
HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet sheet = wookbook.getSheetAt(0); //读取第一页,一般一个excel文件会有三个工作表,这里获取第一个工作表来进行操作
int rows = sheet.getPhysicalNumberOfRows();
AnalysisExcel ae = new AnalysisExcel();
List<CellRangeAddress> celllList = ae.getCombineCell(sheet);
// 从第7行开始读取数据
String proTypeOne = "";
for (int i = 6; i < rows; i++) {
HSSFRow row = sheet.getRow(i); //创建一个行对象
if (row != null) {
arra = i + 1;
String value = "";
HSSFCell celltemp = row.getCell(3);
if(celltemp == null)
{
continue;
}
else
{
String cellStr = celltemp.getStringCellValue();
if("单项合计".equals(cellStr))
{
HSSFRow temprow = sheet.getRow(i);
proTypeOne = ae.getCellValue2(temprow.getCell(2));
if(null != proTypeOne)
proTypeOne = proTypeOne.substring(proTypeOne.indexOf("、")+1);
}
if("单项合计".equals(cellStr) || "".equals(cellStr) || "子项合计".equals(cellStr))
{
continue;
}
}
for (int j = 0; j < 27; j++) {
HSSFCell cell = row.getCell(j);
String str = "";
boolean cellBoolean = ae.decodeMergeCell(sheet, i, j);
if(cellBoolean)
{
cell = row.getCell(j);
str = cell.getStringCellValue();
}
if(j == 2)
{
value += proTypeOne; // 获取项目一级类别
}
else if (null != cell) {
value += ae.getCellValue2(cell,formatter1);
} else {
value += "-,,,";
}
}
Pro10kv pro10kv = new Pro10kv();
String query = value.substring(0, value.length() - 1);
String[] arrs = query.split(",,,");
out = response.getWriter();
for (int j = 0; j < arrs.length; j++) {
if(!"-".equals(arrs[3]))
if (j == 4 || j == 5 || j == 23 || j == 24 || j == 25)
{
if("-".equals(arrs[j]))
{
pageInfo = "第"+arra+"行第"+j+"列记录未填写完整,<br>请重新检查数据!";
request.setAttribute("pageInfo", pageInfo);
rd = sc.getRequestDispatcher("/importFile.jsp");
rd.forward(request, response);
return null;
}
}
}
String villageCode1 = arrs[4]; // 村编号
Area aa = areaBiz.findByAreaId(Long.parseLong(villageCode1));
// 判断村编号
if (aa == null) {
pageInfo = "第"+arra+"行村编号不存在!";
request.setAttribute("pageInfo", pageInfo);
rd = sc.getRequestDispatcher("/importFile.jsp");
rd.forward(request, response);
return null;
}
// 权限范围内的村编号比较
boolean isJudge = false;
for (int village_Temp = 0; village_Temp < listVillageCode
.size(); village_Temp++) {
Map mp_Temp = (Map) listVillageCode.get(village_Temp);
String temp = mp_Temp.get("AREA_ID").toString();// 权限内的编号
int temp_len = temp.length(); // 编号长度
String villageCode = arrs[4].substring(0, temp_len);// xls中的村编号取比较长度
if (temp.equals(villageCode)) {
isJudge = true;
break;
}
}
if (isJudge) {
pro10kv.setProVillageCode(arrs[4]);// 村编号
} else {
pageInfo = "第"+arra+"行记录越权,<br>请重新检查数据!";
request.setAttribute("pageInfo", pageInfo);
rd = sc.getRequestDispatcher("/importFile.jsp");
rd.forward(request, response);
return null;
}
pro10kv = setPro10kv(pro10kv,arrs);
pro10kv.setProStatus(step);
Pro10kv pro10kvffff = pro10kvBiz.selPro10kv(pro10kv);
if(null != pro10kvffff)
{
pageInfo = "第"+arra+"行数据已存在,<br>请勿重复导入!";
request.setAttribute("pageInfo", pageInfo);
rd = sc.getRequestDispatcher("/importFile.jsp");
rd.forward(request, response);
return null;
}
pro10kv.setProjectLibrary(0);
list.add(pro10kv);
}
}
boolean flag = false;
String proProjectNameFlag = "";
for(int i = 0; i < list.size()-1&& !flag ; i++ )
{
Pro10kv pro1 = list.get(i);
String pro1ProjectName = pro1.getProProjectName();
String pro1ProVillageCode = pro1.getProVillageCode();
String pro1ProInvestAttribute = pro1.getProInvestAttribute();
String pro1ProYear = pro1.getProYear();
for(int j = list.size()-1; j > i; j-- )
{
Pro10kv pro2 = list.get(j);
String pro2ProjectName = pro2.getProProjectName();
String pro2ProVillageCode = pro2.getProVillageCode();
String pro2ProInvestAttribute = pro2.getProInvestAttribute();
String pro2ProYear = pro2.getProYear();
if(pro1ProjectName.equals(pro2ProjectName) && pro1ProVillageCode.equals(pro2ProVillageCode)
&& pro1ProInvestAttribute.equals(pro2ProInvestAttribute) && pro1ProYear.equals(pro2ProYear))
{
proProjectNameFlag = pro1ProjectName;
flag = true; // 跳出外层
break;
}
}
}
if(flag)
{
pageInfo = "当前表中数据重复!<br>重复数据的项目名称为:"+proProjectNameFlag;
request.setAttribute("pageInfo", pageInfo);
rd = sc.getRequestDispatcher("/importFile.jsp");
rd.forward(request, response);
return null;
}
for (Pro10kv pro : list) {
this.pro10kvBiz.addPro10kv(pro);
}
pageInfo = "success";
request.setAttribute("pageInfo", pageInfo);
rd = sc.getRequestDispatcher("/importFile.jsp");
rd.forward(request, response);
} catch (Exception e) {
e.printStackTrace();
}
return null;
} |
|