hz-zhhq-app-service/greenH5modul/.svn/pristine/8e/8e84d238f369c3e8d753b5bc7de...

459 lines
19 KiB
Plaintext

package com.nationalelectric.greenH5;
import java.io.Serializable;
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 javax.annotation.Resource;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.springframework.beans.factory.annotation.Autowired;
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.GreenHaircutRemainDTO;
import com.nationalelectric.greenH5.bizc.IGreenApplyBizc;
import com.nationalelectric.greenH5.po.GreenApply;
import com.nationalelectric.greenH5.po.GreenUserInfo;
import com.nationalelectric.greenH5.po.GreenWashCarInfo;
import com.nationalelectric.greenH5.utils.DateUtil;
import com.sgcc.uap.persistence.IHibernateDao;
import com.sgcc.uap.service.validator.ServiceValidatorUtil;
/**
* 洗车预约 控制层
*
* @author Feb
*
*/
@Controller
@RequestMapping("/greenWashCar")
public class GreenWashCarController extends GreenBaseController {
@Autowired
private IHibernateDao hibernateDao;
@Resource
private GreenDictionaryInfoController greenDictionaryInfoController;
@Resource
private AliasManageController aliasManageController;
@Resource
private WechatService wService;
/**
* 根据时间 初始化 数据
*
* @return
*/
@RequestMapping("/initWashCar")
public RestResult initWashCar(String applyPlace, String applyDate, String userId) {
try {
GreenUserInfo userInfo = getUserInfo(userId);
if (userInfo == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
// List<Map<String, Object>> placeList = greenDictionaryInfoController.getDictionaryInfo("washcarplace");
// if("".equals(applyPlace)){
// applyPlace = (String) placeList.get(0).get("data_value");
// }
// 所有时间段数据
String timeSql = "select id as \"timeId\", wash_car_time as \"time\" from green_wash_car_times where del_flag ='0' order by sort";
List<Map<String, Object>> timeList = hibernateDao.queryForListWithSql(timeSql);
// 某天 对应 所有时间段的预约数据
String dateSql = " select apply_time_id as \"apply_time_id\" from green_wash_car_info where apply_place=? and apply_date = ? and del_flag =0 and int_status=0 ";
List<Map<String, Long>> list = hibernateDao.queryForListWithSql(dateSql, new Object[] {applyPlace, applyDate });
// 根据 已预约数据 计算剩余可预约数
for (Map<String, Object> map : timeList) {
long timeId = Long.valueOf(String.valueOf(map.get("timeId")));
String time = (String) map.get("time");
int count = 1;
for (Map<String, Long> clMap : list) {
Long cLong = Long.valueOf(String.valueOf(clMap.get("apply_time_id")));
if (cLong.equals(timeId)) {
count--;
}
}
if (count < 0) {
count=0;
//return new RestResult(Constant.FAILED, "数据异常");
}
map.put("count", count);
}
// String commentSql = "SELECT hc.APPLICANT_NAME as userName,hc.comment_content as content, hc.satisfied_level as level FROM GREEN_HAIRCUT_COMMENT hc WHERE hc.TYPE = '2' ORDER BY hc.gmt_created DESC LIMIT 0,10";
// List<Map<String, Object>> comList = hibernateDao.queryForListWithSql(commentSql);
// String licensePlateSql = "select distinct licenseplate from green_wash_car_info where user_id='"+userId+"' and del_flag =0 and licenseplate is not null and licenseplate<>'' ";
// //String licensePlateSql = "select distinct licenseplate1 from green_licenseplate_approval where user_id='"+userId+"' and is_deleted='N' and licenseplate1_status='1'";
// List<Map<String, Object>> licensePlateList = hibernateDao.queryForListWithSql(licensePlateSql);
Map<String, Object> result = new HashMap<String, Object>();
result.put("timeList", timeList);
//result.put("comments", comList);
// result.put("placeList", placeList);
// result.put("licensePlateList", licensePlateList);
result.put("deptId", userInfo.getDepartmentId()); // 页面部门下拉框默认显示的部门id
return new RestResult(Constant.SUCCESS, "初始化成功", result);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* 根据时间 初始化 数据
*
* @return
*/
@RequestMapping("/getPlaceData")
public RestResult getPlaceData(String userId) {
try {
GreenUserInfo userInfo = getUserInfo(userId);
if (userInfo == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
List<Map<String, Object>> placeList = greenDictionaryInfoController.getDictionaryInfo("washcarplace");
String licensePlateSql = "select distinct licenseplate from green_wash_car_info where user_id='"+userId+"' and del_flag =0 and licenseplate is not null and licenseplate<>'' ";
//String licensePlateSql = "select distinct licenseplate1 from green_licenseplate_approval where user_id='"+userId+"' and is_deleted='N' and licenseplate1_status='1'";
List<Map<String, Object>> licensePlateList = hibernateDao.queryForListWithSql(licensePlateSql);
Map<String, Object> result = new HashMap<String, Object>();
//result.put("comments", comList);
result.put("placeList", placeList);
result.put("licensePlateList", licensePlateList);
result.put("deptId", userInfo.getDepartmentId()); // 页面部门下拉框默认显示的部门id
return new RestResult(Constant.SUCCESS, "初始化成功", result);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* 提交 洗车预约
*
* @return
*/
@RequestMapping("/applyWashCar")
@Transactional(rollbackFor = Exception.class)
public RestResult applyWashCar(@RequestBody GreenWashCarInfo info) {
if (info == null || info.getUserId().equals("") || info.getApplyDate().equals("")) {
return new RestResult(Constant.FAILED, "参数有误");
}
try {
GreenUserInfo userInfo = getUserInfo(info.getUserId());
if (userInfo == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
if ("".equals(info.getApplyDate())) {
info.setApplyDate(DateUtil.now(new SimpleDateFormat("yyyy-MM-dd")));
}
//ServiceValidatorUtil.validatorJavaBean(info);
String sql = "select count(1) from green_wash_car_info ga where ga.user_id = ? and ga.apply_date = ? and ga.apply_place = ? and ga.apply_time_id = ? and ga.int_status=0";
int c = hibernateDao.queryForIntWithSql(sql,
new Object[] { info.getUserId(), info.getApplyDate(),info.getApplyPlace(), info.getApplyTimeId() });
if (c > 0) {
return new RestResult(Constant.FAILED, "该时间段已经预约,请重新选择!");
}
// 已约数
String ctSql = " select count(1) from green_wash_car_info where apply_date = ? and apply_time_id = ? and apply_place = ? and int_status=0";
int ct = hibernateDao.queryForIntWithSql(ctSql, new Object[]{info.getApplyDate(), info.getApplyTimeId(),info.getApplyPlace()});
if ((1 - ct ) <= 0) {
if (ct > 1) {
return new RestResult(Constant.FAILED, "数据异常");
}
return new RestResult(Constant.FAILED, "当前时段已无余额");
}
info.setUserName(userInfo.getRealName());
info.setUpdUser(info.getUserId());
info.setDelFlag(0);
info.setCreateTime(new Date());
info.setUpdTime(new Date());
Long id = (Long) hibernateDao.saveObject(info);
if (id != null && id != 0) {
// 申请记录添加一条记录
GreenApply apply = new GreenApply();
apply.setApplyType(Constant.WASHCAR_APPLY);
apply.setApplyTypeName("洗车预约");
apply.setCommentStatus("0");
apply.setDelFlag("0");
apply.setApplyTime(new Date());
apply.setUserId(info.getUserId());
apply.setCurVerifyLevel("0");
apply.setNeedVerifyLevel("0");
apply.setStatus(Constant.APPLY_SUCCESS);
apply.setDetailId(id);
Long applyId = (Long) hibernateDao.saveObject(apply);
if (applyId != null && applyId != 0) {
//预约成功后给本人发送预约成功信息
String title="洗车预约";
String text = "您已成功预约洗车,请安排好您的时间。";
String url = "/pages/washcar/washCarReservation?currentTabIndex=1";
aliasManageController.pushToSingle(info.getUserId(), title, text, url);
String place = info.getApplyPlace();
Integer moveCar = info.getMoveCar();
List<String> moveCarUserList = new ArrayList<String>();
if("科技楼".equals(place)&&1==moveCar){
List<Map<String,Object>> driverRoleList = greenDictionaryInfoController.getDictionaryInfo("driverRole");
String strRoleIds = "";
for(int i=0;i<driverRoleList.size();i++){
Map<String,Object> map = driverRoleList.get(i);
if(i!=driverRoleList.size()-1){
strRoleIds+=map.get("data_value").toString()+",";
}else{
strRoleIds+=map.get("data_value").toString();
}
}
String driverSql = "select id,wxopenid,ISC_ID from green_user_info where id in (select user_id from green_user_role_rel where role_id in("+strRoleIds+"))";
List<Map<String, Object>> driverList = hibernateDao.queryForListWithSql(driverSql);
for(int i=0;i<driverList.size();i++){
moveCarUserList.add((String)driverList.get(i).get("id"));
}
title = "洗车预约受理";
text = "您好,有新的洗车订单需要迁车,请注意查看,及时取车。";
url = "/pages/washcar/washCarAccept?applyPlace=科技楼";
aliasManageController.pushToSingleBatch(driverList, title, text, url);
}
String dataCode = "1";
if("后勤中心".equals(place)){
dataCode = "2";
}
List<Map<String,String>> roleList = greenDictionaryInfoController.getDictionaryInfo("washCarRole",dataCode);
String washCarRole = (String) roleList.get(0).get("data_value");
//查询所有有这个权限的人员
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>> userList = hibernateDao.queryForListWithSql(getUserSql, new Object[]{washCarRole});
List<Map<String,Object>> userListEnd = new ArrayList<Map<String,Object>>();
for(int i=0;i<userList.size();i++){
String userListId = (String) userList.get(i).get("id");
if(!moveCarUserList.contains(userListId)){
userListEnd.add(userList.get(i));
}
}
title = "洗车预约受理";
text = "您有新的洗车预约,请注意查看。";
url = "/pages/washcar/washCarAccept?applyPlace="+place;
aliasManageController.pushToSingleBatch(userListEnd, title, text, url);
return new RestResult(Constant.SUCCESS, "预约成功");
} else {
throw new RuntimeException("数据保存异常");
}
}
return new RestResult(Constant.SUCCESS, "预约失败,请重试");
} catch (Exception e) {
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED, "请求异常");
}
}
/**
* 洗车预约受理
*
* @param greenHaircutRemainDTO
* @return
*/
@RequestMapping(value = "/getWashInfoByDate", method = RequestMethod.POST)
public @ResponseBody RestResult getWashInfoByDate(@RequestBody GreenWashCarInfo info) {
try {
// 根据用户id获取用户信息
GreenUserInfo userInfo = getUserInfo(info.getUserId());
// 判断是否是合法用户
if (userInfo == null) {
return new RestResult(Constant.FAILED, "非法用户");
}
String applyDate = info.getApplyDate();
String applyPlace = info.getApplyPlace();
List<Object> params = new ArrayList<Object>();
String sql = "select t.wash_car_time as \"wash_car_time\",i.id as \"id\",i.concat_user_name as \"concat_user_name\","
+ "i.concat_phone as \"concat_phone\",i.licenseplate as \"licenseplate\",i.endremind as \"endremind\","
+ "i.apply_place as \"apply_place\" from green_wash_car_times t "
+ "left join (SELECT * from green_wash_car_info WHERE del_flag=0 and apply_date=? and int_status=0 ";
params.add(applyDate);
if(applyPlace!=null&&!"".equals(applyPlace)){
sql+=" and apply_place =? ";
params.add(applyPlace);
}
sql+= ") i on t.id= i.apply_time_id where t.del_flag=0 order by t.sort";
List<Map<String, Object>> resultList = hibernateDao.queryForListWithSql(sql,params.toArray());
// 返回结果
return new RestResult(Constant.SUCCESS, "", resultList);
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* 提醒
*
* @param greenHaircutRemainDTO
* @return
*/
@RequestMapping(value = "/remindPickUpCar", method = RequestMethod.POST)
public @ResponseBody RestResult remindPickUpCar(@RequestBody GreenWashCarInfo info) {
try {
String sql = "select * from green_wash_car_info where id ="+info.getId()+"";
List<Map<String, Object>> list = hibernateDao.queryForListWithSql(sql);
Integer endRemind = list.get(0).get("endremind")==null?0:Integer.parseInt( list.get(0).get("endremind").toString());
String upSql = "update green_wash_car_info set endremind="+(endRemind+1)+" where id="+info.getId();
hibernateDao.executeSqlUpdate(upSql);
String userId = (String) list.get(0).get("user_id");
Integer moveCae = Integer.parseInt(list.get(0).get("move_car").toString());
String title="";
String text = "";
String url = "";
//aliasManageController.pushToSingle(userId, title, text, url);
//GreenUserInfo userInfo = getUserInfo(userId);
if("科技楼".equals(list.get(0).get("apply_place").toString())&&1==moveCae){
List<Map<String,Object>> driverRoleList = greenDictionaryInfoController.getDictionaryInfo("driverRole");
String strRoleIds = "";
for(int i=0;i<driverRoleList.size();i++){
Map<String,Object> map = driverRoleList.get(i);
if(i!=driverRoleList.size()-1){
strRoleIds+=map.get("data_value").toString()+",";
}else{
strRoleIds+=map.get("data_value").toString();
}
}
String driverSql = "select id,wxopenid,ISC_ID from green_user_info where id in (select user_id from green_user_role_rel where role_id in("+strRoleIds+"))";
List<Map<String, Object>> driverList = hibernateDao.queryForListWithSql(driverSql);
title = "洗车预约受理";
text = "您好,用户的车已洗好,请及时取车交付。";
url = "/pages/washcar/washCarAccept?applyPlace=科技楼";
aliasManageController.pushToSingleBatch(driverList, title, text, url);
}else{
title="洗车预约";
text = "您好,您的车已洗好,请及时取车。";
url = "/pages/washcar/washCarReservation?currentTabIndex=1";
aliasManageController.pushToSingle(userId, title, text, url);
}
// 返回结果
return new RestResult(Constant.SUCCESS, "已通知取车");
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "查询失败");
}
}
/**
* 取消
*
* @param greenHaircutRemainDTO
* @return
*/
@RequestMapping(value = "/cancleWashCar", method = RequestMethod.POST)
public @ResponseBody RestResult cancleWashCar(@RequestBody GreenWashCarInfo info) {
try {
String sql = "select * from green_wash_car_info where id =? ";
List<Map<String, Object>> list = hibernateDao.queryForListWithSql(sql ,new Object[]{info.getId()});
Integer intStatus = info.getIntStatus();
String upSql = "update green_wash_car_info set int_status=? where id= ?";
hibernateDao.executeSqlUpdate(upSql,new Object[]{intStatus,info.getId()});
// String upApplySql = "update green_apply set del_flag='1' where detail_id=? and apply_type = '09'";
// hibernateDao.executeSqlUpdate(upApplySql,new Object[]{info.getId()});
if(intStatus==1){
String userId = (String) list.get(0).get("user_id");
Integer moveCar =Integer.parseInt(list.get(0).get("move_car").toString());
String applyPlace = list.get(0).get("apply_place").toString();
String title="洗车预约";
String text = "您已成功取消洗车预约。";
String url = "/pages/washcar/washCarReservation?currentTabIndex=1";
aliasManageController.pushToSingle(userId, title, text, url);
List<String> moveCarUserList = new ArrayList<String>();
if("科技楼".equals(applyPlace)&&1==moveCar){
List<Map<String,Object>> driverRoleList = greenDictionaryInfoController.getDictionaryInfo("driverRole");
String strRoleIds = "";
for(int i=0;i<driverRoleList.size();i++){
Map<String,Object> map = driverRoleList.get(i);
if(i!=driverRoleList.size()-1){
strRoleIds+=map.get("data_value").toString()+",";
}else{
strRoleIds+=map.get("data_value").toString();
}
}
String driverSql = "select id,wxopenid,ISC_ID from green_user_info where id in (select user_id from green_user_role_rel where role_id in("+strRoleIds+"))";
List<Map<String, Object>> driverList = hibernateDao.queryForListWithSql(driverSql);
for(int i=0;i<driverList.size();i++){
moveCarUserList.add((String)driverList.get(i).get("id"));
}
title = "洗车预约受理";
text = "您好,用户已取消洗车预约,请点击查看。";
url = "/pages/washcar/washCarAccept?applyPlace=科技楼";
aliasManageController.pushToSingleBatch(driverList, title, text, url);
}
String dataCode = "1";
if("后勤中心".equals(applyPlace)){
dataCode = "2";
}
List<Map<String,String>> roleList = greenDictionaryInfoController.getDictionaryInfo("washCarRole",dataCode);
String washCarRole = (String) roleList.get(0).get("data_value");
//查询所有有这个权限的人员
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>> userList = hibernateDao.queryForListWithSql(getUserSql, new Object[]{washCarRole});
List<Map<String,Object>> userListEnd = new ArrayList<Map<String,Object>>();
for(int i=0;i<userList.size();i++){
String userListId = (String) userList.get(i).get("id");
if(!moveCarUserList.contains(userListId)){
userListEnd.add(userList.get(i));
}
}
title = "洗车预约受理";
text = "您好,有用户取消洗车预约,请点击查看。";
url = "/pages/washcar/washCarAccept?applyPlace="+applyPlace;
aliasManageController.pushToSingleBatch(userListEnd, title, text, url);
return new RestResult(Constant.SUCCESS, "已取消");
}else if(intStatus==2){
return new RestResult(Constant.SUCCESS, "已成功设置");
}
return new RestResult(Constant.SUCCESS, "已成功设置");
// 返回结果
} catch (Exception e) {
e.printStackTrace();
return new RestResult(Constant.FAILED, "查询失败");
}
}
}