package com.nationalelectric.greenH5; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.locks.ReentrantLock; import javax.annotation.Resource; import org.apache.commons.lang.StringUtils; import org.codehaus.jackson.map.ObjectMapper; import org.codehaus.jackson.type.TypeReference; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; 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.ResponseBody; import com.jysoft.unipush.AliasManage; import com.jysoft.weChat.service.WechatService; import com.jysoft.weChat.vo.ContentVo; import com.nationalelectirc.Constant.Constant; import com.nationalelectirc.utils.RestResult; import com.nationalelectric.greenH5.DTO.GreenFoodOrderDetailDTO; import com.nationalelectric.greenH5.DTO.GreenFoodOrderListDTO; import com.nationalelectric.greenH5.bizc.BaseServiceImpl; import com.nationalelectric.greenH5.bizc.IGreenDrugsApplyBizc; import com.nationalelectric.greenH5.bizc.IGreenDrugsDetailBizc; import com.nationalelectric.greenH5.bizc.IGreenFoodOrderDetailBizc; import com.nationalelectric.greenH5.bizc.IGreenOperateLogBizc; import com.nationalelectric.greenH5.enums.OrderStatus; import com.nationalelectric.greenH5.enums.PayStatus; import com.nationalelectric.greenH5.enums.TakeStatus; import com.nationalelectric.greenH5.po.GreenDiningRoom; import com.nationalelectric.greenH5.po.GreenDrugsApply; import com.nationalelectric.greenH5.po.GreenDrugsDetail; import com.nationalelectric.greenH5.po.GreenFaultReply; import com.nationalelectric.greenH5.po.GreenFoodOrderDetail; import com.nationalelectric.greenH5.po.GreenFoodOrderList; import com.nationalelectric.greenH5.po.GreenReport; import com.nationalelectric.greenH5.po.GreenUsecarApply; import com.nationalelectric.greenH5.po.GreenUserInfo; import com.nationalelectric.greenH5.po.GreenWashCarInfo; import com.nationalelectric.greenH5.utils.DateTime; import com.nationalelectric.greenH5.utils.DateUtil; import com.sgcc.uap.persistence.IHibernateDao; import com.sgcc.uap.service.validator.ServiceValidatorBaseException; import net.sf.json.JSONObject; import net.sf.json.JSONArray; /** * 概述
*

* 功能
* * @author chenweikang */ @Controller @RequestMapping("/greenReport") public class GreenReportController extends GreenBaseController { @Resource private IHibernateDao hibernateDao; @Autowired private BaseServiceImpl baseService; @Resource private WechatService wService; /** * 保存图片controller */ @Resource private GreenImageInfoController greenImageInfoController; /** * greenfoodorderdetail GreenFoodOrderDetail逻辑构件 */ @Resource private IGreenOperateLogBizc greenOperateLogBizc; @Resource private AliasManageController aliasManageController; private ReentrantLock lock = new ReentrantLock(); /**提交订单*/ @SuppressWarnings("deprecation") @RequestMapping(value="/addReport", method = RequestMethod.POST) @Transactional(rollbackFor=Exception.class) @ResponseBody public RestResult addReport(@RequestBody GreenReport greenReport){ try { String userId = greenReport.getCreateBy(); GreenUserInfo info = getUserInfo(userId); if(info==null){ return new RestResult(Constant.FAILED, "非法用户"); } greenReport.setCreateTime(new Date()); boolean flag1=true; boolean flag2=true; boolean flag3=true; String uuid=""; // if(greenReport.getReportPic1()!=null&&!"".equals(greenReport.getReportPic1())){ // // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // String date = sdf.format(new Date()) + "/"; // //uuid = date + UUID.randomUUID().toString().replaceAll("-",""); // // uuid = greenImageInfoController.saveImage(greenReport.getReportPic1(), userId); // flag1=baseService.saveImgToIO(uuid+Constant.IMG_SUFFIX, greenReport.getReportPic1()); // greenReport.setReportPic1(uuid+Constant.IMG_SUFFIX); // greenReport.setReportPic1Data(uuid); // } // if(greenReport.getReportPic2()!=null&&!"".equals(greenReport.getReportPic2())){ // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // String date = sdf.format(new Date()) + "/"; // //uuid = date + UUID.randomUUID().toString().replaceAll("-",""); // // uuid = greenImageInfoController.saveImage(greenReport.getReportPic2(), userId); // flag2=baseService.saveImgToIO(uuid+Constant.IMG_SUFFIX, greenReport.getReportPic2()); // greenReport.setReportPic2(uuid+Constant.IMG_SUFFIX); // greenReport.setReportPic2Data(uuid); // } // if(greenReport.getReportPic3()!=null&&!"".equals(greenReport.getReportPic3())){ // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // String date = sdf.format(new Date()) + "/"; // //uuid = date + UUID.randomUUID().toString().replaceAll("-",""); // // uuid = greenImageInfoController.saveImage(greenReport.getReportPic3(), userId); // flag3=baseService.saveImgToIO(uuid+Constant.IMG_SUFFIX, greenReport.getReportPic3()); // greenReport.setReportPic3(uuid+Constant.IMG_SUFFIX); // greenReport.setReportPic3Data(uuid); // } hibernateDao.saveObject(greenReport); Integer reportType = greenReport.getReportType(); String title = ""; String text = ""; String url = ""; if(reportType==1){ title = "用户投诉"; text = "您好,您的投诉信息已成功提交,请点击查看。"; url = "/pages/report/report-ts?currentTabIndex=1"; aliasManageController.pushToSingle(userId, title, text, url); String role = "16010";//投诉受理权限 String getUserSql = "SELECT u.id,u.ISC_ID FROM green_user_info u " + " LEFT JOIN green_user_role_rel r ON u.id = r.user_id " + " LEFT JOIN green_role_permission p ON p.role_id = r.role_id " + " WHERE p.permission_id = ? "; List> userList2 = hibernateDao.queryForListWithSql(getUserSql, new Object[]{role}); title = "投诉受理"; text = "您好,您有新的用户投诉需要受理,请点击查看。"; url = "/pages/report/report-sl?reportType=1"; aliasManageController.pushToSingleBatch(userList2, title, text, url); }else{ title = "咨询服务"; text = "您好,您的咨询信息已成功提交,请点击查看。"; url = "/pages/report/report?currentTabIndex=1"; aliasManageController.pushToSingle(userId, title, text, url); String role = "16007";//咨询受理权限 String getUserSql = "SELECT u.id,u.ISC_ID FROM green_user_info u " + " LEFT JOIN green_user_role_rel r ON u.id = r.user_id " + " LEFT JOIN green_role_permission p ON p.role_id = r.role_id " + " WHERE p.permission_id = ? "; List> userList2 = hibernateDao.queryForListWithSql(getUserSql, new Object[]{role}); title = "咨询受理"; text = "您好,您有新的咨询服务需要受理,请点击查看。"; url = "/pages/report/report-sl"; aliasManageController.pushToSingleBatch(userList2, title, text, url); } return new RestResult(Constant.SUCCESS,"成功"); }catch (ServiceValidatorBaseException e) { throw e; }catch (Exception e) { e.printStackTrace(); //设置手动回滚 return new RestResult(Constant.FAILED,"返回异常"); } } /**用户订单列表*/ @RequestMapping(value="/getReportList", method = RequestMethod.POST) @ResponseBody public RestResult getReportList(@RequestBody GreenReport greenReport){ // String userId = greenReport.getCreateBy(); // GreenUserInfo info = getUserInfo(userId); // if(info==null){ // return new RestResult(Constant.FAILED, "非法用户"); // } try { //分页信息 int pageSize = greenReport.getPageSize(); int page = greenReport.getPageNum(); page = (page-1) * pageSize; String createBy = greenReport.getCreateBy(); Integer reportStatus = greenReport.getReportStatus(); Integer reportType = greenReport.getReportType(); String startDate = greenReport.getStartDate(); String endDate = greenReport.getEndDate(); List params = new ArrayList(); String sql = " select * from (select rn.*, rownum rw from (" + "select id as \"id\",title as \"title\",create_time as \"create_time\",is_evaluate as \"is_evaluate\"," + "reply_date as \"reply_date\",report_type as \"report_type\",report_status as \"report_status\"" + " from green_report where is_delete = 'N'"; if(createBy!=null&&!"".equals(createBy)){ sql +=" and create_by= ? "; params.add(createBy); }else{ sql +=" and report_status=? "; params.add(reportStatus); } if(!StringUtils.isEmpty(startDate)){ startDate = startDate+" 00:00:00"; sql+=" and to_char(create_time,'YYYY-MM-DD HH24:MI:ss')>=? "; params.add(startDate); } if(!StringUtils.isEmpty(endDate)){ endDate = endDate+" 23:59:59"; sql+=" and to_char(create_time,'YYYY-MM-DD HH24:MI:ss')<=? "; params.add(endDate); } if(reportType==9){ sql +=" order by create_time desc limit ?,?"; params.add(page); params.add(pageSize); }else{ sql +=" and report_Type=? order by create_time desc ) rn) where rw > ? and rw <=?"; params.add(reportType); params.add(page); params.add(pageSize); } List> reportList = hibernateDao.queryForListWithSql(sql,params.toArray()); return new RestResult(Constant.SUCCESS,"成功",reportList); }catch (ServiceValidatorBaseException e) { throw e; }catch (Exception e) { e.printStackTrace(); return new RestResult(Constant.FAILED,"返回异常"); } } @RequestMapping(value="/getReportCount", method = RequestMethod.POST) @ResponseBody public RestResult getReportCount(@RequestBody GreenReport greenReport){ // String userId = greenReport.getCreateBy(); // GreenUserInfo info = getUserInfo(userId); // if(info==null){ // return new RestResult(Constant.FAILED, "非法用户"); // } try { //分页信息 String createBy = greenReport.getCreateBy(); Integer reportStatus = greenReport.getReportStatus(); Integer reportType = greenReport.getReportType(); String startDate = greenReport.getStartDate(); String endDate = greenReport.getEndDate(); List params = new ArrayList(); String sql = " select count(*) from green_report where is_delete = 'N'"; if(createBy!=null&&!"".equals(createBy)){ sql +=" and create_by= ? "; params.add(createBy); }else{ sql +=" and report_status=? "; params.add(reportStatus); } if(!StringUtils.isEmpty(startDate)){ startDate = startDate+" 00:00:00"; sql+=" and to_char(create_time,'YYYY-MM-DD HH24:MI:ss')>=? "; params.add(startDate); } if(!StringUtils.isEmpty(endDate)){ endDate = endDate+" 23:59:59"; sql+=" and to_char(create_time,'YYYY-MM-DD HH24:MI:ss')<=? "; params.add(endDate); } if(reportType==9){ }else{ sql +=" and report_Type=? "; params.add(reportType); } Integer count = hibernateDao.queryForIntWithSql(sql,params.toArray()); return new RestResult(Constant.SUCCESS,"成功",count); }catch (ServiceValidatorBaseException e) { throw e; }catch (Exception e) { e.printStackTrace(); return new RestResult(Constant.FAILED,"返回异常"); } } /**用户订单列表*/ @RequestMapping(value="/queryReport", method = RequestMethod.POST) @ResponseBody public RestResult queryReport(@RequestBody GreenReport greenReport){ // String userId = greenReport.getCreateBy(); // GreenUserInfo info = getUserInfo(userId); // if(info==null){ // return new RestResult(Constant.FAILED, "非法用户"); // } try { Long id = greenReport.getId(); String sql = " select r.id as \"id\",r.title as \"title\",r.content as \"content\",r.create_time as \"create_time\"," + "r.is_evaluate as \"is_evaluate\",r.reply_date as \"reply_date\",r.report_type as \"report_type\"," + "r.report_status as \"report_status\" ,u.real_name as \"real_name\",u.mobile as \"mobile\"," + " r.report_pic1 as \"report_pic1\",r.report_pic2 as \"report_pic2\",r.report_pic3 as \"report_pic3\" " + "from green_report r left join green_user_info u " + " on r.create_by = u.id " + " where r.id= ?"; List> reportList = hibernateDao.queryForListWithSql(sql,new Object[]{ id}); if(reportList.size()>0){ Map objMap = reportList.get(0); List list = new ArrayList(); // List replyList = new ArrayList(); String pic1 = baseService.getImageBase64((String) objMap.get("report_pic1")); if (pic1 != null && !"".equals(pic1)) { list.add(pic1); } String pic2 = baseService.getImageBase64((String) objMap.get("report_pic2")); if (pic2 != null && !"".equals(pic2)) { list.add(pic2); } String pic3 = baseService.getImageBase64((String) objMap.get("report_pic3")); if (pic3 != null && !"".equals(pic3)) { list.add(pic3); } objMap.put("pictures", list); List> replyList = new ArrayList>(); if(!"0".equals(objMap.get("reply_flag"))){ String replySql = "select id as \"id\", reply_content as \"reply_content\", reply_date as \"reply_date\", create_by as \"create_by\", fault_id as \"fault_id\", reply_pic1 as \"reply_pic1\", reply_pic1_data as \"reply_pic1_data\", reply_pic2 as \"reply_pic2\", reply_pic2_data as \"reply_pic2_data\" " + " from green_fault_reply where fault_id = ?"; List> replyList2 = hibernateDao.queryForListWithSql(replySql,new Object[]{ objMap.get("id")}); for(int i=0;i replyObj = replyList2.get(i); List replyPicList = new ArrayList(); String replyPic1 = baseService.getImageBase64((String) replyObj.get("reply_pic1")); if (replyPic1 != null && !"".equals(replyPic1)) { replyPicList.add(replyPic1); } String replyPic2 = baseService.getImageBase64((String) replyObj.get("reply_pic2")); if (replyPic2 != null && !"".equals(replyPic2)) { replyPicList.add(replyPic2); } replyObj.put("replyPictures", replyPicList); replyList.add(replyObj); } objMap.put("replyList", replyList); } // String replyPic1 = baseService.getImageBase64((String) objMap.get("reply_pic1")); // if (replyPic1 != null && !"".equals(replyPic1)) { // replyList.add(replyPic1); // } // String replyPic2 = baseService.getImageBase64((String) objMap.get("reply_pic2")); // if (replyPic2 != null && !"".equals(replyPic2)) { // replyList.add(replyPic2); // } // objMap.put("replyPictures", replyList); return new RestResult(Constant.SUCCESS,"查询成功",objMap); }else{ return new RestResult(Constant.FAILED,"查无该数据"); } }catch (ServiceValidatorBaseException e) { throw e; }catch (Exception e) { e.printStackTrace(); return new RestResult(Constant.FAILED,"返回异常"); } } @RequestMapping(value="/replyReport", method = RequestMethod.POST) @ResponseBody public RestResult replyReport(@RequestBody GreenReport greenReport){ // String userId = greenReport.getCreateBy(); // GreenUserInfo info = getUserInfo(userId); // if(info==null){ // return new RestResult(Constant.FAILED, "非法用户"); // } try { Long id = greenReport.getId(); String replyContent = greenReport.getReplyContent(); String replyUser = greenReport.getReplyUser(); String replyPic1 = greenReport.getReplyPic1(); String replyPic2 = greenReport.getReplyPic2(); boolean flag1=true; boolean flag2=true; String uuid=""; GreenFaultReply greenFaultReply = new GreenFaultReply(); if(greenReport.getReplyPic1()!=null&&!"".equals(greenReport.getReplyPic1())){ // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // String date = sdf.format(new Date()) + "/"; //// uuid = date + UUID.randomUUID().toString().replaceAll("-",""); // uuid = greenImageInfoController.saveImage(greenReport.getReplyPic1(), replyUser); // flag1=baseService.saveImgToIO(uuid+Constant.IMG_SUFFIX, greenReport.getReplyPic1()); // greenReport.setReplyPic1(uuid+Constant.IMG_SUFFIX); // greenReport.setReplyPic1Data(uuid); greenFaultReply.setReplyPic1(greenReport.getReplyPic1()); greenFaultReply.setReplyPic1Data(greenReport.getReplyPic1()); } //回复图片2 if(greenReport.getReplyPic2()!=null&&!"".equals(greenReport.getReplyPic2())){ // SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); // String date = sdf.format(new Date()) + "/"; //// uuid = date + UUID.randomUUID().toString().replaceAll("-",""); // uuid = greenImageInfoController.saveImage(greenReport.getReplyPic2(), replyUser); // flag2=baseService.saveImgToIO(uuid+Constant.IMG_SUFFIX, greenReport.getReplyPic2()); // greenReport.setReplyPic2(uuid+Constant.IMG_SUFFIX); // greenReport.setReplyPic2Data(uuid); greenFaultReply.setReplyPic2(greenReport.getReplyPic2()); greenFaultReply.setReplyPic2Data(greenReport.getReplyPic2()); } String sql = "update green_report set reply_content =?,reply_user= ? ,reply_date=?,report_status=1,reply_pic1=?,reply_pic1_data=?,reply_pic2=?,reply_pic2_data=? where id=?"; hibernateDao.updateWithSql(sql,new Object[]{replyContent, replyUser,new Date(),greenReport.getReplyPic1() ,greenReport.getReplyPic1Data(),greenReport.getReplyPic2(),greenReport.getReplyPic2Data(),id}); greenFaultReply.setReplyContent(replyContent); greenFaultReply.setCreateBy(replyUser); greenFaultReply.setFaultId(id); greenFaultReply.setReplyDate(new Date()); hibernateDao.saveObject(greenFaultReply); String getNoticeObjSql = "select * from green_report where id =?"; List> noticeList = hibernateDao.queryForListWithSql(getNoticeObjSql, new Object[]{id}); BigDecimal reportTypeBig = (BigDecimal) noticeList.get(0).get("report_type"); Integer reportType =Integer.parseInt(reportTypeBig.toString()); String userId = (String) noticeList.get(0).get("create_by"); String title = ""; String text = ""; String url = ""; if(reportType==1){ title = "用户投诉"; text = "您好,您的投诉信息有新回复,请点击查看。"; url = "/pages/report/report-ts?currentTabIndex=1"; aliasManageController.pushToSingle(userId, title, text, url); }else{ title = "咨询服务"; text = "您好,您的咨询信息有新回复,请点击查看。"; url = "/pages/report/report?currentTabIndex=1"; aliasManageController.pushToSingle(userId, title, text, url); } return new RestResult(Constant.SUCCESS,"回复成功"); }catch (ServiceValidatorBaseException e) { throw e; }catch (Exception e) { e.printStackTrace(); return new RestResult(Constant.FAILED,"回复失败"); } } public RestResult finishReport(@RequestBody GreenReport greenReport){ try { Long id = greenReport.getId(); String replyUser = greenReport.getReplyUser(); GreenUserInfo info = getUserInfo(replyUser); if(info==null){ return new RestResult(Constant.FAILED, "非法用户"); } String updateSql = "update green_report set report_status=2 where id=?"; hibernateDao.executeSqlUpdate(updateSql,new Object[]{ id}); String getNoticeObjSql = "select id as \"id\",title as \"title\",create_time as \"create_time\",is_evaluate as \"is_evaluate\",reply_date as \"reply_date\",report_type as \"report_type\",report_status as \"report_status\" from green_report where id =?"; List> noticeList = hibernateDao.queryForListWithSql(getNoticeObjSql, new Object[]{id}); BigDecimal reportTypeBig = (BigDecimal) noticeList.get(0).get("report_type"); Integer reportType =Integer.parseInt(reportTypeBig.toString()); String userId = (String) noticeList.get(0).get("create_by"); String title = ""; String text = ""; String url = ""; if(reportType==1){ title = "用户投诉"; text = "您好,您的投诉信息已办结,请点击查看。并对我们的服务进行评价,谢谢配合。"; url = "/pages/report/report-ts?currentTabIndex=1"; aliasManageController.pushToSingle(userId, title, text, url); }else{ title = "咨询服务"; text = "您好,您的咨询信息已办结,请点击查看。并对我们的服务进行评价,谢谢配合。"; url = "/pages/report/report?currentTabIndex=1"; aliasManageController.pushToSingle(userId, title, text, url); } return new RestResult(Constant.SUCCESS,"办结成功"); }catch (ServiceValidatorBaseException e) { throw e; }catch (Exception e) { e.printStackTrace(); return new RestResult(Constant.FAILED,"办结失败,请重新办结"); } } }