Commit bbb647d2 by Huang Linyu

Merge branch 'f-6.6.7' into release

parents 046fbd8d afa3323e
package com.ctrip.fun.golf.api.order;
import java.io.Serializable;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
......@@ -16,6 +17,8 @@ import com.ctrip.fun.common.vo.order.EventActivityOrderListBean;
import com.ctrip.fun.common.vo.order.EventActivityOrderListExcelBean;
import com.ctrip.fun.common.vo.order.EventActivityOrderProcessBean;
import com.ctrip.fun.common.vo.order.OpEventActivityOrderBean;
import com.ctrip.fun.common.vo.order.OpOrderQuery;
import com.ctrip.fun.common.vo.product.CourseResourceBean;
import com.ctrip.fun.golf.service.order.AbstractOpOrderService;
import com.ctrip.fun.golf.service.order.OpEventActivityOrderService;
......@@ -57,7 +60,7 @@ public class OpEventActivityOrderController extends
*/
@ResponseBody
@RequestMapping(value = "/confirmEventActivityOrderResourceTeeTime", method = RequestMethod.POST)
public Response<Serializable> confirmEventActivityOrderResourceTeeTime(@RequestBody Request<EventActivityOrderProcessBean> request) {
public Response<Serializable> confirmEventActivityOrderResourceTeeTime(@RequestBody Request<EventActivityOrderProcessBean> request ) {
EventActivityOrderProcessBean orderProcessBean = request.getBody();
opEventActivityOrderService.confirmEventActivityOrderResourceTeeTime(orderProcessBean);
Response<Serializable> response = new Response<Serializable>();
......@@ -66,4 +69,22 @@ public class OpEventActivityOrderController extends
return response;
}
/**
* 后台为客户调整订单teeTime时加载当日所有可用资源的teeTime和库存信息
*
* @param request
* @return Response<Serializable> Response<Serializable>
*/
@ResponseBody
@RequestMapping(value = "/loadPlayDateEventActivityResource", method = RequestMethod.POST)
public Response<List<CourseResourceBean>> loadPlayDateEventActivityResource(@RequestBody Request<OpEventActivityOrderBean> request) {
OpEventActivityOrderBean OpEventActivityOrderBean = request.getBody();
List<CourseResourceBean> list = opEventActivityOrderService.loadPlayDateEventActivityResource(OpEventActivityOrderBean.getProductId(),OpEventActivityOrderBean.getPlayDate());
Response<List<CourseResourceBean>> response = new Response<List<CourseResourceBean>>();
response.setStatus(ResponseStatusEnum.SUCCESS.getValue());
response.setMessage(ResponseStatusEnum.SUCCESS.getMsg());
response.setBody(list);
return response;
}
}
......@@ -1220,10 +1220,14 @@ public class OrderDao extends GenericHibernateDao<Order, Integer> {
public PagedResponseBean<CourseOrderFinanceBean> queryCourseOrderForFinance(CourseOrderFinanceQuery courseOrderFinanceQuery) {
StringBuilder sb = new StringBuilder(300);
sb.append("SELECT SQL_CALC_FOUND_ROWS invo.invoiceId, od.orderType, od.confirmType, od.orderId, od.cashRebate , od.orderNO AS orderNo, od.payMode, od.processStatus, od.offlinePayType, od.uid , od.ContactName AS contactName, od.orderName, course.districtId, orderitem.Commission AS commission, od.actualAmount , od.orderDate, od.payDate, od.orderSource, od.orderStatus, od.notifyFlag , od.actualSettleAmout, od.settleObj, od.settleDate, od.finComment, od.prePayCardAmount , od.voucherAmount, od.refundAmount, od.outTradeId, od.onlineOrderFlag, od.userType , od.insuranceAmount, od.channel1, od.channel2, course.id AS courseId, course.name AS courseName , orderitem.SupplierID AS supplierId, orderitem.SupplierName AS supplierName, orderItem.playDate AS playDate, orderItem.resourceId AS resourceId, orderitem.realPayTime AS teeTime , orderitem.quantity AS playNums, orderItem.floorPrice AS costForPerson, orderItem.floorPrice * orderitem.quantity AS costForOrder, orderitem.Amount AS amount , orderitem.SalePrice AS salePrice, sup.SettlementType AS settlementType, orderitem.productManager");
sb.append("SELECT SQL_CALC_FOUND_ROWS invo.invoiceId, od.orderType, od.confirmType, od.orderId, od.cashRebate , od.orderNO AS orderNo, od.payMode, od.processStatus, od.offlinePayType, od.uid , od.ContactName AS contactName, od.orderName, course.districtId,distr.Name AS districtName, orderitem.Commission AS commission, od.actualAmount , od.orderDate, od.payDate, od.orderSource, od.orderStatus, od.notifyFlag , od.actualSettleAmout, od.settleObj, od.settleDate, od.finComment, od.prePayCardAmount , od.voucherAmount, od.refundAmount, od.outTradeId, od.onlineOrderFlag, od.userType , od.insuranceAmount, od.channel1, od.channel2, course.id AS courseId, course.name AS courseName , orderitem.SupplierID AS supplierId, orderitem.SupplierName AS supplierName, orderItem.playDate AS playDate, orderItem.resourceId AS resourceId, orderitem.realPayTime AS teeTime , orderitem.quantity AS playNums, orderItem.floorPrice AS costForPerson, orderItem.floorPrice * orderitem.quantity AS costForOrder, orderitem.Amount AS amount , orderitem.SalePrice AS salePrice, sup.SettlementType AS settlementType, orderitem.productManager");
sb.append(" from ord_order od "
+ "join ord_orderitem orderitem on (od.OrderID=orderitem.OrderID)"
+ "join prd_course course on (course.id=orderitem.courseId) left join ord_invoiceinfo invo on (od.OrderId=invo.OrderId) LEFT JOIN opr_supplier sup ON (orderitem.SupplierID = sup.ID) where od.OrderCategory = "
+ " join ord_orderitem orderitem on (od.OrderID=orderitem.OrderID)"
+ " join prd_course course on (course.id=orderitem.courseId) "
+ " left join ord_invoiceinfo invo on (od.OrderId=invo.OrderId) "
+ " LEFT JOIN opr_supplier sup ON (orderitem.SupplierID = sup.ID) "
+ " LEFT JOIN bsc_district distr ON course.districtId = distr.id"
+ " where od.OrderCategory = "
+ OrderCategoryEnum.COURSE.getKey());
Map<String, Object> parameters = new HashMap<String, Object>();
......
......@@ -47,6 +47,8 @@ public class OrderExcelDao extends GenericHibernateDao<OrderListExcel, Integer>
+ ",od.finComment"
+ ",od.prePayCardAmount"
+ ",od.voucherAmount"
+ ",od.voucherRefundAmount"
+ ",od.prePayCardRefundAmount"
+ ",od.refundAmount"
+ ",od.outTradeId"
+ ",od.offlinePayType"
......
package com.ctrip.fun.golf.dao.product;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.hibernate.Criteria;
import org.hibernate.Query;
......@@ -13,11 +16,16 @@ import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.transform.Transformers;
import com.ctrip.fun.common.core.util.BeanConverter;
import com.ctrip.fun.common.core.util.DateUtil;
import com.ctrip.fun.common.core.util.StringUtils;
import com.ctrip.fun.common.vo.PagedResponseBean;
import com.ctrip.fun.common.vo.SortDirectionEnum;
import com.ctrip.fun.common.vo.order.EventActivityOrderListBean;
import com.ctrip.fun.common.vo.product.CourseResourceBatchBean;
import com.ctrip.fun.common.vo.product.CourseResourceBean;
import com.ctrip.fun.common.vo.product.CourseResourcePaymentBean;
import com.ctrip.fun.common.vo.product.CourseResourceQuery;
import com.ctrip.fun.common.vo.product.CourseResourceStatusBean;
......@@ -211,11 +219,44 @@ public class CourseResourceDao extends GenericHibernateDao<CourseResource, Integ
+ productId + " and cr.teeTime="+teetime
+ " and cr.status != "
+ CourseResourceStatusEnum.INVALID.getValue()
+ " and cr.id = rp.ResourceID " + " and rp.priceDate = \"" + dateStr + "\"" + " and rp.communePrice="+communePrice+" and rp.communeGuestPrice="+guestPrice;
+ " and cr.id = rp.ResourceID " + " and rp.priceDate = \'" + dateStr + "\'" + " and rp.communePrice="+communePrice+" and rp.communeGuestPrice="+guestPrice;
List<Integer> list = this.getSession().createSQLQuery(sql).list();
return list;
}
public List<CourseResourceBean> loadPlayDateEventActivityResource(int productId, Date playDate) {
String dateStr = DateUtil.getDateStr(playDate);
String sql = "SELECT cr.id id,cr.teeTime,ri.Size inventorySize,ri.Used usedInventory FROM prd_courseResource cr LEFT JOIN prd_resourceprice rp ON cr.id = rp.ResourceID LEFT JOIN prd_resourceinventory ri ON rp.ResourceID = ri.ResourceID"
+ " WHERE cr. STATUS != 9 AND ri.ResourceCategory = \'1\' AND cr.ProductID = \'" + productId +"\'"+"AND rp.priceDate = \'"+dateStr+"\'"
+ "AND ri.TheDate = \'" + dateStr + "\'";
Session session = this.getSession();
Query query = session.createSQLQuery(sql);
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List<Map<String, Object>> list = query.list();
List<CourseResourceBean> result = new ArrayList<CourseResourceBean>();
if (list != null) {
for (Map<String, Object> map : list) {
CourseResourceBean courseResourceBean = new CourseResourceBean();
BeanConverter.populate(courseResourceBean, map);
result.add(courseResourceBean);
}
}
return result;
}
/*
SELECT cr.id,ri.Size,ri.Used FROM prd_courseResource cr LEFT JOIN prd_resourceprice rp ON cr.id = rp.ResourceID LEFT JOIN prd_resourceinventory ri ON rp.ResourceID = ri.ResourceID
WHERE
cr. STATUS != 9
AND ri.ResourceCategory = '1'
AND cr.ProductID = '2959'
AND rp.priceDate = '2018-05-12'
AND ri.TheDate='2018-05-12'
*/
public List<ResourcePriceUnion> queryResourcePriceUnionByProductId(int productId, Date date) {
String dateStr = DateUtil.getDateStr(date);
String sql = "select * from prd_courseResource as cr, prd_resourceprice as rp where cr.productId = "
......
......@@ -130,9 +130,17 @@ public class OrderListExcel {
private BigDecimal voucherAmount;
/**
* 退款金额
* 在线支付退款金额
*/
private BigDecimal refundAmount;
/**
* 优惠券退款金额
*/
private BigDecimal voucherRefundAmount;
/**
* 余额退款金额
*/
private BigDecimal prePayCardRefundAmount;
/**
* 预存款金额
......@@ -658,6 +666,22 @@ public class OrderListExcel {
this.channel2 = channel2;
}
public BigDecimal getVoucherRefundAmount() {
return voucherRefundAmount;
}
public void setVoucherRefundAmount(BigDecimal voucherRefundAmount) {
this.voucherRefundAmount = voucherRefundAmount;
}
public BigDecimal getPrePayCardRefundAmount() {
return prePayCardRefundAmount;
}
public void setPrePayCardRefundAmount(BigDecimal prePayCardRefundAmount) {
this.prePayCardRefundAmount = prePayCardRefundAmount;
}
......
......@@ -6,6 +6,7 @@ package com.ctrip.fun.golf.service.finance;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -53,14 +54,14 @@ public class CourseFinanceService {
private OrderAssignmentDao orderAssignmentDao = null;
private Invoiceinfo findInvoiceinfo(Integer orderId, List<Invoiceinfo> invoiceinfos) {
/*private Invoiceinfo findInvoiceinfo(Integer orderId, List<Invoiceinfo> invoiceinfos) {
for (Invoiceinfo invoiceinfo : invoiceinfos) {
int val = invoiceinfo.getOrderId().compareTo(orderId);
if (val == 0)
return invoiceinfo;
}
return null;
}
}*/
private String listToString(List<String> names) {
String str = "";
......@@ -85,35 +86,17 @@ public class CourseFinanceService {
PagedResponseBean<CourseOrderFinanceBean> pagedResponseBean = this.orderDao.queryCourseOrderForFinance(courseOrderFinanceQuery);
Collection<CourseOrderFinanceBean> result = pagedResponseBean.getResult();
if (result != null) {
List<Integer> orderIdList = new ArrayList<Integer>();
for (CourseOrderFinanceBean courseOrderFinanceBean : result) {
orderIdList.add(courseOrderFinanceBean.getOrderId());
}
List<Invoiceinfo> invoiceinfos = new ArrayList<Invoiceinfo>();
Map<Integer, List<String>> customerInfoMap = new HashMap<Integer, List<String>>();
if (orderIdList.size() > 0) {
invoiceinfos = this.invoiceinfoDao.getInvoiceinfoByOrderIds(orderIdList);
if (courseOrderFinanceQuery.isExportExcel()) {
List<CustomerInfo> customerInfos = this.customerInfoDao.getCustomerInfoList(orderIdList);
// 获取打球用户信息
for (CustomerInfo cusInfo : customerInfos) {
List<String> orderCustInfos = null;
boolean infoExist = customerInfoMap.containsKey(cusInfo.getOrderID());
if (infoExist) {
orderCustInfos = customerInfoMap.get(cusInfo.getOrderID());
} else {
orderCustInfos = new ArrayList<String>();
}
orderCustInfos.add(cusInfo.getCname());
customerInfoMap.put(cusInfo.getOrderID(), orderCustInfos);
}
}
}
// int t=0;
for (CourseOrderFinanceBean courseOrderFinanceBean : result) {
Invoiceinfo invoiceinfo = this.findInvoiceinfo(courseOrderFinanceBean.getOrderId(), invoiceinfos);
/*if(t%100==0){
System.out.println(t+":"+new Date());
}
t++;*/
Invoiceinfo invoiceinfo = this.invoiceinfoDao .getInvoiceinfoByOrderId(courseOrderFinanceBean.getOrderId());
OrderStatusEnum orderStatusEnum = OrderStatusEnum.getOrderStatus(courseOrderFinanceBean.getOrderType(), courseOrderFinanceBean.getPayMode(),
courseOrderFinanceBean.getConfirmType(), courseOrderFinanceBean.getProcessStatus(), invoiceinfo == null ? false : true);
courseOrderFinanceBean.setOrderStatus(orderStatusEnum.getShowStatusName());
......@@ -130,16 +113,21 @@ public class CourseFinanceService {
ResourcePrice resourceCommission = resourcePriceDao.getResourcePrice(courseOrderFinanceBean.getPlayDate(), courseOrderFinanceBean.getResourceId());
courseOrderFinanceBean.setCommission(resourceCommission == null ? BigDecimal.ZERO : BigDecimal.valueOf(resourceCommission.getCommission()).multiply(
BigDecimal.valueOf(courseOrderFinanceBean.getPlayNums())));
List<CustomerInfo> customerInfos = this.customerInfoDao.getCustomerByOrderID(courseOrderFinanceBean.getOrderId());
if (courseOrderFinanceQuery.isExportExcel()) {
List<String> names = customerInfoMap.get(courseOrderFinanceBean.getOrderId());
if (names != null) {
courseOrderFinanceBean.setPlayNames(this.listToString(names));
String names = "";
if(customerInfos.size()>0){
for(CustomerInfo customerInfo: customerInfos){
names += customerInfo.getCname()+",";
}
names = names.substring(0, names.length()-1);
}
courseOrderFinanceBean.setPlayNames(names);
}
if (courseOrderFinanceBean.getOfflinePayType() != null && courseOrderFinanceBean.getOfflinePayType() != 0) {
courseOrderFinanceBean.setOfflinePayTypeMsg(OfflinePayTypeEnum.valueOf(courseOrderFinanceBean.getOfflinePayType()).getMsg());
}
List<CustomerInfo> customerInfos = this.customerInfoDao.getCustomerByOrderID(courseOrderFinanceBean.getOrderId());
if(customerInfos.size()>=4){
courseOrderFinanceBean.setPlayer4(customerInfos.get(3).getCname());
......@@ -154,21 +142,20 @@ public class CourseFinanceService {
courseOrderFinanceBean.setPlayer1(customerInfos.get(0).getCname());
}
// todo: restrictName
if(courseOrderFinanceBean.getDistrictId()!=null){
/*if(courseOrderFinanceBean.getDistrictId()!=null){
District distinct = districtDao.findById(courseOrderFinanceBean.getDistrictId());
courseOrderFinanceBean.setDistrictName(distinct.getName());
}
}*/
List<Integer> orderIds = new ArrayList<Integer>();
orderIds.add(courseOrderFinanceBean.getOrderId());
List<OrderPayinfoBean> orderPayInfoList = orderPayinfoDao.getOrderPayinfoBeanList(orderIds);
if(orderPayInfoList.size()>0){
courseOrderFinanceBean.setPayeeName(orderPayInfoList.get(0).getPayeeName());
}
List<OrderAssignment> orderAssignments = orderAssignmentDao.getOrderAssignmentByOrderIds(orderIds); // 接管人
List<OrderAssignment> orderAssignments = orderAssignmentDao.GetOrderAssignmentListByOrderID(courseOrderFinanceBean.getOrderId());
if(orderAssignments.size()>0){
courseOrderFinanceBean.setReceiver(orderAssignments.get(0).getEid());
}
}
}
return pagedResponseBean;
......
......@@ -950,6 +950,12 @@ public class EventCustomerInfoService extends
this.eventCustomerInfoOfflineLogDao = eventCustomerInfoOfflineLogDao;
}
/**
* 查询某资源的已用库存
* @param resourceId
* @param playDate
* @return
*/
public Integer getAllEventCustomerValidNum(Integer resourceId, Date playDate){
int allValidCustomer = eventCustomerInfoDao.queryAllValidCustomerNumInSameResAndDate(resourceId, playDate, "");
return allValidCustomer;
......
......@@ -1082,6 +1082,8 @@ public class OpCourseOrderService extends AbstractOpOrderService<CourseOrderProc
bean.setVoucherAmount(xsl.getVoucherAmount());
bean.setFinComment(xsl.getFinComment());
bean.setRefundAmount(xsl.getRefundAmount());
bean.setPrePayCardRefundAmount(xsl.getPrePayCardRefundAmount());
bean.setVoucherRefundAmount(xsl.getVoucherRefundAmount());
bean.setDepositAmount(xsl.getDepositAmount());
bean.setQuantity(xsl.getQuantity());
bean.setOutTradeId(xsl.getOutTradeId());
......
......@@ -41,6 +41,7 @@ import com.ctrip.fun.common.vo.order.OrderStatusEnum;
import com.ctrip.fun.common.vo.order.PrepayAmtOperateTypeEnum;
import com.ctrip.fun.common.vo.payment.PayOrderOperateResponseBean;
import com.ctrip.fun.common.vo.payment.PaymentOperateBean;
import com.ctrip.fun.common.vo.product.CourseResourceBean;
import com.ctrip.fun.common.vo.product.ProductPaymentTypeEnum;
import com.ctrip.fun.common.vo.product.ResourceCategoryEnum;
import com.ctrip.fun.common.vo.product.ResourceInventoryQuery;
......@@ -75,12 +76,10 @@ import com.ctrip.fun.golf.domain.order.EventActivityOrderListExcel;
import com.ctrip.fun.golf.domain.order.Invoiceinfo;
import com.ctrip.fun.golf.domain.order.Order;
import com.ctrip.fun.golf.domain.order.OrderAssignment;
import com.ctrip.fun.golf.domain.order.OrderItem;
import com.ctrip.fun.golf.domain.order.OrderPayinfo;
import com.ctrip.fun.golf.domain.order.OrderProcessLog;
import com.ctrip.fun.golf.domain.product.CourseProduct;
import com.ctrip.fun.golf.domain.product.CourseResource;
import com.ctrip.fun.golf.domain.product.ResourceInventory;
import com.ctrip.fun.golf.domain.product.ResourcePrice;
import com.ctrip.fun.golf.domain.user.UserExt;
import com.ctrip.fun.golf.exceptions.OrderException;
......@@ -126,6 +125,8 @@ public class OpEventActivityOrderService
private AsmCourseResourceDao asmCourseResourceDao = null;
private CourseResourceDao courseResourceDao = null;
private ResourceOpInfoDao resourceOpInfoDao = null;
private CourseProductDao courseProductDao = null;
......@@ -446,6 +447,11 @@ public class OpEventActivityOrderService
}
}
/**
* 判断是否全部退款
* @param orderProcessBean
* @return
*/
private boolean isAllRefund(EventActivityOrderProcessBean orderProcessBean) {
Order order = getOrderDao().findById(orderProcessBean.getOrderId());
BigDecimal refundVoucher = new BigDecimal(0);
......@@ -468,7 +474,7 @@ public class OpEventActivityOrderService
: orderProcessBean.getRefundAmount()))).add(
order.getOnPayAmount() == null ? new BigDecimal(0) : order
.getOnPayAmount()));
return resultAmount.compareTo(BigDecimal.ZERO) <= 1;
return resultAmount.compareTo(BigDecimal.ZERO) == 0;
}
......@@ -1048,6 +1054,14 @@ public class OpEventActivityOrderService
this.asmCourseResourceDao = asmCourseResourceDao;
}
public CourseResourceDao getCourseResourceDao() {
return courseResourceDao;
}
public void setCourseResourceDao(CourseResourceDao courseResourceDao) {
this.courseResourceDao = courseResourceDao;
}
public ResourceOpInfoDao getResourceOpInfoDao() {
return resourceOpInfoDao;
}
......@@ -1248,4 +1262,15 @@ public class OpEventActivityOrderService
this.changeResource(orderProcessBean);
}
/**
* 后台为客户调整订单teeTime时加载当日所有可用资源的teeTime和库存信息
* @param productId
* @param playDate
* @return
*/
public List<CourseResourceBean> loadPlayDateEventActivityResource(Integer productId, Date playDate) {
List<CourseResourceBean> list = courseResourceDao.loadPlayDateEventActivityResource(productId, playDate);
return list;
}
}
......@@ -311,6 +311,7 @@
<property name="asmCourseResourceDao" ref="asmCourseResourceDao"></property>
<property name="resourceOpInfoDao" ref="resourceOpInfoDao"></property>
<property name="courseProductDao" ref="courseProductDao"></property>
<property name="courseResourceDao" ref="courseResourceDao"></property>
<property name="eventCustomerInfoService" ref="eventCustomerInfoService"></property>
</bean>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment