Commit 7f89e3b3 authored by jiaorz's avatar jiaorz

Merge remote-tracking branch 'origin/dev' into dev

parents eedac3af be4f2a5d
package com.github.wxiaoqi.security.admin.bo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/25 14:33
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserDetailBo {
private Integer userId;
private String userName;
private String phone;
private Integer postionId;
private String postionName;
}
package com.xxfc.platform.order.entity;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/25 12:19
*/
@Table(name = "staff_statistics")
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Api("员工业绩统计")
public class StaffStatistics implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "JDBC")
private Long id;
@Column(name = "year")
@ApiModelProperty(value = "年份")
protected String year;
@Column(name = "month")
@ApiModelProperty(value = "月份----->201908")
protected String month;
@Column(name = "date")
@ApiModelProperty(value = "年月日")
protected Date date;
@Column(name = "week_of_year")
@ApiModelProperty(value = "1周年的第几周--->201922")
protected String weekOfYear;
@ApiModelProperty("员工所属公司id")
@Column(name = "compnay_id")
private Integer companyId;
@ApiModelProperty("公司名称")
@Column(name = "company_name")
private String companyName;
@ApiModelProperty("员工id")
@Column(name = "user_id")
private Integer userId;
@ApiModelProperty("员工身份id")
@Column(name = "user_postion_id")
private Integer userPostionId;
@ApiModelProperty("员工身份")
@Column(name = "postion_name")
private String postionName;
@ApiModelProperty("租车订单量")
@Column(name = "rent_vehicle_order_num")
private Integer rentVehicleOrderNum;
@ApiModelProperty("租车订单总额(不包含押金,不计免赔金额)")
@Column(name = "rent_vehicle_amount")
private BigDecimal rentVehicleAmount;
@ApiModelProperty("会员订单量")
@Column(name = "member_order_num")
private Integer memberOrderNum;
@ApiModelProperty("会员订单总额")
@Column(name = "member_amount")
private BigDecimal memberAmount;
@ApiModelProperty("旅游订单量")
@Column(name = "travel_order_num")
private Integer travelOrderNum;
@ApiModelProperty("旅游订单总额")
@Column(name = "travel_amount")
private BigDecimal travelAmount;
@ApiModelProperty("销售总额")
@Column(name = "sell_amount")
private BigDecimal sellAmount;
@ApiModelProperty("提成")
@Column(name = "royalty_amount")
private BigDecimal royaltyAmount;
}
package com.xxfc.platform.order.pojo.bo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/25 12:44
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class StaffStatisticsTotalBo {
private Integer staffNum;
private BigDecimal totalSellAmount;
private BigDecimal totalRoyaltyAmount;
public Integer getStaffNum() {
return this.staffNum==null?0:staffNum;
}
public BigDecimal getTotalSellAmount() {
return this.totalSellAmount==null?BigDecimal.ZERO:totalSellAmount;
}
public BigDecimal getTotalRoyaltyAmount() {
return this.totalRoyaltyAmount==null?BigDecimal.ZERO:totalRoyaltyAmount;
}
}
package com.xxfc.platform.order.pojo.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/25 12:43
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class StaffStatisticsFindDTO extends PageParam {
private Date startDate;
private Date endDate;
private String companyName;
private Integer userPostionId;
private List<String> companyIds;
}
package com.xxfc.platform.order.pojo.vo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/25 12:44
*/
@Data
@Builder(toBuilder = true)
@AllArgsConstructor
@NoArgsConstructor
public class StaffStatisticsVo implements Serializable {
private static final long serialVersionUID = 1L;
private String name ;
private List<String> companyNames;
private List<String> postionNames;
private String phone;
private BigDecimal sellAmount = BigDecimal.ZERO;
private BigDecimal royaltyAmount = BigDecimal.ZERO;
private Integer memberOrderNum = 0;
private BigDecimal memberAmount = BigDecimal.ZERO;
private Integer rentVehicleOrderNum = 0;
private BigDecimal rentVehicleAmount = BigDecimal.ZERO;
private Integer travelOrderNum = 0;
private BigDecimal travelAmount = BigDecimal.ZERO;
}
package com.xxfc.platform.order.biz;
import cn.hutool.core.util.ObjectUtil;
import com.github.wxiaoqi.security.admin.bo.UserDetailBo;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.entity.StaffStatistics;
import com.xxfc.platform.order.mapper.StaffStatisticsMapper;
import com.xxfc.platform.order.pojo.dto.StaffStatisticsFindDTO;
import com.xxfc.platform.order.pojo.bo.StaffStatisticsTotalBo;
import com.xxfc.platform.order.pojo.vo.StaffStatisticsVo;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.math.BigDecimal;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/25 12:36
*/
@Transactional(rollbackFor = Exception.class)
@Service
@RequiredArgsConstructor(onConstructor =@__(@Autowired))
public class StaffStatisticsBiz extends BaseBiz<StaffStatisticsMapper, StaffStatistics> {
private final UserFeign userFeign;
public StaffStatisticsTotalBo staffStatisticsWithTotal(StaffStatisticsFindDTO staffStatisticsFindDTO) {
return mapper.statistics(staffStatisticsFindDTO);
}
public PageDataVO<StaffStatisticsVo> staffStatisticsWithPage(StaffStatisticsFindDTO staffStatisticsFindDTO) {
PageDataVO<StaffStatisticsVo> pageDataVO = new PageDataVO<>();
PageDataVO<StaffStatistics> statisticsVoPageDataVO = PageDataVO.pageInfo(staffStatisticsFindDTO.getPage(),staffStatisticsFindDTO.getLimit(),()->mapper.selectStaffStatistics(staffStatisticsFindDTO));
List<StaffStatistics> data = statisticsVoPageDataVO.getData();
if (CollectionUtils.isEmpty(data)){
pageDataVO.setTotalCount(0L);
pageDataVO.setTotalPage(0);
pageDataVO.setPageNum(staffStatisticsFindDTO.getPage());
pageDataVO.setPageSize(staffStatisticsFindDTO.getLimit());
pageDataVO.setData(Collections.EMPTY_LIST);
return pageDataVO;
}
List<Integer> userIds = data.stream().map(StaffStatistics::getUserId).collect(Collectors.toList());
ObjectRestResponse<List<AppUserVo>> result = userFeign.getByUserIds(userIds);
List<AppUserVo> users = result.getData();
Map<Integer,AppUserVo> userVoMap = CollectionUtils.isEmpty(users) ? Collections.EMPTY_MAP : users.stream().filter(x->Objects.nonNull(x.getUserid())).collect(Collectors.toMap(AppUserVo::getUserid, Function.identity()));
Map<Integer, List<StaffStatistics>> statisticsMap = data.stream().collect(Collectors.groupingBy(StaffStatistics::getUserId, Collectors.toList()));
List<StaffStatisticsVo> staffStatisticsVos = new ArrayList<>(data.size());
StaffStatisticsVo staffStatisticsVo = new StaffStatisticsVo();
statisticsMap.forEach((K,V)->{
List<String> compnayNames = new ArrayList<>(V.size());
List<String> postionNames = new ArrayList<>(V.size());
StaffStatisticsVo staffStatisticsClone = ObjectUtil.cloneByStream(staffStatisticsVo);
for (StaffStatistics staffStatistics : V) {
staffStatisticsClone.setSellAmount(staffStatistics.getSellAmount().add(staffStatisticsClone.getSellAmount()));
staffStatisticsClone.setRoyaltyAmount(staffStatistics.getRoyaltyAmount().add(staffStatisticsClone.getRoyaltyAmount()));
staffStatisticsClone.setRentVehicleAmount(staffStatistics.getRentVehicleAmount().add(staffStatisticsClone.getRentVehicleAmount()));
staffStatisticsClone.setRentVehicleOrderNum(staffStatistics.getRentVehicleOrderNum()+staffStatisticsClone.getRentVehicleOrderNum());
staffStatisticsClone.setTravelAmount(staffStatistics.getTravelAmount().add(staffStatisticsClone.getTravelAmount()));
staffStatisticsClone.setTravelOrderNum(staffStatistics.getTravelOrderNum()+staffStatisticsClone.getTravelOrderNum());
staffStatisticsClone.setMemberAmount(staffStatistics.getMemberAmount().add(staffStatisticsClone.getMemberAmount()));
staffStatisticsClone.setMemberOrderNum(staffStatistics.getMemberOrderNum()+staffStatisticsClone.getMemberOrderNum());
compnayNames.add(staffStatistics.getCompanyName());
postionNames.add(staffStatistics.getPostionName());
}
AppUserVo appUserVo = userVoMap ==null?new AppUserVo():userVoMap.get(K)==null?new AppUserVo():userVoMap.get(K);
String name = StringUtils.hasText(appUserVo.getRealname())?appUserVo.getRealname():StringUtils.hasText(appUserVo.getNickname())?appUserVo.getNickname():"";
staffStatisticsClone.setName(name);
staffStatisticsClone.setPhone(appUserVo.getUsername());
staffStatisticsClone.setCompanyNames(compnayNames);
staffStatisticsClone.setPostionNames(postionNames);
staffStatisticsVos.add(staffStatisticsClone);
});
pageDataVO.setData(staffStatisticsVos);
pageDataVO.setPageSize(statisticsVoPageDataVO.getPageSize());
pageDataVO.setPageNum(statisticsVoPageDataVO.getPageNum());
pageDataVO.setTotalPage(statisticsVoPageDataVO.getTotalPage());
pageDataVO.setTotalCount(statisticsVoPageDataVO.getTotalCount());
return pageDataVO;
}
}
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.StaffStatistics;
import com.xxfc.platform.order.pojo.bo.StaffStatisticsTotalBo;
import com.xxfc.platform.order.pojo.dto.StaffStatisticsFindDTO;
import tk.mybatis.mapper.additional.insert.InsertListMapper;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/25 12:37
*/
public interface StaffStatisticsMapper extends Mapper<StaffStatistics>, InsertListMapper<StaffStatistics> {
StaffStatisticsTotalBo statistics(StaffStatisticsFindDTO staffStatisticsFindDTO);
List<StaffStatistics> selectStaffStatistics(StaffStatisticsFindDTO staffStatisticsFindDTO);
}
package com.xxfc.platform.order.rest.background;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.biz.StaffStatisticsBiz;
import com.xxfc.platform.order.pojo.dto.StaffStatisticsFindDTO;
import com.xxfc.platform.order.pojo.bo.StaffStatisticsTotalBo;
import com.xxfc.platform.order.pojo.vo.StaffStatisticsVo;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/11/25 12:39
*/
@RestController
@RequestMapping("/admin/staff_statistics")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class StaffStatisticsAdminController {
private final StaffStatisticsBiz staffStatisticsBiz;
@PostMapping("/total_statistics")
public ObjectRestResponse<StaffStatisticsTotalBo> staffStatisticsWithTotal(@RequestBody StaffStatisticsFindDTO staffStatisticsFindDTO) {
StaffStatisticsTotalBo staffStatisticsTotalVo = staffStatisticsBiz.staffStatisticsWithTotal(staffStatisticsFindDTO);
return ObjectRestResponse.succ(staffStatisticsTotalVo);
}
@PostMapping("/page")
public ObjectRestResponse<PageDataVO<StaffStatisticsVo>> staffStatisticsWithPage(@RequestBody StaffStatisticsFindDTO staffStatisticsFindDTO) {
PageDataVO<StaffStatisticsVo> pageDataVO = staffStatisticsBiz.staffStatisticsWithPage(staffStatisticsFindDTO);
return ObjectRestResponse.succ(pageDataVO);
}
}
......@@ -31,6 +31,7 @@ import com.xxfc.platform.order.pojo.order.VehicleItemDTO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.universal.constant.DictionaryKey;
import com.xxfc.platform.universal.feign.ThirdFeign;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.AccompanyingItemType;
import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.entity.VehicleBookRecord;
......@@ -143,75 +144,138 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//设置订单名称
bo.getOrder().setName(bo.getVehicleModel().getName());
//是否有使用会员权益 则调用接口触发新增消费记录次数
//扣减免费天数
if(SYS_TRUE.equals(bo.getOrder().getHasMemberRight())) {
if(null == bo.getFreeDays()) {
bo.setFreeDays(0);
}
int result = userFeign.memberDays(bo.getAppUserDTO().getUserid(), bo.getFreeDays(), UserFeign.MEMBER_DAYS_LOCK);
if(result < 0) {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
OrderItem vehicleModelItem = bo.getItemByTypeEnum(ItemTypeEnum.VEHICLE_MODEL);
BigDecimal amount = vehicleModelItem.getTotalAmount();
//如果有使用优惠券,则扣减
if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) {
activityFeign.use(bo.getAppUserDTO().getUserid(), Convert.toList(String.class, bo.getOrder().getCouponTickerNos()), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE);
}
//分布式事务执行标记
Integer cloudTransact = 0;
//插入随声物品item
List<OrderAccompanyDTO> oads = new ArrayList<OrderAccompanyDTO>();
List<AccompanyingItemVo> accompanyingItemList = vehicleFeign.listAccompanyingItem().getData();
try{
//插入随声物品item
List<OrderAccompanyDTO> oads = new ArrayList<OrderAccompanyDTO>();
List<AccompanyingItemVo> accompanyingItemList = vehicleFeign.listAccompanyingItem().getData();
// Map<String, AccompanyingItemVo> accompanyingItemMap = vehicleFeign.listAccompanyingItem().getData()
// .parallelStream().collect(Collectors.toMap(en -> en.getId().toString(), en -> en));
if(null == bo.getAccompanyItems()) {
bo.setAccompanyItems(new ArrayList<OrderAccompanyDTO>());
}
Map<String, OrderAccompanyDTO> orderAccompanyDTOMap = bo.getAccompanyItems()
.parallelStream().collect(Collectors.toMap(en -> en.getId().toString(), en -> en));
for(AccompanyingItemVo aiv : accompanyingItemList) {
if(AccompanyingItemType.TOOL.getCode().equals(aiv.getType())
|| AccompanyingItemType.EQUIPMENT.getCode().equals(aiv.getType())) {
OrderAccompanyDTO orderAccompanyDTO = BeanUtil.toBean(aiv, OrderAccompanyDTO.class);
orderAccompanyDTO.setUnitPrice(aiv.getPrice());
orderAccompanyDTO.setNum(aiv.getNumber());
oads.add(orderAccompanyDTO);
}else {
OrderAccompanyDTO orderAccompanyDTO = orderAccompanyDTOMap.get(aiv.getId().toString());
if(null != orderAccompanyDTO) {
BeanUtil.copyProperties(aiv, orderAccompanyDTO);
if(null == bo.getAccompanyItems()) {
bo.setAccompanyItems(new ArrayList<OrderAccompanyDTO>());
}
Map<String, OrderAccompanyDTO> orderAccompanyDTOMap = bo.getAccompanyItems()
.parallelStream().collect(Collectors.toMap(en -> en.getId().toString(), en -> en));
for(AccompanyingItemVo aiv : accompanyingItemList) {
if(AccompanyingItemType.TOOL.getCode().equals(aiv.getType())
|| AccompanyingItemType.EQUIPMENT.getCode().equals(aiv.getType())) {
OrderAccompanyDTO orderAccompanyDTO = BeanUtil.toBean(aiv, OrderAccompanyDTO.class);
orderAccompanyDTO.setUnitPrice(aiv.getPrice());
orderAccompanyDTO.setNum(aiv.getNumber());
oads.add(orderAccompanyDTO);
}else {
OrderAccompanyDTO orderAccompanyDTO = orderAccompanyDTOMap.get(aiv.getId().toString());
if(null != orderAccompanyDTO) {
BeanUtil.copyProperties(aiv, orderAccompanyDTO);
orderAccompanyDTO.setUnitPrice(aiv.getPrice());
oads.add(orderAccompanyDTO);
}
}
}
}
bo.setAccompanyItems(oads);
bo.setAccompanyItems(oads);
//获取可用车辆
acquireVehicle(bo, null, null);
//获取可用车辆
acquireVehicle(bo, null, null);
cloudTransact = 1;
OrderItem accompanyItem = orderItemBiz.initOrderItem(BigDecimal.ZERO, 1, "随车物品", null, ACCOMPANY);
accompanyItem.setRealAmount(BigDecimal.ZERO);
accompanyItem.setDetail(JSONUtil.toJsonStr(bo.getAccompanyItems()));
accompanyItem.setOrderId(bo.getOrder().getId());
orderItemBiz.insertSelective(accompanyItem);
//添加随声物品项
OrderItem accompanyItem = orderItemBiz.initOrderItem(BigDecimal.ZERO, 1, "随车物品", null, ACCOMPANY);
accompanyItem.setRealAmount(BigDecimal.ZERO);
accompanyItem.setDetail(JSONUtil.toJsonStr(bo.getAccompanyItems()));
accompanyItem.setOrderId(bo.getOrder().getId());
orderItemBiz.insertSelective(accompanyItem);
//是否有使用会员权益 则调用接口触发新增消费记录次数
//扣减免费天数
useOrBackFreeDays(bo, UserFeign.MEMBER_DAYS_LOCK);
cloudTransact = 2;
//设置后台系统创建人
if(StrUtil.isNotBlank(bo.getCrtUser())) {
bo.getOrder().setCrtUser(bo.getCrtUser());
OrderItem vehicleModelItem = bo.getItemByTypeEnum(ItemTypeEnum.VEHICLE_MODEL);
BigDecimal amount = vehicleModelItem.getTotalAmount();
//如果有使用优惠券,则扣减
if(BigDecimal.ZERO.compareTo(bo.getOrder().getCouponAmount()) < 0) {
activityFeign.use(bo.getAppUserDTO().getUserid(), Convert.toList(String.class, bo.getOrder().getCouponTickerNos()), bo.getOrder().getNo(), channel, amount, ActivityFeign.TYPE_USE);
}
cloudTransact = 3;
//设置后台系统创建人
if(StrUtil.isNotBlank(bo.getCrtUser())) {
bo.getOrder().setCrtUser(bo.getCrtUser());
}
super.handleDetail(bo);
}catch (Exception e) {
//事务补偿处理
log.error("cloudTransact : {}", cloudTransact);
RestResponse<Integer> restResponse;
try {
//判断分布式事务执行到哪里
switch (cloudTransact) {
case 1 :
//取消车辆预定
//未支付,拒绝之前的预约
errorRejectVehicle(bo);
break;
case 2 :
//取消车辆预定
//未支付,拒绝之前的预约
errorRejectVehicle(bo);
useOrBackFreeDays(bo, UserFeign.MEMBER_DAYS_WITHDRAW);
break;
case 3 :
//取消车辆预定
//未支付,拒绝之前的预约
errorRejectVehicle(bo);
//退还天数
useOrBackFreeDays(bo, UserFeign.MEMBER_DAYS_WITHDRAW);
//退还优惠券
for(String backCoupon : Convert.toList(String.class, bo.getOrder().getCouponTickerNos())) {
activityFeign.cancelUse(backCoupon);
}
break;
default:
break;
}
} catch (Exception ex) {
log.error(ex.getMessage(), ex);
} finally {
throw e;
}
}
super.handleDetail(bo);
//发送定时取消订单(数据字典设置--5分钟)
rabbitProduct.sendDelayMessage(bo.getOrder(), autoCancelTime);
}
private void useOrBackFreeDays(RentVehicleBO bo, int memberDaysWithdraw) {
//退还天数
if (SYS_TRUE.equals(bo.getOrder().getHasMemberRight())) {
if (null == bo.getFreeDays()) {
bo.setFreeDays(0);
}
int result = userFeign.memberDays(bo.getAppUserDTO().getUserid(), bo.getFreeDays(), memberDaysWithdraw);
if (result < 0) {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
}
private void errorRejectVehicle(RentVehicleBO bo) {
//取消车辆预定
//未支付,拒绝之前的预约
RestResponse<Integer> restResponse = vehicleFeign.rentRejectVehicleBooking(bo.getBookRecordId());
log.info("下单失败,拒绝预约{}, 结果: {}", bo.getBookRecordId(), restResponse.toString());
}
@Override
public void handleCalculate(RentVehicleBO bo) {
RentVehiclePriceVO rvpv = calculatePrice(bo);
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xxfc.platform.order.mapper.StaffStatisticsMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.order.entity.StaffStatistics" id="staffstatisticsMap">
<result property="id" column="id"/>
<result property="year" column="year"/>
<result property="month" column="month"/>
<result property="date" column="date"/>
<result property="weekOfYear" column="week_of_year"/>
<result property="companyId" column="company_id"/>
<result property="companyName" column="company_name"/>
<result property="userId" column="user_id"/>
<result property="userPostionId" column="user_postion_id"/>
<result property="postionName" column="postion_name"/>
<result property="rentVehicleOrderNum" column="rent_vehicle_order_num"/>
<result property="rentVehicleAmount" column="rent_vehicle_amount"/>
<result property="travelOrderNum" column="travel_order_num"/>
<result property="travelAmount" column="travel_amount"/>
<result property="memberOrderNum" column="member_order_num"/>
<result property="memberAmount" column="member_amount"/>
<result property="sellAmount" column="sell_amount"/>
<result property="royaltyAmount" column="royalty_amount"/>
</resultMap>
<select id="statistics" resultType="com.xxfc.platform.order.pojo.bo.StaffStatisticsTotalBo">
select count(`user_id`) as `staffNum`,sum(`sell_amount`) as `totalSellAmount`,sum(`royalty_amount`) as `totalRoyaltyAmount` from `staff_statistics`
</select>
<select id="selectStaffStatistics" resultMap="staffstatisticsMap">
select * from `staff_statistics` where 1=1
<if test="userPostionId!=null">
and `user_postion_id`=#{userPostionId}
</if>
<if test="companyName!=null and companyName!=''">
and `company_name` like CONCAT('%',#{companyName},'%')
</if>
<if test="companyIds!=null and companyIds.size!=0">
and `company_id` IN
<foreach collection="companyIds" item="compnayId" separator="," open="(" close=")">
#{compnayId}
</foreach>
</if>
<if test="startDate!=null and endDate!=null">
and `date` between #{startDate} and #{endDate}
</if>
<if test="startDate!=null and endDate==null">
and <![CDATA[
`date` >=#{startDate}
]]>
</if>
<if test="startDate==null and endDate!=null">
and <![CDATA[
`date` <=#{endDate}
]]>
</if>
</select>
</mapper>
\ No newline at end of file
import com.xxfc.platform.order.OrderApplication;
import com.xxfc.platform.order.biz.DailyOrderStatisticsBiz;
import com.xxfc.platform.order.biz.OrderMemberReceivedStatisticsBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleReceivedStatisticsBiz;
import com.xxfc.platform.order.biz.OrderStatisticsBiz;
import com.xxfc.platform.order.jobhandler.BaseOrderStatisticsJobHandler;
import com.xxfc.platform.order.jobhandler.OrderReceivedStatisticsJobHandler;
import com.xxfc.platform.order.pojo.HomePageOrderData;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import org.joda.time.DateTime;
import org.junit.Test;
import org.junit.runner.RunWith;
......@@ -37,20 +33,10 @@ public class ServiceTest {
@Autowired
private BaseOrderStatisticsJobHandler handler;
@Autowired
private OrderMemberReceivedStatisticsBiz orderMemberReceivedStatisticsBiz;
@Autowired
private OrderRentVehicleReceivedStatisticsBiz orderRentVehicleReceivedStatisticsBiz;
@Autowired
private OrderReceivedStatisticsJobHandler orderReceivedStatisticsJobHandler;
@Autowired
private VehicleFeign vehicleFeign;
@Test
public void testSchedu(){
dailyOrderStatisticsBiz.statisticalOrder(1);
dailyOrderStatisticsBiz.statisticalOrder(1);
}
@Test
......@@ -81,8 +67,8 @@ public class ServiceTest {
@Test
public void test4(){
HomePageOrderData totalOrder = statisticsBiz.getTotalOrder(null,null);
System.out.println(totalOrder);
// HomePageOrderData totalOrder = statisticsBiz.getTotalOrder(null);
// System.out.println(totalOrder);
}
......
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 to comment