package com.bonus.newSettlement.controller; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.multipart.MultipartFile; import com.bonus.exp.POIOutputHelper; import com.bonus.newSettlement.beans.MaTypeProjectStorageBean; import com.bonus.newSettlement.beans.ProjectSettlementInfoBean; import com.bonus.newSettlement.service.MaTypeProjectStorageService; import com.bonus.newSettlement.service.ProjectSettlementInfoService; import com.bonus.sys.AjaxRes; import com.bonus.sys.BaseController; import com.bonus.sys.GlobalConst; import com.bonus.sys.Page; import com.bonus.sys.UserShiroHelper; import com.bonus.sys.beans.UserBean; import com.bonus.sys.dao.FileUploadInfoDao; import com.bonus.sys.service.FileUploadService; import com.bonus.sys.service.UserService; @Controller @RequestMapping("/backstage/projectSettlement/") public class ProjectSettlementInfoController extends BaseController { @Autowired FileUploadInfoDao dao; @Autowired FileUploadService fservice; @Autowired ProjectSettlementInfoService service; @Autowired MaTypeProjectStorageService psService; @Autowired UserService userService; /* zwc * 结算文件上传 */ @RequestMapping("imgSllt") public String imgSllt(Model model, HttpServletRequest req) { return "/newSettlement/imgSllt"; } @RequestMapping("list") public String settlementList(Model model) { return "/newSettlement/projectSettlementManagement"; } @RequestMapping("uploadFileUrl") public String uploadFile(Model model) { return "/newSettlement/newSettlementFile"; } @RequestMapping("toSettle") public String toSettle(Model model) { return "/newSettlement/toSettleList"; } @RequestMapping("findSettleContent") public String findSettleContent(@RequestBody Page page, ProjectSettlementInfoBean o, Model model) { page = service.findSettleContent(page, o); model.addAttribute("page", page); return "/newSettlement/toSettleContentList"; } @RequestMapping("updateSettleSta") @ResponseBody public AjaxRes updateSettleSta(@RequestBody ProjectSettlementInfoBean o, Model model) { AjaxRes ar = getAjaxRes(); Integer res = 0; res = service.updateSettleSta(o); if (res == 1) { ar.setSucceedMsg("确认结算成功!"); } else { ar.setFailMsg("结算失败!"); } return ar; } /** * @Author js * @Date 2020-06-11 * @function 工程结算列表 * @param o * @return */ @RequestMapping("findByPage") public String getSettlementList(@RequestBody Page page, ProjectSettlementInfoBean o, Model model) { try { UserBean user = UserShiroHelper.getRealCurrentUser(); String companyId = user.getCompanyId(); o = page.getObj(); o.setOrgId(companyId); page = service.findByPage(o, page); model.addAttribute("page", page); } catch (Exception e) { e.printStackTrace(); } return "/newSettlement/projectSettlementList"; } /** * @Author js * @Date 2020-06-11 * @function 跳转新增结算页面 * @param o * @return */ @RequestMapping("addPage") public String addPage(Model model) { return "/newSettlement/addProjectSettlement"; } /** * @Author js * @Date 2020-06-11 * @function 工程结算列表 * @param o * @return */ @RequestMapping("findUnSltMaTypeList") public String findUnSltMaTypeList(@RequestBody MaTypeProjectStorageBean o, Model model) { try { List list = psService.findUnSltMaTypeList(o); model.addAttribute("list", list); } catch (Exception e) { e.printStackTrace(); } return "/newSettlement/unSltMaTypeList"; } /** * 生成结算 * * @param page * @param o * @return * @date 2020-06-11 * @author js */ @RequestMapping(value = "insertSlt", method = RequestMethod.POST) @ResponseBody public AjaxRes insertSlt(@RequestBody ProjectSettlementInfoBean o) { AjaxRes ar = getAjaxRes(); try { int a = service.insertSlt(o); if (a > 0) { ar.setSucceedMsg("结算任务添加成功!"); } } catch (Exception e) { logger.error(e.toString(), e); ar.setFailMsg("新增失败!"); } return ar; } /** * @Author js * @Date 2020-06-12 * @function 查看结算列表 * @param o * @return */ @RequestMapping("view") public String viewSettlementInfo(ProjectSettlementInfoBean o, Model model) { try { ProjectSettlementInfoBean bean = service.findSettlementInfoById(o); List baseList = service.findBaseInfoById(o); List maList = service.findMaInfoById(o); model.addAttribute("bean", bean); model.addAttribute("baseList", baseList); model.addAttribute("maList", maList); } catch (Exception e) { e.printStackTrace(); } return "/newSettlement/viewSettlementInfo"; } /** * @Author js * @Date 2020-06-12 * @function 查看结算列表 * @param o * @return */ @RequestMapping("print") public String printSettlementInfo(ProjectSettlementInfoBean o, Model model) { try { ProjectSettlementInfoBean bean = service.findSettlementInfoById(o); List baseList = service.findBaseInfoById(o); List maList = service.findMaInfoById(o); model.addAttribute("bean", bean); model.addAttribute("baseList", baseList); model.addAttribute("maList", maList); } catch (Exception e) { e.printStackTrace(); } return "/newSettlement/printSettlementInfo"; } @RequestMapping(value = "export") @ResponseBody public void export(HttpServletRequest request, HttpServletResponse response, MaTypeProjectStorageBean o) { try { String ids = request.getParameter("iddl"); String[] a = ids.split(";"); List list = psService.findUnSltMaTypeLists(o); // 唯一主键 for (int i = 0; i < a.length; i++) { String[] b = a[i].split(","); for (int j = 0; j < list.size(); j++) { if (list.get(j).getId().toString().equals(b[0])) { list.get(j).setSt(b[2]); list.get(j).setDl(b[1]); } } } expOutExcel1(response, list, "工程租赁费结算"); } catch (Exception e) { logger.error(e.toString(), e); } } private void expOutExcel1(HttpServletResponse response, List list, String filename) throws Exception { if (list != null) { List> results = new ArrayList>(); int size = list.size(); for (int i = 0; i < size; i++) { MaTypeProjectStorageBean bean = list.get(i); Map maps = outCheckToMap(i, bean); results.add(maps); } List headers = reportHeader(); HSSFWorkbook workbook = POIOutputHelper.excel(results, headers, filename); OutputStream out = null; response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filename, "UTF-8") + ".xls"); response.setHeader("Pragma", "No-cache"); out = response.getOutputStream(); workbook.write(out); out.flush(); out.close(); } } private Map outCheckToMap(int i, MaTypeProjectStorageBean o) { Map maps = new LinkedHashMap(); maps.put("id", i + 1); String parentName = ""; if (o.getType() != null) { parentName = o.getType().getParentName(); } maps.put("parentName", parentName); String name = ""; if (o.getType() != null) { name = o.getType().getName(); } maps.put("name", name); Float num; String unit = ""; if (o.getType() != null) { unit = o.getType().getUnit(); } num = o.getNum(); unit = num + "" + unit; maps.put("unit", unit); String deviceCode = ""; if (o.getMachine() != null) { deviceCode = o.getMachine().getDeviceCode(); } maps.put("deviceCode", deviceCode); maps.put("price", o.getPrice()); maps.put("startDate", o.getStartDate()); String status = o.getStatus().toString(); if ("1".equals(status)) { status = "在用"; } else { status = "已退租"; } maps.put("status", status); maps.put("backDate", o.getBackDate()); maps.put("lastSltDate", o.getLastSltDate()); /* * String[] b = o.getSt(); for(int a =0;a reportHeader() { ArrayList list = new ArrayList(); list.add("序号"); list.add("机具名称"); list.add("机具规格"); list.add("数量(单位)"); list.add("设备编码"); list.add("租赁单价"); list.add("起租日期"); list.add("状态"); list.add("退租日期"); list.add("上次结算日期"); list.add("结算时常"); list.add("小计金额(元)"); return list; } @RequestMapping(value = "uploadFile", method = RequestMethod.POST) @ResponseBody public AjaxRes uploadFile(HttpServletRequest request, ProjectSettlementInfoBean o) { AjaxRes ar = getAjaxRes(); try { service.uploadFile(request, o); ar.setSucceedMsg(GlobalConst.UPLOAD_SUCCEED); } catch (Exception e) { logger.error(e.toString(), e); ar.setFailMsg(GlobalConst.UPLOAD_FAIL); } return ar; } public HttpServletResponse downloadLocal(HttpServletResponse response,HttpServletRequest request, ProjectSettlementInfoBean o) throws FileNotFoundException, Exception { ProjectSettlementInfoBean bean = service.findSettlementFileUrlById(o); String fileUrl = bean.getFileUrl(); String oldFileUrl = bean.getOldFileUrl(); System.err.println("oldFileUrl=="+oldFileUrl); // 文件存放的路径 fileUrl = request.getSession().getServletContext().getRealPath("/ProjectSettlementInfoFile") + fileUrl.toString(); // fileUrl = "e:\\PowerEnterprises\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp1\\wtpwebapps\\GZMachinesWeb\\ProjectSettlementInfoFile\\" // + fileUrl.toString(); // 文件的默认保存名 System.err.println(fileUrl); response.setContentType("text/html;charset=UTF-8"); File file = new File(fileUrl); BufferedInputStream bis = new BufferedInputStream(new FileInputStream(fileUrl)); BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream()); try{ long fileLength = file.length(); String fileName = file.getName(); System.err.println("fileName=="+fileName); response.setContentType("application/vnd.ms-excel;charset=UTF-8"); response.addHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(oldFileUrl, "UTF-8")); response.setHeader("Content-Length", String.valueOf(fileLength)); byte[] buff = new byte[2048]; int bytesRead; while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) { bos.write(buff, 0, bytesRead); } bos.flush(); bos.close(); return response; } catch (IOException e) { e.printStackTrace(); return response; }finally { bis.close(); if(bis != null){ bis.close(); } } } @RequestMapping(value = "downloadDocument") @ResponseBody public void download(HttpServletResponse response,HttpServletRequest request, ProjectSettlementInfoBean o) throws Exception{ try { ProjectSettlementInfoBean bean = service.findSettlementFileUrlById(o); String fileUrl = bean.getFileUrl(); fileUrl = request.getSession().getServletContext().getRealPath("/ProjectSettlementInfoFile") + "/"+fileUrl.toString(); // path是指欲下载的文件的路径。 File file = new File(fileUrl); // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(fileUrl)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); // 设置response的Header response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileUrl, "UTF-8")); response.addHeader("Content-Length", "" + file.length()); OutputStream os = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); os.write(buffer); fis.close(); os.flush(); os.close(); } catch (Exception ex) { ex.printStackTrace(); } } @RequestMapping(value = "uploadImgSllt") @ResponseBody public Map upload(@RequestParam("file")MultipartFile file,ProjectSettlementInfoBean o,HttpServletRequest request){ String prefix=""; String dateStr=""; //保存上传 OutputStream out = null; InputStream fileInput=null; try{ if(file!=null){ String ids = request.getParameter("id"); Integer id =Integer.valueOf(ids).intValue(); o.setId(id); String fileName = file.getOriginalFilename(); Date date = new Date(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateStr = simpleDateFormat.format(date); //String filepath = "D:\\mycode\\machine\\images\\" + dateStr+"\\"+fileName; // String saveDirectory = request.getSession().getServletContext().getRealPath("/ProjectSettlementInfoFile"); String mkdirsName = "ProjectSettlementInfoFile"; // 机具管理-机具类型管理 String saveDirectory = "/data/gzimt/" + mkdirsName + "/"; // linux 系统路径 String os = System.getProperty("os.name"); if (os.toLowerCase().startsWith("win")) { saveDirectory = "e://GZMachinesWeb/" + mkdirsName + "/"; } File files = new File(saveDirectory); if (!files.exists()) { files.mkdirs(); } File dest=new File(files,fileName); file.transferTo(dest); //保存文件名文件路径 o.setFileUrl(fileName); List list = new ArrayList(); service.update(o); Map map2=new HashMap<>(); Map map=new HashMap<>(); map.put("code",0); map.put("msg",""); map.put("fileName",fileName); map.put("data",map2); map2.put("src","/images/"+ dateStr+"/"+fileName); return map; } }catch (Exception e){ logger.error(e.toString(),e); }finally{ try { if(out!=null){ out.close(); } if(fileInput!=null){ fileInput.close(); } } catch (IOException e) { } } Map map=new HashMap<>(); map.put("code",1); map.put("msg",""); return map; } }