package com.matrix.system.hive.action;
|
|
import com.matrix.core.constance.MatrixConstance;
|
import com.matrix.core.exception.GlobleException;
|
import com.matrix.core.pojo.AjaxResult;
|
import com.matrix.core.pojo.PaginationVO;
|
import com.matrix.core.tools.DateUtil;
|
import com.matrix.core.tools.StringUtils;
|
import com.matrix.core.tools.WebUtil;
|
import com.matrix.core.tools.excl.ExcelSheetPO;
|
import com.matrix.core.tools.excl.ExcelUtil;
|
import com.matrix.core.tools.excl.ExcelVersion;
|
import com.matrix.system.common.bean.SysUsers;
|
import com.matrix.system.common.tools.ResponseHeadUtil;
|
import com.matrix.system.constance.Dictionary;
|
import com.matrix.system.constance.SystemConstance;
|
import com.matrix.system.hive.action.util.QueryUtil;
|
import com.matrix.system.hive.bean.AchieveNew;
|
import com.matrix.system.hive.bean.MoneyCardUse;
|
import com.matrix.system.hive.bean.SysOrder;
|
import com.matrix.system.hive.bean.SysOrderItem;
|
import com.matrix.system.hive.dao.MoneyCardUseDao;
|
import com.matrix.system.hive.dao.SysOrderDao;
|
import com.matrix.system.hive.dao.SysOrderItemDao;
|
import com.matrix.system.hive.dao.SysShopInfoDao;
|
import com.matrix.system.hive.plugin.util.DateUtils;
|
import com.matrix.system.hive.pojo.ShoppingCarItem;
|
import com.matrix.system.hive.pojo.ShoppingCarItemsVo;
|
import com.matrix.system.hive.service.AchieveNewService;
|
import com.matrix.system.hive.service.MoneyCardUseService;
|
import com.matrix.system.hive.service.SysOrderItemService;
|
import com.matrix.system.hive.service.SysOrderService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.ui.ModelMap;
|
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.IOException;
|
import java.io.OutputStream;
|
import java.math.BigDecimal;
|
import java.net.URLEncoder;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.List;
|
|
/**
|
* 线下订单
|
*
|
* @author jiangyouyao
|
* @date 2016-09-08
|
*/
|
@Controller
|
@RequestMapping(value = "admin/order")
|
public class OrderController extends BaseController {
|
@Resource
|
private SysOrderService orderService;
|
|
@Autowired
|
private SysOrderItemDao orderItemDao;
|
|
@Resource
|
private MoneyCardUseService cardUseService;
|
|
@Autowired
|
private MoneyCardUseDao moneyCardUseDao;
|
|
@Autowired
|
private SysOrderItemService orderItemService;
|
|
@Autowired
|
private SysOrderDao sysOrderDao;
|
|
@Autowired
|
private AchieveNewService achieveNewService;
|
|
@Autowired
|
SysShopInfoDao shopInfoDao;
|
|
|
/**
|
* 计算订单金额
|
*/
|
@RequestMapping(value = "/calculationOrder")
|
public @ResponseBody
|
AjaxResult calculationOrder(@RequestBody SysOrder sysOrder) {
|
BigDecimal total = BigDecimal.ZERO;
|
BigDecimal zkTotal = BigDecimal.ZERO;
|
//默认排序
|
List<SysOrderItem> items = sysOrder.getItems();
|
|
for (int i = 0; i < items.size(); i++) {
|
SysOrderItem item = items.get(i);
|
zkTotal = zkTotal.add(new BigDecimal(item.getZkPrice() * item.getCount()));
|
total = total.add(new BigDecimal(item.getPrice() * item.getCount()));
|
}
|
SysOrder sysOrderResult = new SysOrder();
|
sysOrderResult.setZkTotal(zkTotal.doubleValue());
|
sysOrderResult.setTotal(total.doubleValue());
|
|
return AjaxResult.buildSuccessInstance(Arrays.asList(sysOrderResult));
|
}
|
|
|
/**
|
* 订单支付
|
*/
|
@RequestMapping(value = "/payOrder")
|
@Transactional(rollbackFor = Exception.class)
|
public @ResponseBody
|
AjaxResult payOrder(@RequestBody SysOrder sysOrder) {
|
SysUsers user = getMe();
|
sysOrder.setShopId(user.getShopId());
|
//校验订单是否满足结算调价,新订单则保存订单,已有订单则删除后更新
|
sysOrder = orderService.checkAndSaveOrder(sysOrder);
|
orderService.updateReceiptMoney(sysOrder);
|
//处理用户购买的产品
|
return AjaxResult.buildSuccessInstance(Arrays.asList(sysOrder), "订单结算成功");
|
}
|
|
|
|
|
|
|
|
/**
|
* 订单保存接口
|
*/
|
@RequestMapping(value = "/saveOrder")
|
@Transactional(rollbackFor = Exception.class)
|
public @ResponseBody
|
AjaxResult saveOrder(@RequestBody SysOrder sysOrder) {
|
SysUsers user = getMe();
|
sysOrder.setShopId(user.getShopId());
|
//校验保存订单
|
sysOrder = orderService.checkAndSaveOrder(sysOrder);
|
//处理用户购买的产品
|
return AjaxResult.buildSuccessInstance(Arrays.asList(sysOrder), "订单保存成功");
|
}
|
|
|
/**
|
* 新建订单
|
*
|
* @author jiangyouyao
|
*/
|
@RequestMapping(value = "/addOrder")
|
public @ResponseBody
|
AjaxResult addOrder(ShoppingCarItemsVo car) {
|
|
List<ShoppingCarItem> sessionCarItems = (List<ShoppingCarItem>) WebUtil.getSession().getAttribute(
|
SystemConstance.SHOPPING_CAR);
|
|
List<ShoppingCarItem> carItems = new ArrayList<>();
|
|
// 设置购车中的具体类型信息,过滤没有被选中的商品
|
for (ShoppingCarItem carItem : car.getCarItems()) {
|
|
for (ShoppingCarItem sessionCar : sessionCarItems) {
|
|
if (carItem.getId().equals(sessionCar.getId())) {
|
//已最后提交的数量为准
|
sessionCar.setCount(carItem.getCount());
|
carItems.add(sessionCar);
|
break;
|
}
|
}
|
}
|
//设置过滤后的购物车条目
|
car.setCarItems(carItems);
|
|
// 添加新订单
|
int i = orderService.createOrder(WebUtil.getSession(), car);
|
|
if (i > 0) {
|
WebUtil.getSession().removeAttribute(SystemConstance.SHOPPING_CAR);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "下单成功");
|
} else {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "下单添加失败");
|
}
|
}
|
|
|
/**
|
* 列表显示
|
*/
|
@RequestMapping(value = "/showList")
|
public @ResponseBody
|
AjaxResult showList(SysOrder sysOrder, PaginationVO pageVo) {
|
//默认排序
|
if (StringUtils.isBlank(pageVo.getSort())) {
|
pageVo.setSort("order_time");
|
}
|
if (StringUtils.isBlank(pageVo.getOrder())) {
|
pageVo.setOrder("desc");
|
}
|
sysOrder.setShopId(getMe().getShopId());
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, orderService.findInPage(sysOrder, pageVo),
|
orderService.findTotal(sysOrder));
|
}
|
|
/**
|
* 展示员工创建的订单列表显示
|
*/
|
@RequestMapping(value = "/showStaffOrder")
|
public @ResponseBody
|
AjaxResult showStaffOrder(SysOrder sysOrder, PaginationVO pageVo) {
|
sysOrder.setStaffId(getMe().getSuId());
|
return showList(sysOrder, pageVo);
|
}
|
|
|
/**
|
* 收款
|
*/
|
@RequestMapping(value = "sk")
|
public @ResponseBody
|
AjaxResult sk(SysOrder order) throws GlobleException {
|
orderService.updateReceiptMoney(order);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "收款成功");
|
}
|
|
|
/**
|
* 更新订单的
|
*/
|
@RequestMapping(value = "/updateOrderTime")
|
public @ResponseBody
|
AjaxResult updateOrderTime(SysOrder sysOrder) {
|
|
sysOrderDao.updateOrderTime(sysOrder.getOrderTime(), sysOrder.getId());
|
// 修改业绩时间
|
// 更新业绩时间
|
AchieveNew achieveNew = new AchieveNew();
|
achieveNew.setOrderId(sysOrder.getId());
|
achieveNew.setDatatime(sysOrder.getOrderTime());
|
achieveNewService.modifyAchieveTime(achieveNew);
|
return new AjaxResult(AjaxResult.STATUS_SUCCESS, "修改成功");
|
}
|
|
/**
|
* 根据订单ID查询订单信息
|
*/
|
@RequestMapping(value = "/getShopOrder")
|
public @ResponseBody
|
AjaxResult getShopOrder(Long id) {
|
SysOrder order = orderService.findById(id);
|
order.setItems(orderItemDao.selectByOrderId(id));
|
AjaxResult result = AjaxResult.buildSuccessInstance("");
|
result.putInMap("order", order);
|
MoneyCardUse cardUseInfo = cardUseService.findByVipId(order.getVipId());
|
|
if (cardUseInfo == null) {
|
cardUseInfo = new MoneyCardUse();
|
cardUseInfo.setVipId(order.getVipId());
|
cardUseInfo.setCardName("储值卡");
|
cardUseInfo.setIsVipCar(Dictionary.FLAG_YES_Y);
|
cardUseInfo.setRealMoney(0D);
|
cardUseInfo.setGiftMoney(0D);
|
cardUseInfo.setSource("-");
|
cardUseInfo.setStatus(Dictionary.MONEYCARD_STATUS_YX);
|
cardUseInfo.setFailTime(DateUtil.stringToDate("2050-01-01 00:00",DateUtil.DATE_FORMAT_MM));
|
moneyCardUseDao.insert(cardUseInfo);
|
}
|
|
//打印需求加入门店信息
|
result.putInMap("shopInfo", shopInfoDao.selectById(order.getShopId()));
|
|
result.putInMap("moneyCar", cardUseInfo);
|
|
//查询会有所有有效的会员卡
|
result.putInMap("totalMoney", moneyCardUseDao.selectVipCardTotalMoney(order.getVipId()));
|
|
|
|
return result;
|
}
|
|
/**
|
* 根据订单ID查询订单信息
|
*/
|
@RequestMapping(value = "/findOrderById/{id}")
|
@ResponseBody
|
public AjaxResult findOrderById(@PathVariable Long id) {
|
SysOrder order = orderService.findById(id);
|
order.setItems(orderItemDao.selectByOrderId(id));
|
return AjaxResult.buildSuccessInstance(Arrays.asList(order));
|
}
|
|
|
//=======================================页面转发==================================
|
|
|
/**
|
* 根据订单ID查询订单信息
|
*/
|
@RequestMapping(value = "/findOrderDetailById")
|
public String findOrderDetailById(Long id) {
|
SysOrder order = orderService.findById(id);
|
order.setItems(orderItemDao.selectByOrderId(id));
|
WebUtil.getRequest().setAttribute("order", order);
|
return "admin/hive/mobile/order-history-msg";
|
}
|
|
/**
|
* 跳转 收款页面
|
*
|
* @author jyy
|
*/
|
@RequestMapping(value = "/editFormSk1")
|
public String editFormSk1(Long id) {
|
// 根据id查到对应的订单信息
|
SysOrder order = orderService.findById(id);
|
|
//查询出订单明细
|
List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(id);
|
|
order.setItems(sysOrderItems);
|
WebUtil.getRequest().setAttribute("order", order);
|
|
MoneyCardUse moneyCardUse = new MoneyCardUse();
|
moneyCardUse.setVipId(order.getVipId());
|
moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
|
List<MoneyCardUse> cards = cardUseService.findByModel(moneyCardUse);
|
|
WebUtil.getRequest().setAttribute("cards", cards);
|
|
return "admin/hive/beautySalon/sk-form";
|
}
|
|
/**
|
* 查询订单信息
|
*
|
* @throws GlobleException
|
* @author jyy
|
*/
|
@RequestMapping(value = "/getOrder")
|
public String getOrder(Long id) {
|
SysOrder order = orderService.findById(id);
|
MoneyCardUse moneyCardUse = new MoneyCardUse();
|
moneyCardUse.setVipId(order.getVipId());
|
moneyCardUse.setStatus(Dictionary.MONEYCARD_STATUS_YX);
|
List<MoneyCardUse> cards = cardUseService.findByModel(moneyCardUse);
|
WebUtil.getRequest().setAttribute("cards", cards);
|
WebUtil.getRequest().setAttribute("order", order);
|
return "admin/hive/beautySalon/point-order";
|
}
|
|
/**
|
* 跳转 消费流水详情页面
|
*
|
* @author jyy
|
*/
|
@RequestMapping(value = "/orderItem")
|
public String orderItem(SysOrder orderVo) {
|
// 根据id查到对应的订单信息
|
SysOrder order=null;
|
if(orderVo.getId()!=null){
|
order = orderService.findById(orderVo.getId());
|
}else if(StringUtils.isNotBlank(orderVo.getOrderNo())){
|
List<SysOrder> byModel = orderService.findByModel(orderVo);
|
if(byModel.size()==1){
|
order=orderService.findById(byModel.get(0).getId());
|
}
|
}
|
List<SysOrderItem> sysOrderItems = orderItemDao.selectByOrderId(order.getId());
|
order.setItems(sysOrderItems);
|
|
WebUtil.getRequest().setAttribute("order", order);
|
// 根据会员Id查到会员有效的会员卡
|
// 根据订单号查找订单条目
|
SysOrderItem orderItem = new SysOrderItem();
|
orderItem.setOrderId(order.getId());
|
List<SysOrderItem> orderItems = orderItemService.findByModel(orderItem);
|
WebUtil.getRequest().setAttribute("orderItems", orderItems);
|
|
MoneyCardUse moneyCardUse = new MoneyCardUse();
|
moneyCardUse.setVipId(order.getVipId());
|
List<MoneyCardUse> cards = cardUseService.findByModel(moneyCardUse);
|
|
WebUtil.getRequest().setAttribute("cards", cards);
|
return "admin/hive/beautySalon/orderXq-form";
|
}
|
|
|
@RequestMapping(value = "/toUpdateTime")
|
public String toUpdateTime(Long id) {
|
// 根据id查到对应的订单信息
|
SysOrder order = orderService.findById(id);
|
WebUtil.getRequest().setAttribute("order", order);
|
return "admin/hive/beautySalon/updateOrderTime";
|
}
|
//=======================================页面转发END==================================
|
|
|
/**
|
* 取消订单
|
*/
|
@Transactional(rollbackFor = Exception.class)
|
@RequestMapping(value = "/cancelOrder")
|
public @ResponseBody
|
AjaxResult cancelOrder(Long id, Integer del) {
|
|
AjaxResult result = new AjaxResult();
|
SysOrder order = orderService.findById(id);
|
if (order == null) {
|
return new AjaxResult(AjaxResult.STATUS_FAIL, "订单不存在!");
|
}
|
orderService.cancelOrder(id);
|
if (del > 0) {
|
orderService.removeById(id);
|
result.setInfo("删除成功!");
|
} else {
|
result.setInfo("取消成功!");
|
}
|
result.setStatus(AjaxResult.STATUS_SUCCESS);
|
|
return result;
|
}
|
|
@RequestMapping(value = "/exportExcel")
|
public void report(ModelMap model, HttpServletRequest request, HttpServletResponse response,
|
SysOrder sysOrder) throws Exception {
|
SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
|
sysOrder.setShopId(sysUsers.getShopId());
|
doExportOrder(response, sysOrder);
|
return;
|
|
}
|
|
/**
|
* 总部订单导出
|
*/
|
@RequestMapping(value = "/erpExportExcel")
|
public void erpExportExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response,
|
SysOrder sysOrder) throws Exception {
|
doExportOrder(response, sysOrder);
|
return;
|
|
}
|
|
|
|
|
/**
|
* 执行订单导出,总部和门店共用,但是搜索条件不一样
|
* @param response
|
* @param sysOrder
|
* @throws IOException
|
*/
|
private void doExportOrder(HttpServletResponse response, SysOrder sysOrder) throws IOException {
|
List<ExcelSheetPO> res = new ArrayList<>();
|
ExcelSheetPO orderSheet = new ExcelSheetPO();
|
String title = "订单记录";
|
orderSheet.setSheetName(title);
|
orderSheet.setTitle(title);
|
String[] header = {"订单号", "客户姓名", "客户手机", "下单时间", "订单总价", "折后价", "现金付款", "卡付款", "顾问姓名", "所属门店", "订单状态"};
|
orderSheet.setHeaders(header);
|
//门店只能查询本店自己的订单
|
List<SysOrder> dataList = orderService.findInPage(sysOrder, null);
|
List<List<Object>> list = new ArrayList<>();
|
if (dataList.size() > 0) {
|
for (SysOrder item : dataList) {
|
List<Object> temp = new ArrayList<>();
|
temp.add(item.getOrderNo());
|
temp.add(item.getVipName());
|
temp.add(item.getVipPhone());
|
temp.add(DateUtils.dateToString(item.getOrderTime(), DateUtils.DATE_FORMAT_MM));
|
temp.add(item.getTotal());
|
temp.add(item.getZkTotal());
|
temp.add(item.getCashPay());
|
temp.add(item.getCardPay());
|
temp.add(item.getStaffName());
|
temp.add(item.getShopName());
|
temp.add(item.getStatu());
|
list.add(temp);
|
}
|
}
|
orderSheet.setDataList(list);
|
res.add(orderSheet);
|
response = ResponseHeadUtil.setExcelHead(response);
|
response.setHeader("Content-Disposition",
|
"attachment;filename=" + URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8"));
|
OutputStream os = response.getOutputStream();
|
ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true);
|
}
|
|
|
}
|