package com.fuzamei.web; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.URLEncoder; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; 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.alibaba.fastjson.JSON; import com.fuzamei.constant.HintMSG; import com.fuzamei.constant.Role; import com.fuzamei.entity.AccountInfo; import com.fuzamei.entity.BusinessCheck; import com.fuzamei.entity.CapitalTransfer; import com.fuzamei.entity.CapitalTransferCheck; import com.fuzamei.entity.UserDetail; import com.fuzamei.service.AttachmentService; import com.fuzamei.service.CapitalTransferService; import com.fuzamei.service.UserAuthoricationService; import com.fuzamei.utils.JSONUtil; import com.fuzamei.utils.PageDTO; import com.fuzamei.utils.ValidationUtil; @Controller @RequestMapping(value = "CapitalTransfer") public class CapitalTransferAction { @Autowired private CapitalTransferService capitalTransferService; @Autowired private UserAuthoricationService userAuthoricationService;//参数校验 权限授权 @Autowired private AttachmentService attachmentService; private static final int ROW_NUM = 10; // 分页每页显示数据的数量 private static final String SP = File.separator;//分隔符 /** * 查询资金划转表 省分行托管中心指令业务岗 * @param * @param * @throws Exception */ /* @RequestMapping(value = "/selectCapitalTransfer", method = RequestMethod.POST) @ResponseBody public Map selectCapitalTransfer(@RequestBody String data) { //System.out.println("查询资金划转列表数据"); Map mapResult = new LinkedHashMap(); Map map = JSONUtil.jsonToMap(data); PageDTO pageDto=capitalTransferService.selectCapitalTransferTable(map); mapResult = JSONUtil.getJsonMap(200, true, "操作成功", pageDto); return mapResult; }*/ /** * 各个岗位查看资金划转记录 (列表) * @param data * @return * { "userId":"7000", "page":"1", "status_name":"", "fund_name":"", "startTime":"", "endTime":"" } */ @RequestMapping(value = "/selectCapitalTransfer", method = RequestMethod.POST) @ResponseBody public Map selectCapitalTransfer(@RequestBody String data) { //System.out.println("查询资金划转列表数据"); try { @SuppressWarnings("unchecked") Map map = JSON.parseObject(data,Map.class);//将前端传过来的json数据转化为map对象,并将map对象传入service层进行数据校验 int userId=ValidationUtil.checkAndAssignInt(map.get("userId"));//首先校验用户权限问题 //UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId,Role.BUSINESS_CHIEF_POS_OF_PBBTBC,Role.BUSINESS_CHECK_POS_OF_PBBTBC,Role.BUSINESS_TRAN_POS_OF_PBBTBC); UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId);//暂时只传个userId 先给所有权限 int page = ValidationUtil.checkMinAndAssignInt(map.get("page"), 1); String fund_name=ValidationUtil.checkBlankStringAndAssignEmptyIfIsBlank(map.get("fund_name")); String status_name=ValidationUtil.checkBlankStringAndAssignEmptyIfIsBlank(map.get("status_name")); long startTime = ValidationUtil.checkAndAssignDefaultLong(map.get("startTime"), 0L); //开始时间默认0 long endTime = ValidationUtil.checkAndAssignDefaultLong(map.get("endTime"), Long.MAX_VALUE); //结束时间默认Long最大值 Map mapToService = new LinkedHashMap(); mapToService.put("userDetail", userDetail); mapToService.put("startPage", (page - 1) * ROW_NUM); mapToService.put("fund_name", fund_name); mapToService.put("status_name", status_name); //如果时间顺序错位,要重新进行排位 mapToService.put("startTime", startTime); if (startTime <= endTime) { mapToService.put("endTime", endTime); } else { mapToService.put("endTime", Long.MAX_VALUE); } mapToService.put("rowNum", ROW_NUM); // 默认每页显示数据是10条,可根据需求修改分页数量 PageDTO pageDto=capitalTransferService.selectCapitalTransferTableAll(mapToService); return JSONUtil.getJsonMap(200, true, HintMSG.QUERY_SUCCESS, pageDto); } catch (Exception e) { return JSONUtil.getJsonMap(500, false, HintMSG.QUERY_FAIL+":"+e.getMessage(), null); } } /** * 审核记录的查询,当用户点击查看按钮后,不仅显示了资金划转的信息,还显示了资金划转审核记录的信息,这里资金划转的信息直接从前端获取,审核记录根据前端提供的id号>fund_id来进行查询 * @param data * @return * { "fund_id":"1014", "userId":"7000" } */ @RequestMapping(value="/queryCapitalTransferCheckInformation",method=RequestMethod.POST) @ResponseBody private Map queryCapitalTransferCheckInformation(@RequestBody String data){ try { @SuppressWarnings("unchecked") Map map = JSON.parseObject(data, Map.class); //将前端传过来的json数据转化为map对象,并将map对象传入service层进行数据校验 //先校验用户权限问题 int userId=ValidationUtil.checkAndAssignInt(map.get("userId")); //查看用户非空和权限(只有【指令业务岗,核算岗和主管岗】有这个权限操作) //UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId,Role.BUSINESS_CHIEF_POS_OF_PBBTBC,Role.BUSINESS_CHECK_POS_OF_PBBTBC,Role.BUSINESS_TRAN_POS_OF_PBBTBC); UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId);//所有人都能 Integer fund_id =ValidationUtil.checkAndAssignInt(map.get("fund_id")); //被审核的业务id号需要先被进行校验 Map mapToService = new LinkedHashMap(); mapToService.put("userDetail", userDetail); mapToService.put("fund_id", fund_id); List capitalTransferCheckList =capitalTransferService.queryCapitalTransferCheckInformation(mapToService); return JSONUtil.getJsonMap(200, true, HintMSG.QUERY_SUCCESS, capitalTransferCheckList); } catch (Exception e) { return JSONUtil.getJsonMap(500, false, HintMSG.QUERY_FAIL+":"+e.getMessage(), null); } } /**{ "fund_id":"1002" postman 传id } 暂不用上面代替了 * 资金划转列表点击查看详情 * @param data * @return */ /* @RequestMapping(value="/selectChaKanZiJinHuaZhuan",method=RequestMethod.POST) @ResponseBody public Map selectChaKanZiJinHuaZhuan(@RequestBody String data){ //System.out.println("查看资金划转详情信息...."); Map map = JSONUtil.jsonToMap(data); //将前端传过来的json数据转化为map对象,并将map对象传入service层进行数据校验 Map map2= capitalTransferService.selectChaKanZiJinHuaZhuan(map); return JSONUtil.getJsonMap(200, true, "操作成功", map2); }*/ /** * 审核划转资金 * 审批流程审批意见 * @param data * @return * { 1003管理人,2018业务岗,2019核算岗,2020主管岗 "userId":"1003", "fund_id":"1012", "check_result":"5", "check_opinion":"批批批了" } */ @RequestMapping(value="/approvalCheckedByCapitaTtransfercheck",method=RequestMethod.POST) @ResponseBody private Map approvalCheckedByCapitaTtransfercheck(@RequestBody String data){ try { System.out.println("资金划转审核————>把审批意见添加到资金划转审核记录表信息...."); @SuppressWarnings("unchecked") Map map = JSON.parseObject(data, Map.class);//将前端传过来的json数据转化为map对象,并将map对象传入service层进行数据校验 //首先校验用户权限问题 int userId=ValidationUtil.checkAndAssignInt(map.get("userId"));//拿到用户id 来校验 //查看用户非空和权限(只有{省分行托管中心指令业务岗和省分行托管分中心核算岗和省分行托管中心主管岗}有这个权限操作) UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId,Role.ADMIN,Role.BUSINESS_TRAN_POS_OF_PBBTBC,Role.BUSINESS_CHECK_POS_OF_PBBTBC,Role.BUSINESS_CHIEF_POS_OF_PBBTBC); //UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId);//————》 待改动 这行是 没做权限的 //审核结果进行校验并赋值 Integer check_result = ValidationUtil.checkAndAssignInt(map.get("check_result")); if(!(check_result==5||check_result==6)){//通过or不通过 throw new RuntimeException("资金审核结果参数非法"); } //审核意见进行校验并赋值 String check_opinion = ValidationUtil.checkBlankAndAssignString(map.get("check_opinion")); //被审核的资金id号需要先被进行校验 Integer fund_id=ValidationUtil.checkAndAssignInt(map.get("fund_id")); Map mapToService = new LinkedHashMap(); mapToService.put("userDetail", userDetail); mapToService.put("fund_id", fund_id); mapToService.put("check_result", check_result); mapToService.put("check_opinion", check_opinion); capitalTransferService.insertCheckTransfer(mapToService); return JSONUtil.getJsonMap(200, true, HintMSG.OPERATION_SUCCESS, null); } catch (Exception e) { return JSONUtil.getJsonMap(500, false, HintMSG.OPERATION_FAIL+":"+e.getMessage(), null); } } /** * { "userId":"8080" } * 根据user_id 查询出所有账户名称(湖北银行 622465265212255)给前端 * 到时候前端在返回传给我个user_id 或者是账户名称 做划转资金插入操作 * @param data * @return */ @RequestMapping(value="/queryAccountWhereUserId",method=RequestMethod.POST) @ResponseBody private Map queryAccountWhereUserId(@RequestBody String data){ try { @SuppressWarnings("unchecked") Map map = JSON.parseObject(data, Map.class);//将前端传过来的json数据转化为map对象,并将map对象传入service层进行数据校验 //首先校验用户权限问题 int userId=ValidationUtil.checkAndAssignInt(map.get("userId"));//拿到用户id 来校验 //查看用户非空和权限(只有{管理员}有这个权限操作) //UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId,Role.ADMIN);//这里的《权限》由管理员来查出所有账户名称返回给前端 UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId);//这行没做权限 Map mapToService = new LinkedHashMap(); mapToService.put("userDetail", userDetail); List AccountNameInfoList =capitalTransferService.queryAccountWhereUserId(mapToService); return JSONUtil.getJsonMap(200, true, HintMSG.QUERY_SUCCESS, AccountNameInfoList); } catch (Exception e) { return JSONUtil.getJsonMap(500, false, HintMSG.OPERATION_FAIL+":"+e.getMessage(), null); } } /** * 由管理人来发起划款资金 提交做插入操作 * @param data * @return */ @PostMapping(value="/adminInsertCapitalTransfer") @ResponseBody public Map adminInsertCapitalTransfer(@RequestParam("userId") Object uId, @RequestParam("file") MultipartFile file, @RequestParam("custodian") String Custodian , //管理人?? @RequestParam("fund_name") String fName, //基金名称 @RequestParam("sum_of_money") double Sum_of_money,//划款金额 HttpServletRequest request){ System.out.println("管理人发起划转资金"); try { //首先校验用户权限问题 int userId=ValidationUtil.checkAndAssignInt(uId);//拿到用户id 来校验 UserDetail userDetail = userAuthoricationService.checkUserAuthority(userId,Role.ADMIN);//(权限这里)只有管理人能来启动——>划款资金 //首先判断文件不能为空 if(file.isEmpty()){ throw new RuntimeException("上传文件不能为空"); } String path = request.getServletContext().getRealPath("")+SP+"content"; //------路径待定在改动 //MultipartFile自带的解析方法 String fileName = file.getOriginalFilename(); String pathFile=path+"/"+fileName; File newfile = new File(pathFile); File dir = new File(path); //划款依据文件开始上传 if(!dir.exists()){ dir.mkdirs(); } file.transferTo(newfile); int attachmentId = attachmentService.generateAtachmentId(); //去数据库查询有重复的随机数 service里会用给put进去数据库 String custodian=ValidationUtil.checkBlankAndAssignString(Custodian);//检验前端传来的(管理人)参数?? String fund_name =ValidationUtil.checkBlankAndAssignString(fName);//校验前端传来的(基金名称)参数 Double sum_of_money=ValidationUtil.checkAndAssignDouble(Sum_of_money); //校验前端传来的(划款金额)参数 Map mapToService = new LinkedHashMap(); mapToService.put("userDetail",userDetail );//里面包含user_id mapToService.put("attachmentId",attachmentId );//附件id的随机数 mapToService.put("custodian",custodian );//管理人 ?????? mapToService.put("fund_name", fund_name);//基金名称 mapToService.put("sum_of_money", sum_of_money);//划款金额 mapToService.put("attachment_name", fileName);//附件名称 mapToService.put("url",pathFile);//附件url 文件路径 //mapToService.put("", value); return JSONUtil.getJsonMap(200, true, HintMSG.OPERATION_SUCCESS, null); } catch (Exception e) { return JSONUtil.getJsonMap(500, false, HintMSG.OPERATION_FAIL+":"+e.getMessage(), null); } } /** * 资金划转下载 doc文档 * @param request * @param response * @throws Exception * 资金划转》实现所有上传的文件的下载功能 * 前端以【表单】的形式传过来一组数据: * url:下载地址 * userId:用户id号 */ @RequestMapping(value="/downloadCapitalFile") @ResponseBody public Map downloadCapitalFile(HttpServletRequest request,HttpServletResponse response, @RequestParam("url") String url, @RequestParam("userId") Object uId){ try { int userId=ValidationUtil.checkAndAssignInt(uId); userAuthoricationService.checkUserAuthority(userId);//都给所有权限 url=ValidationUtil.checkBlankAndAssignString(url); //对传过来的url进行非空校验 String fileName = request.getServletContext().getRealPath("")+url; //模拟文件,456.doc为需要下载的文件 //如果文件不存在直接抛出异常 if(!new File(fileName).exists()){ throw new RuntimeException(HintMSG.FILE_NOT_FOUND); } //获取输入流 InputStream bis = new BufferedInputStream(new FileInputStream(new File(fileName))); //截取文件名字 String filename = url.substring(url.lastIndexOf("/")+1); //转码,免得文件名中文乱码 filename = URLEncoder.encode(filename,"UTF-8"); //设置文件下载头 response.addHeader("Content-Disposition", "attachment;filename=" + filename); //1.设置文件ContentType类型,这样设置,会自动判断下载文件类型 response.setContentType("multipart/form-data"); BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream()); int len = 0; while((len = bis.read()) != -1){ out.write(len); out.flush(); } out.close(); bis.close(); //返给前端map进行前端提示 return JSONUtil.getJsonMap(200, true, "下载成功",null); } catch (Exception e) { return JSONUtil.getJsonMap(500, false, "下载失败:"+e.getMessage(),null); } } /** * 划转资金审核的意见提交 * @param data * @return * @return Map返回类型 * */ //审批流程方法暂用不上 @RequestMapping(value="/insertCheckTransfer",method=RequestMethod.POST) @ResponseBody public Map insertCheckTransfer(@RequestBody String data){ try { //System.out.println("添加到划转审核总表信息...."); Map map = JSONUtil.jsonToMap(data); //将前端传过来的json数据转化为map对象,并将map对象传入service层进行数据校验 return JSONUtil.getJsonMap(200, true, "添加审核意见成功", null); } catch (Exception e) { return JSONUtil.getJsonMap(500, false, "添加审核意见失败:"+e.getMessage(), null); } } }