hz-zhhq-app-service/greenH5modul/.svn/pristine/57/57732dce213b16f5d2a7f1c94ee...

729 lines
36 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 org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.apache.commons.lang.StringUtils;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.type.TypeReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import com.sgcc.uap.service.validator.ServiceValidatorBaseException;
import com.sgcc.uap.persistence.IHibernateDao;
import com.jysoft.unipush.AliasManage;
import com.nationalelectirc.Constant.Constant;
import com.nationalelectirc.utils.RestResult;
import com.nationalelectric.greenH5.DTO.GreenFoodOrderListDTO;
import com.nationalelectric.greenH5.bizc.BaseServiceImpl;
import com.nationalelectric.greenH5.bizc.IGreenFoodOrderDetailBizc;
import com.nationalelectric.greenH5.bizc.IGreenFoodOrderListBizc;
import com.nationalelectric.greenH5.bizc.IGreenOperateLogBizc;
import com.nationalelectric.greenH5.enums.OrderStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import java.math.BigDecimal;
import java.util.*;
import java.util.concurrent.locks.ReentrantLock;
import com.nationalelectric.greenH5.po.GreenFoodOrderDetail;
import com.nationalelectric.greenH5.po.GreenFoodOrderList;
import com.nationalelectric.greenH5.po.GreenUserInfo;
import com.nationalelectric.greenH5.utils.DateUtil;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.RequestBody;
/**
* <b>概述</b><br>
* <p>
* <b>功能</b><br>
*
* @author bowei
*/
@Controller
@RequestMapping("/greenFoodOrderDetail")
public class GreenFoodOrderDetailController extends GreenBaseController{
/**
* greenfoodorderdetail GreenFoodOrderDetail逻辑构件
*/
@Resource
private IGreenFoodOrderDetailBizc greenfoodorderdetailBizc;
@Resource
private IHibernateDao hibernateDao;
@Resource
private IGreenFoodOrderListBizc greenfoodorderlistBizc;
@Resource
private IGreenOperateLogBizc greenOperateLogBizc;
@Autowired
private BaseServiceImpl baseService;
private ReentrantLock lock = new ReentrantLock();
@Resource
private AliasManageController aliasManageController;
/**用户订单列表*/
@RequestMapping(value="/list", method = RequestMethod.POST)
@ResponseBody
public RestResult list(@RequestBody Object requestBody){
GreenFoodOrderListDTO greenfoodorderlists = new ObjectMapper().convertValue(requestBody, new TypeReference<GreenFoodOrderListDTO>() {});
String userId = greenfoodorderlists.getUserId();
GreenUserInfo info = getUserInfo(userId);
if(info==null){
return new RestResult(Constant.FAILED, "非法用户");
}
try {
StringBuffer sb = new StringBuffer();
//分页信息
Integer pageSize = greenfoodorderlists.getPageSize() == null ? 10 : Integer.parseInt(greenfoodorderlists.getPageSize());
Integer pageNum = greenfoodorderlists.getPageNum() == null ? 1 : Integer.parseInt(greenfoodorderlists.getPageNum());
// pageNum = (pageNum-1) * pageSize;
int limit = ((pageNum > 0 ? pageNum : 1) - 1) * pageSize;
pageSize = pageSize*pageNum;
//查询订单
sb.append(" select * from (select rn.*,rownum rw from ("
+ "Select gf.id as \"id\",gf.dining_room_id as \"dining_room_id\",gf.user_id as \"user_id\",gf.order_time as \"order_time\",gf.pay_price as \"pay_price\","
+ "gf.pay_status as \"pay_status\",gf.order_status as \"order_status\",gf.take_status as \"take_status\",gf.buyer_name as \"buyer_name\",gf.buyer_phone as \"buyer_phone\","
+ "gf.creator as \"creator\",gf.modifier as \"modifier\",gf.gmt_created as \"gmt_created\",gf.gmt_modified as \"gmt_modified\",gf.is_deleted as \"is_deleted\","
+ " gf.take_food_time as \"take_food_time\",gf.take_food_place as \"take_food_place\",gf.remarks as \"remarks\""
+ ", ");
sb.append(" (select count(t.id) from t_order_evaluate t where t.type_id = gf.id and t.user_id = gf.user_id) as \"order_no\", ");
sb.append(" (select count(t.id) from t_order_evaluate t where t.type_id = gf.dining_room_id and t.user_id = gf.user_id and t.bak1 = gf.id) as \"dining_no\" ");
sb.append(" from GREEN_FOOD_ORDER_LIST gf where gf.user_id = ? and gf.is_deleted = 'N' order by gf.order_time desc) rn )where rw>? and rw<=? ");
List<Map<String,Object>> orderList = hibernateDao.queryForListWithSql(sb.toString()
,new Object[]{ greenfoodorderlists.getUserId(), limit, pageSize});
StringBuilder stringBuilder = new StringBuilder();
String stringId = null;
if (!orderList.isEmpty()) {
stringBuilder.append("(");
for (int i = 0;i<orderList.size();i++) {
stringId = String.valueOf(orderList.get(i).get("id"));
stringBuilder.append(stringId + ",");
}
String substring = null;
if (stringBuilder != null) {
substring = stringBuilder.substring(0, stringBuilder.length()-1) +")";
}
//查询订单详情
String sql = "Select a.id as \"id\",a.order_id as \"order_id\",a.goods_id as \"goods_id\",b.food_name as \"goods_name\",b.price as \"price\","
+ "b.unit as \"unit\",a.goods_num as \"goods_num\",b.picture as \"goods_icon\" from GREEN_FOOD_ORDER_DETAIL a left join GREEN_FOODS_KINDS b on a.goods_id = b.id where a.order_id in " + substring;
List<Map<String,Object>> detailList =hibernateDao.queryForListWithSql( sql);
for (Map<String, Object> map : detailList) {
String picString=(String)map.get("goods_icon");
map.put("goods_icon", baseService.getImageBase64(picString));
}
//初始化图片缓存
baseService.initImage();
String stringId2 = null;
String stringId3 = null;
for (int i = 0; i < orderList.size(); i++) {
ArrayList<Object> arrayList = new ArrayList<Object>();
orderList.get(i).put("orderDetails",null);
stringId2 = String.valueOf(orderList.get(i).get("id"));
for (int j = 0; j < detailList.size(); j++) {
stringId3 = String.valueOf(detailList.get(j).get("order_id"));
if (stringId2.equals(stringId3)) {
arrayList.add(detailList.get(j));
orderList.get(i).put("orderDetails",arrayList);
}
}
}
// addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询我的订单列表", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
//orderList.get(i).put("orderDetails",detaiList);
return new RestResult(Constant.SUCCESS,"成功",orderList);
}
// greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询我的订单列表", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
return new RestResult(Constant.SUCCESS,"成功",null);
}catch (ServiceValidatorBaseException e) {
throw e;
}catch (Exception e) {
e.printStackTrace();
// greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_FAIL, "查询我的订单列表", Constant.LOG_ERROR, greenfoodorderlists.getUserId());
return new RestResult(Constant.FAILED,"返回异常");
}
}
/**用户今日订单受理列表*/
@RequestMapping(value="/toDaylist", method = RequestMethod.POST)
@ResponseBody
public RestResult toDaylist(@RequestBody Object requestBody){
GreenFoodOrderListDTO greenfoodorderlists = new ObjectMapper().convertValue(requestBody, new TypeReference<GreenFoodOrderListDTO>() {});
String userId = greenfoodorderlists.getUserId();
GreenUserInfo info = getUserInfo(userId);
if(info==null){
return new RestResult(Constant.FAILED, "非法用户");
}
try {
List<Object> params = new ArrayList<Object>();
//greenfoodorderdetailBizc.updateOrderStatus(userId);
StringBuffer sb = new StringBuffer();
Integer pageSize = greenfoodorderlists.getPageSize() == null ? 10 : Integer.parseInt(greenfoodorderlists.getPageSize());
Integer pageNum = greenfoodorderlists.getPageNum() == null ? 1 : Integer.parseInt(greenfoodorderlists.getPageNum());
String queryType = greenfoodorderlists.getQueryType() == null ? "0" :greenfoodorderlists.getQueryType() ;
String takeFoodPlace = greenfoodorderlists.getTakeFoodPlace();
String startDate = greenfoodorderlists.getStartDate();
String endDate = greenfoodorderlists.getEndDate();
String takeDay = "";
int limit = ((pageNum > 0 ? pageNum : 1) - 1) * pageSize;
pageSize = pageSize*pageNum;
sb.append(" select * from (select rn.*,rownum rw from ("
+ "Select id as \"id\",dining_room_id as \"dining_room_id\",user_id as \"user_id\",order_time as \"order_time\",pay_price as \"pay_price\",pay_status as \"pay_status\",order_status as \"order_status\","
+ "take_status as \"take_status\",buyer_name as \"buyer_name\",buyer_phone as \"buyer_phone\",creator as \"creator\",modifier as \"modifier\",gmt_created as \"gmt_created\",gmt_modified as \"gmt_modified\",is_deleted as \"is_deleted\","
+ "take_food_time as \"take_food_time\",take_food_place as \"take_food_place\",remarks as \"remarks\""
+ " from GREEN_FOOD_ORDER_LIST where ")
//.append(" SUBSTRING(order_time,1,10) = DATE_FORMAT(NOW(),'%Y-%m-%d') ")
.append(" is_deleted = 'N' and order_status <> '0' ");
if("0".equals(queryType)){
int week = DateUtil.getWeek(new Date());
if(week==1){
takeDay = DateUtil.addDays(4, new Date()).toString("yyyy-MM-dd");
}else if(week==2){
takeDay = DateUtil.addDays(3, new Date()).toString("yyyy-MM-dd");
}else if(week==3){
takeDay = DateUtil.addDays(2, new Date()).toString("yyyy-MM-dd");
}else if(week==4){
takeDay = DateUtil.addDays(1, new Date()).toString("yyyy-MM-dd");
}else if(week==5){
takeDay = DateUtil.addDays(0, new Date()).toString("yyyy-MM-dd");
}else if(week==6){
takeDay = DateUtil.addDays(6, new Date()).toString("yyyy-MM-dd");
}else if(week==7){
takeDay = DateUtil.addDays(5, new Date()).toString("yyyy-MM-dd");
}
sb.append(" and take_food_time= ? ");
params.add(takeDay);
}
if(!StringUtils.isEmpty(takeFoodPlace)){
sb.append(" and take_food_place= ? ");
params.add(takeFoodPlace);
}
if(!StringUtils.isEmpty(startDate)){
// startDate = startDate+" 00:00:00";
// numSql+=" and DATE_FORMAT(order_time,'%Y-%m-%d %H:%i:%S')>=? ";
// params2.add(startDate);
sb.append(" and take_food_time>=? ");
params.add(startDate);
}
if(!StringUtils.isEmpty(endDate)){
// endDate = endDate+" 23:59:59";
// numSql+=" and DATE_FORMAT(order_time,'%Y-%m-%d %H:%i:%S')<=? ";
// params2.add(endDate);
sb.append(" and take_food_time<=? ");
params.add(endDate);
}
sb.append(" order by order_time desc ) rn )where rw>? and rw<=?");
params.add(limit);
params.add(pageSize);
List<Map<String,Object>> orderList = hibernateDao.queryForListWithSql(sb.toString()
,params.toArray());
StringBuilder stringBuilder = new StringBuilder();
String stringId = null;
List<Map<String,Object>> numList =new ArrayList<Map<String,Object>>();
if (!orderList.isEmpty()) {
stringBuilder.append("(");
for (int i = 0;i<orderList.size();i++) {
stringId = String.valueOf(orderList.get(i).get("id"));
stringBuilder.append(stringId + ",");
}
String substring = null;
if (stringBuilder != null) {
substring = stringBuilder.substring(0, stringBuilder.length()-1) +")";
}
String sql = "Select a.id as \"id\",a.order_id as \"order_id\",a.goods_id as \"goods_id\",b.food_name as \"goods_name\",b.price as \"price\","
+ "a.goods_num as \"goods_num\",b.picture as \"goods_icon\",b.unit as \"unit\" from GREEN_FOOD_ORDER_DETAIL a left join GREEN_FOODS_KINDS b on a.goods_id = b.id where a.order_id in " + substring;
List<Map<String,Object>> detailList =hibernateDao.queryForListWithSql( sql);
for (Map<String, Object> map : detailList) {
String picString=(String)map.get("goods_icon");
map.put("goods_icon", baseService.getImageBase64(picString));
}
//初始化图片缓存
baseService.initImage();
String stringId2 = null;
String stringId3 = null;
Map<String, Object> map = new HashMap<String, Object>();
for (int i = 0; i < orderList.size(); i++) {
ArrayList<Object> arrayList = new ArrayList<Object>();
orderList.get(i).put("orderDetails",null);
stringId2 = String.valueOf(orderList.get(i).get("id"));
for (int j = 0; j < detailList.size(); j++) {
stringId3 = String.valueOf(detailList.get(j).get("order_id"));
if (stringId2.equals(stringId3)) {
arrayList.add(detailList.get(j));
orderList.get(i).put("orderDetails",arrayList);
}
}
}
List<Object> params2 = new ArrayList<Object>();
String numSql = " Select count(id) as \"num\",sum(case when order_status = 0 then 0 else pay_price end) as \"price\" from GREEN_FOOD_ORDER_LIST where " +
" is_deleted = 'N' and order_status <> '0' ";//SUBSTRING(order_time,1,10) = DATE_FORMAT(NOW(),'%Y-%m-%d') and
if("0".equals(queryType)){
numSql+=" and take_food_time= ? ";
params2.add(takeDay);
}
if(!StringUtils.isEmpty(takeFoodPlace)){
numSql+=" and take_food_place= ? ";
params2.add(takeFoodPlace);
}
if(!StringUtils.isEmpty(startDate)){
// startDate = startDate+" 00:00:00";
// numSql+=" and DATE_FORMAT(order_time,'%Y-%m-%d %H:%i:%S')>=? ";
// params2.add(startDate);
numSql+=" and take_food_time>=? ";
params2.add(startDate);
}
if(!StringUtils.isEmpty(endDate)){
// endDate = endDate+" 23:59:59";
// numSql+=" and DATE_FORMAT(order_time,'%Y-%m-%d %H:%i:%S')<=? ";
// params2.add(endDate);
numSql+=" and take_food_time<=? ";
params2.add(endDate);
}
numList = hibernateDao.queryForListWithSql(numSql,params2.toArray());
map.put("orderList", orderList);
map.put("numList", numList);
map.put("takeDay",takeDay);
//addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询我的订单列表", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
//orderList.get(i).put("orderDetails",detaiList);
return new RestResult(Constant.SUCCESS,"成功",map);
}
// greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询我的订单列表", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
Map<String, Object> map = new HashMap<String, Object>();
map.put("orderList", orderList);
map.put("numList", numList);
map.put("takeDay",takeDay);
return new RestResult(Constant.SUCCESS,"成功",map);
}catch (Exception e) {
e.printStackTrace();
// greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_FAIL, "查询我的订单列表", Constant.LOG_ERROR, greenfoodorderlists.getUserId());
return new RestResult(Constant.FAILED,"返回异常");
}
}
/**用户今日订单受理列表*/
@RequestMapping(value="/getAllFoodList", method = RequestMethod.POST)
@ResponseBody
public RestResult getAllFoodList(Map<String,Object> map){
String userId = map.get("userId").toString();
GreenUserInfo info = getUserInfo(userId);
if(info==null){
return new RestResult(Constant.FAILED, "非法用户");
}
try {
List<Object> params = new ArrayList<Object>();
//greenfoodorderdetailBizc.updateOrderStatus(userId);
StringBuffer sb = new StringBuffer();
String queryType = map.get("queryType").toString();
String takeFoodPlace = map.get("takeFoodPlace").toString();
String takeDay = "";
sb.append(" Select id as \"id\" from GREEN_FOOD_ORDER_LIST where is_deleted = 'N' and order_status <> '0' ");
if("0".equals(queryType)){
int week = DateUtil.getWeek(new Date());
if(week==1){
takeDay = DateUtil.addDays(4, new Date()).toString("yyyy-MM-dd");
}else if(week==2){
takeDay = DateUtil.addDays(3, new Date()).toString("yyyy-MM-dd");
}else if(week==3){
takeDay = DateUtil.addDays(2, new Date()).toString("yyyy-MM-dd");
}else if(week==4){
takeDay = DateUtil.addDays(1, new Date()).toString("yyyy-MM-dd");
}else if(week==5){
takeDay = DateUtil.addDays(0, new Date()).toString("yyyy-MM-dd");
}else if(week==6){
takeDay = DateUtil.addDays(6, new Date()).toString("yyyy-MM-dd");
}else if(week==7){
takeDay = DateUtil.addDays(5, new Date()).toString("yyyy-MM-dd");
}
sb.append(" and take_food_time= ? ");
params.add(takeDay);
}
if(!StringUtils.isEmpty(takeFoodPlace)){
sb.append(" and take_food_place= ? ");
params.add(takeFoodPlace);
}
List<Map<String,Object>> orderList = hibernateDao.queryForListWithSql(sb.toString()
,params.toArray());
StringBuilder stringBuilder = new StringBuilder();
String stringId = null;
if (!orderList.isEmpty()) {
stringBuilder.append("(");
for (int i = 0;i<orderList.size();i++) {
stringId = String.valueOf(orderList.get(i).get("id"));
stringBuilder.append(stringId + ",");
}
String substring = null;
if (stringBuilder != null) {
substring = stringBuilder.substring(0, stringBuilder.length()-1) +")";
}
String sql = "Select b.food_name as \"food_name\" ,sum( a.goods_num) as \"food_num\",b.unit as \"unit\" from GREEN_FOOD_ORDER_DETAIL a left join GREEN_FOODS_KINDS b on a.goods_id = b.id where a.order_id in "+substring+" group by b.food_name,b.unit,b.kinds"
+ " ORDER BY CASE WHEN b.kinds = '面点' THEN 0 WHEN b.kinds = '猪/牛肉' THEN 1 WHEN b.kinds = '卤菜' THEN 2 END" ;
List<Map<String,Object>> allFoodList =hibernateDao.queryForListWithSql( sql);
//addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询我的订单列表", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
//orderList.get(i).put("orderDetails",detaiList);
return new RestResult(Constant.SUCCESS,"成功",allFoodList);
}
// greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询我的订单列表", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
return new RestResult(Constant.SUCCESS,"成功",new ArrayList<Map<String,Object>>());
}catch (Exception e) {
e.printStackTrace();
// greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_FAIL, "查询我的订单列表", Constant.LOG_ERROR, greenfoodorderlists.getUserId());
return new RestResult(Constant.FAILED,"返回异常");
}
}
/**用户订单详情*/
@RequestMapping(value="/detail", method = RequestMethod.POST)
@ResponseBody
public RestResult detail(@RequestBody Object requestBody){
GreenFoodOrderListDTO greenfoodorderlists = new ObjectMapper().convertValue(requestBody, new TypeReference<GreenFoodOrderListDTO>() {});
String userId = greenfoodorderlists.getUserId();
GreenUserInfo info = getUserInfo(userId);
if(info==null){
return new RestResult(Constant.FAILED, "非法用户");
}
try {
// //对所有属性进行后端校验
// validateService.validateWithException(GreenFoodOrderList.class, changedProperies);
List<Map<String,String>> list = hibernateDao.queryForListWithSql("Select l.pay_price,l.order_status,l.dining_room_id,l.order_time,l.buyer_name,l.buyer_phone from GREEN_FOOD_ORDER_LIST l left join GREEN_FOOD_ORDER_DETAIL a on l.id = a.order_id left join GREEN_FOODS_KINDS b on a.goods_id = b.id where a.order_id = ?" ,new Object[]{ greenfoodorderlists.getOrderId()});
List detaiList = hibernateDao.queryForListWithSql("Select a.goods_id,a.order_id,b.price,b.food_name as 'goods_name',a.goods_num,b.picture as 'goods_icon' from GREEN_FOOD_ORDER_LIST l left join GREEN_FOOD_ORDER_DETAIL a on l.id = a.order_id left join GREEN_FOODS_KINDS b on a.goods_id = b.id where a.order_id = ?" ,new Object[]{ greenfoodorderlists.getOrderId()});
for (Object map : detaiList) {
Map maps= (Map)map;
String picString=(String)maps.get("goods_icon");
maps.put("goods_icon",baseService.getImageBase64(picString));
}
if (list.isEmpty()) {
return new RestResult(Constant.FAILED,"返回异常");
}
String orderStatus = list.get(0).get("order_status");
String payPrice = String.valueOf(list.get(0).get("pay_price"));
String diningRoomId = String.valueOf(list.get(0).get("dining_room_id"));
String orderTime = list.get(0).get("order_time");
Map<String,Object> map = new HashMap<String, Object>();
map.put("diningRoomId",diningRoomId );
map.put("payPrice", payPrice);
map.put("orderStatus", orderStatus);
map.put("detaiList", detaiList);
map.put("orderTime", orderTime);
map.put("realName", list.get(0).get("buyer_name"));
map.put("mobilePhone", list.get(0).get("buyer_phone"));
if (detaiList == null) {
return new RestResult(Constant.FAILED,"返回异常");
}
//greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询我的订单详情", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
return new RestResult(Constant.SUCCESS,"成功",map);
}catch (ServiceValidatorBaseException e) {
throw e;
}catch (Exception e) {
e.printStackTrace();
//greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_FAIL, "查询我的订单详情", Constant.LOG_ERROR, greenfoodorderlists.getUserId());
return new RestResult(Constant.FAILED,"返回异常");
}
}
/**取消订单*/
@SuppressWarnings({ "unchecked", "rawtypes" })
@RequestMapping(value="/cancelOrder", method = RequestMethod.POST)
@Transactional(rollbackFor=Exception.class)
@ResponseBody
public RestResult cancelOrder(@RequestBody Object requestBody){
GreenFoodOrderListDTO greenfoodorderlists = new ObjectMapper().convertValue(requestBody, new TypeReference<GreenFoodOrderListDTO>() {});
try {
//加锁 防止出错
lock.lock();
String userId = greenfoodorderlists.getUserId();
GreenUserInfo info = getUserInfo(userId);
if(info==null){
return new RestResult(Constant.FAILED, "非法用户");
}
// //对所有属性进行后端校验
// validateService.validateWithException(GreenFoodOrderList.class, changedProperies);
GreenFoodOrderList greenFoodOrderList = greenfoodorderlistBizc.get(greenfoodorderlists.getOrderId());
// //对订餐时间做校验
// List<GreenDiningRoom> queryForListWithSql = hibernateDao.queryForListWithSql("Select order_time from GREEN_DINING_ROOM where id = ? ",new Object[]{greenFoodOrderList.getDiningRoomId()},new BeanPropertyRowMapper(GreenDiningRoom.class));
// String cancelOrder = queryForListWithSql.get(0).getOrderTime();
// String[] split = cancelOrder.split("-");
// String format = new SimpleDateFormat("HH:mm").format(new Date());
// long startDate = Long.valueOf(split[0].replaceAll("[-\\s:]",""));
// long endDate = Long.valueOf(split[1].replaceAll("[-\\s:]",""));
// long formatDate1 = Long.valueOf(format.replaceAll("[-\\s:]",""));
// if (formatDate1 < startDate || formatDate1 > endDate) {
// return new RestResult(Constant.FAILED,"不在订餐时间内,不能取消订单!");
// }
if (greenFoodOrderList != null) {
greenFoodOrderList.setOrderStatus(OrderStatus.ORDER_STATUS_CANCEL.getName());
greenfoodorderlistBizc.update(greenFoodOrderList, greenFoodOrderList.getId());
}
//回库存
List<GreenFoodOrderDetail> list = hibernateDao.queryForListWithSql("Select * from GREEN_FOOD_ORDER_DETAIL where order_id = ? ",new Object[]{greenfoodorderlists.getOrderId()},new BeanPropertyRowMapper(GreenFoodOrderDetail.class));
Long diningRoomId = greenFoodOrderList.getDiningRoomId();
List<Map<String,String>> menuList = null;
if (!list.isEmpty()) {
for (GreenFoodOrderDetail greenFoodOrderDetail : list) {
String menuSql = "SELECT a.id as \"id\",a.location_id as \"location_id\",a.kinds_id as \"kinds_id\",a.menu_id as \"menu_id\",a.food_name as \"food_name\",a.no_buy_num as \"no_buy_num\","
+ "a.sell_number as \"sell_number\",a.quota as \"quota\",a.upload_date as \"upload_date\",a.status as \"status\",a.creator as \"creator\",a.modifier as \"modifier\","
+ "a.gmt_created as \"gmt_created\",a.gmt_modified as \"gmt_modified\",a.is_deleted as \"is_deleted\""
+ " FROM GREEN_FOODS_VARIETY a left join GREEN_FOODS_KINDS b on a.kinds_id = b.id where a.is_deleted = 'N' and a.location_id = ? and kinds_id = ? and a.upload_date = to_char(sysdate,'yyyy-mm-dd')";
menuList = hibernateDao.queryForListWithSql(menuSql,new Object[]{diningRoomId, Long.valueOf(greenFoodOrderDetail.getGoodsId())});
String noBuyNum = String.valueOf(menuList.get(0).get("no_buy_num"));
BigDecimal noBuyNumDecimal = new BigDecimal(noBuyNum);
String goodsNum = greenFoodOrderDetail.getGoodsNum();
BigDecimal goodsNumDecimal = new BigDecimal(goodsNum);
noBuyNumDecimal = noBuyNumDecimal.add(goodsNumDecimal);
hibernateDao.executeSqlUpdate("update GREEN_FOODS_VARIETY set no_buy_num = ? where is_deleted = 'N' and id = ?",
new Object[]{ noBuyNumDecimal, menuList.get(0).get("id")});
// if (diningRoomId == 1) {
// menuList = hibernateDao.queryForListWithSql("SELECT a.* FROM GREEN_FOODS_VARIETY a left join GREEN_FOODS_KINDS b on a.kinds_id = b.id where a.is_deleted = 'N' and a.location_id = 1 and kinds_id = ? and a.upload_date = (SELECT upload_date FROM GREEN_FOODS_VARIETY WHERE upload_date <= DATE_FORMAT(now(), '%Y-%m-%d') and location_id = 1 and is_deleted = 'N' ORDER BY upload_date DESC LIMIT 1 ) ",new Object[]{Long.valueOf(greenFoodOrderDetail.getGoodsId())});
// String noBuyNum = String.valueOf(menuList.get(0).get("no_buy_num"));
// BigDecimal noBuyNumDecimal = new BigDecimal(noBuyNum);
// String goodsNum = greenFoodOrderDetail.getGoodsNum();
// BigDecimal goodsNumDecimal = new BigDecimal(goodsNum);
// noBuyNumDecimal = noBuyNumDecimal.add(goodsNumDecimal);
// hibernateDao.updateWithSql("update GREEN_FOODS_VARIETY set no_buy_num = ? where is_deleted = 'N' and id = ?",new Object[]{ noBuyNumDecimal,menuList.get(0).get("id")});
// }
// if (diningRoomId == 2) {
// menuList = hibernateDao.queryForListWithSql("SELECT a.* FROM GREEN_FOODS_VARIETY a left join GREEN_FOODS_KINDS b on a.kinds_id = b.id where a.is_deleted = 'N' and a.location_id = 2 and kinds_id = ? and a.upload_date = (SELECT upload_date FROM GREEN_FOODS_VARIETY WHERE upload_date <= DATE_FORMAT(now(), '%Y-%m-%d') and location_id = 2 and is_deleted = 'N' ORDER BY upload_date DESC LIMIT 1 ) ",new Object[]{Long.valueOf(greenFoodOrderDetail.getGoodsId())});
// String noBuyNum = String.valueOf(menuList.get(0).get("no_buy_num"));
// BigDecimal noBuyNumDecimal = new BigDecimal(noBuyNum);
// String goodsNum = greenFoodOrderDetail.getGoodsNum();
// BigDecimal goodsNumDecimal = new BigDecimal(goodsNum);
// noBuyNumDecimal = noBuyNumDecimal.add(goodsNumDecimal);
// hibernateDao.updateWithSql("update GREEN_FOODS_VARIETY set no_buy_num = ? where is_deleted = 'N' and id = ?",new Object[]{ noBuyNumDecimal,menuList.get(0).get("id")});
// }
}
}
String title = "外卖预订";
String text = "您好,您已成功取消订单。";
String url = "/pages/take-out2/take-out3?currentTabIndex=1";
aliasManageController.pushToSingle(greenFoodOrderList.getUserId(), title, text, url);
String role = "14002";//外卖受理权限
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/today-order/today-order";
aliasManageController.pushToSingleBatch(userList2, title, text, url);
//greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.CANCEL, Constant.OPERATE_SUCCESS, "取消我的订单", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
return new RestResult(Constant.SUCCESS,"成功");
}catch (ServiceValidatorBaseException e) {
throw e;
}catch (Exception e) {
e.printStackTrace();
//greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.CANCEL, Constant.OPERATE_FAIL, "取消我的订单", Constant.LOG_ERROR, greenfoodorderlists.getUserId());
//设置手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return new RestResult(Constant.FAILED,"返回异常");
}finally {
if (lock.isLocked()) {
lock.unlock();
}
}
}
/**食堂师傅-订单列表*/
@RequestMapping(value="/listByLocation", method = RequestMethod.POST)
@ResponseBody
public RestResult listBylocation(@RequestBody Object requestBody){
GreenFoodOrderListDTO greenfoodorderlists = new ObjectMapper().convertValue(requestBody, new TypeReference<GreenFoodOrderListDTO>() {});
String userId = greenfoodorderlists.getUserId();
GreenUserInfo info = getUserInfo(userId);
if(info==null){
return new RestResult(Constant.FAILED, "非法用户");
}
try {
// //对所有属性进行后端校验
// validateService.validateWithException(GreenFoodOrderList.class, changedProperies);
GreenUserInfo userInfo = getUserInfo(String.valueOf(greenfoodorderlists.getUserId()));
String ownerLocation = userInfo.getOwnerLocation();
List<Map<String,Object>> orderList = hibernateDao.queryForListWithSql("Select * from GREEN_FOOD_ORDER_LIST where dining_room_id = ? and order_status = '1' and STR_TO_DATE(order_time, '%Y-%m-%d') = date_format(now(),'%y-%m-%d') order by order_time desc" ,new Object[]{ ownerLocation});
StringBuilder stringBuilder = new StringBuilder();
String stringId = null;
if (!orderList.isEmpty()) {
stringBuilder.append("(");
for (int i = 0;i<orderList.size();i++) {
stringId = String.valueOf(orderList.get(i).get("id"));
stringBuilder.append(stringId + ",");
}
String substring = null;
if (stringBuilder != null) {
substring = stringBuilder.substring(0, stringBuilder.length()-1) +")";
}
String sql = "Select a.id,a.order_id,a.goods_id,b.food_name as 'goods_name',b.price,a.goods_num,b.picture as 'goods_icon' from GREEN_FOOD_ORDER_DETAIL a left join GREEN_FOODS_KINDS b on a.goods_id = b.id where order_id in " + substring;
List<Map<String,Object>> detailList =hibernateDao.queryForListWithSql(sql );
for (Map<String, Object> map : detailList) {
String pictureString=(String)map.get("goods_icon");
map.put("goods_icon", baseService.getImageBase64(pictureString));
}
String stringId2 = null;
String stringId3 = null;
for (int i = 0; i < orderList.size(); i++) {
ArrayList<Object> arrayList = new ArrayList<Object>();
stringId2 = String.valueOf(orderList.get(i).get("id"));
for (int j = 0; j < detailList.size(); j++) {
stringId3 = String.valueOf(detailList.get(j).get("order_id"));
if (stringId2.equals(stringId3)) {
arrayList.add(detailList.get(j));
orderList.get(i).put("orderDetails",arrayList);
if ("1".equals(ownerLocation) ) {
orderList.get(i).put("diningRoomName", Constant.DINING_HQ);
}
if ("2".equals(ownerLocation)) {
orderList.get(i).put("diningRoomName", Constant.DINING_YZ);
}
}
}
}
}
//greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询今日订单列表", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
return new RestResult(Constant.SUCCESS,"成功",orderList);
}catch (ServiceValidatorBaseException e) {
throw e;
}catch (Exception e) {
e.printStackTrace();
addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_FAIL, "查询今日订单列表", Constant.LOG_ERROR, greenfoodorderlists.getUserId());
return new RestResult(Constant.FAILED,"返回异常");
}
}
/**食堂师傅-订单概览*/
@RequestMapping(value="/sellView", method = RequestMethod.POST)
@ResponseBody
public RestResult sellView(@RequestBody Object requestBody){
GreenFoodOrderListDTO greenfoodorderlists = new ObjectMapper().convertValue(requestBody, new TypeReference<GreenFoodOrderListDTO>() {});
try {
String userId = greenfoodorderlists.getUserId();
GreenUserInfo info = getUserInfo(userId);
if(info==null){
return new RestResult(Constant.FAILED, "非法用户");
}
GreenUserInfo userInfo = getUserInfo(String.valueOf(greenfoodorderlists.getUserId()));
String ownerLocation = userInfo.getOwnerLocation();
List<Map<String,Object>> orderList = hibernateDao.queryForListWithSql("Select COUNT(*) as 'orderCount',IF(sum(pay_price) is null,0,sum(pay_price)) AS 'sellPrice' from GREEN_FOOD_ORDER_LIST where dining_room_id = ? and order_status = '1' and STR_TO_DATE(order_time, '%Y-%m-%d') = date_format(now(),'%y-%m-%d') order by order_time desc" ,new Object[]{ ownerLocation});
Map<String,Object> map = new HashMap<String, Object>();
map.put("orderCount", orderList.get(0).get("orderCount"));
map.put("sellPrice", orderList.get(0).get("sellPrice"));
//greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询今日订单概览", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
return new RestResult(Constant.SUCCESS,"成功",map);
}catch (ServiceValidatorBaseException e) {
throw e;
}catch (Exception e) {
e.printStackTrace();
addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_FAIL, "查询今日订单概览", Constant.LOG_ERROR, greenfoodorderlists.getUserId());
return new RestResult(Constant.FAILED,"返回异常");
}
}
/**食堂师傅-热卖菜品*/
@RequestMapping(value="/sellHot", method = RequestMethod.POST)
@ResponseBody
public RestResult sellHot(@RequestBody Object requestBody){
GreenFoodOrderListDTO greenfoodorderlists = new ObjectMapper().convertValue(requestBody, new TypeReference<GreenFoodOrderListDTO>() {});
try {
String userId = greenfoodorderlists.getUserId();
GreenUserInfo info = getUserInfo(userId);
if(info==null){
return new RestResult(Constant.FAILED, "非法用户");
}
GreenUserInfo userInfo = getUserInfo(String.valueOf(greenfoodorderlists.getUserId()));
String ownerLocation = userInfo.getOwnerLocation();
// List<Map<String,Object>> orderList = hibernateDao.queryForListWithSql("Select k.food_name,any_value(i.image_content) AS 'image_content',IF(sum(d.goods_num) is null,0,sum(d.goods_num)) AS 'sellNum' from GREEN_FOOD_ORDER_LIST l"
// +" LEFT JOIN GREEN_FOOD_ORDER_DETAIL d ON l.id = d.order_id LEFT JOIN GREEN_FOODS_KINDS k ON k.id = d.goods_id LEFT JOIN GREEN_IMAGE_INFO i on i.id = k.picture where l.dining_room_id = ? and l.order_status = '1' and STR_TO_DATE(l.order_time, '%Y-%m-%d') = date_format(now(),'%y-%m-%d') AND l.is_deleted = 'N' GROUP BY k.food_name order by sellNum desc" ,new Object[]{ ownerLocation});
List<Map<String,Object>> orderList = hibernateDao.queryForListWithSql("Select k.food_name,k.picture AS 'image_content',IF(sum(d.goods_num) is null,0,sum(d.goods_num)) AS 'sellNum' from GREEN_FOOD_ORDER_LIST l"
+" LEFT JOIN GREEN_FOOD_ORDER_DETAIL d ON l.id = d.order_id LEFT JOIN GREEN_FOODS_KINDS k ON k.id = d.goods_id where l.dining_room_id = ? and l.order_status = '1' and STR_TO_DATE(l.order_time, '%Y-%m-%d') = date_format(now(),'%y-%m-%d') AND l.is_deleted = 'N' GROUP BY k.food_name,k.picture order by sellNum desc" ,new Object[]{ ownerLocation});
for (Map<String, Object> map : orderList) {
String picString=String.valueOf(map.get("image_content"));
map.put("image_content", baseService.getImageBase64(picString));
}
//greenOperateLogBizc.addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_SUCCESS, "查询今日订单热销菜品", Constant.LOG_OPERATE, greenfoodorderlists.getUserId());
return new RestResult(Constant.SUCCESS,"成功",orderList);
}catch (ServiceValidatorBaseException e) {
throw e;
}catch (Exception e) {
e.printStackTrace();
addLog(Constant.ORDER_LIST, Constant.QUERY, Constant.OPERATE_FAIL, "查询今日订单热销菜品", Constant.LOG_ERROR, greenfoodorderlists.getUserId());
return new RestResult(Constant.FAILED,"返回异常");
}
}
}