hz-zhhq-app-service/greenH5modul/.svn/pristine/d1/d1570d76b2a8940d9062b358119...

532 lines
21 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
/**
* <b>概述</b><br>
* <p>
* <b>功能</b><br>
*
* @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<Map<String,Object>> 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<Map<String,Object>> 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<Object> params = new ArrayList<Object>();
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<Map<String,Object>> 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<Object> params = new ArrayList<Object>();
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<Map<String,Object>> reportList = hibernateDao.queryForListWithSql(sql,new Object[]{ id});
if(reportList.size()>0){
Map<String,Object> objMap = reportList.get(0);
List<String> list = new ArrayList<String>();
// List<String> replyList = new ArrayList<String>();
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<Map<String,Object>> replyList = new ArrayList<Map<String,Object>>();
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<Map<String,Object>> replyList2 = hibernateDao.queryForListWithSql(replySql,new Object[]{ objMap.get("id")});
for(int i=0;i<replyList2.size();i++){
Map<String,Object> replyObj = replyList2.get(i);
List<String> replyPicList = new ArrayList<String>();
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<Map<String,Object>> 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<Map<String,Object>> 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,"办结失败,请重新办结");
}
}
}