Commit 507e3190 authored by hanfeng's avatar hanfeng

总业绩统计

parent ea8c28c2
package com.xxfc.platform.order.contant.enumerate;
/**
* 账目类型
* @author Administrator
*/
public enum BookkeepingTypeEnum {
ENTER(0,"入账"),OUT(1,"出账");
private Integer code;
private String msg;
BookkeepingTypeEnum(int code, String msg) {
this.code=code;
this.msg=msg;
}
public Integer getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
package com.xxfc.platform.order.pojo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
......@@ -34,7 +35,7 @@ public class QueryCriteria {
@ApiModelProperty(value = "支付方式: 1-微信支付 2-支付宝支付 3-银联支付 null-全部")
private Integer paymentMethod;
@ApiModelProperty(value = "账目类型: 0-页面展示 1-下载报表")
@ApiModelProperty(value = "账目类型: 0-入账 1-出账")
private Integer type = 0;
@ApiModelProperty("用户id")
......@@ -42,5 +43,11 @@ public class QueryCriteria {
@ApiModelProperty("权限公司id")
private List<Integer> jurisdiction;
@ApiModelProperty(value = "当前页数")
private Integer page;
@ApiModelProperty(value = "每页条数")
private Integer limit;
}
package com.xxfc.platform.order.pojo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import java.math.BigDecimal;
@Data
public class ReturnOrderAmount {
@ApiModelProperty(value = "时间")
private String time;
@ApiModelProperty(value = "订单号")
private String no;
@ApiModelProperty(value = "订单类型")
private Integer type;
@ApiModelProperty(value = "订单明细")
@Column(name = "account_detail")
private String accountDetailStr;
@ApiModelProperty(value = "用户姓名")
private String realname;
@ApiModelProperty(value = "手机号")
private String username;
@ApiModelProperty(value = "退款说明")
private String refundInstruction;
@ApiModelProperty(value = "退款明细")
private BigDecimal refundAmount=BigDecimal.ZERO;
public String getAccountDetailStr() {
return accountDetailStr;
}
}
package com.xxfc.platform.order.pojo;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
......@@ -18,7 +19,7 @@ import java.util.List;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TotalPerformanceStatement {
public class TotalOrderRevenue {
@ApiModelProperty(value = "总订单数")
private Integer orderSum;
@ApiModelProperty(value = "应收总额")
......@@ -28,6 +29,6 @@ public class TotalPerformanceStatement {
@ApiModelProperty(value = "实收金额")
private BigDecimal actual=BigDecimal.ZERO;
@ApiModelProperty(value = "数据明细")
private List<Achievement> achievements;
private PageInfo<Achievement> achievements;
}
......@@ -5,6 +5,8 @@ import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
......@@ -913,11 +915,17 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
}
public List<Achievement> selectTotalStatistical(QueryCriteria queryCriteria) {
public List<Achievement> entryStatisticalData(QueryCriteria queryCriteria) {
return mapper.selectTotalStatistical(queryCriteria);
}
public PageInfo<Achievement> getAchievementPageInfo(QueryCriteria queryCriteria) {
PageHelper.startPage(queryCriteria.getPage(),queryCriteria.getLimit());
List<Achievement> achievements = mapper.selectTotalStatistical(queryCriteria);
return new PageInfo<>(achievements);
}
}
\ No newline at end of file
......@@ -17,6 +17,8 @@ import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mapper.OrderAccountMapper;
import com.xxfc.platform.order.pojo.DedDetailDTO;
import com.xxfc.platform.order.pojo.QueryCriteria;
import com.xxfc.platform.order.pojo.ReturnOrderAmount;
import com.xxfc.platform.order.pojo.Term;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
......@@ -649,4 +651,7 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
orderMsgBiz.handelMsgDeposit(orvd, baseOrder, userFeign.userDetailById(baseOrder.getUserId()).getData());
}
public List<ReturnOrderAmount> outStatisticalData(QueryCriteria queryCriteria) {
return mapper.outStatisticalData(queryCriteria);
}
}
\ No newline at end of file
package com.xxfc.platform.order.biz;
import cn.hutool.core.collection.CollectionUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.pagehelper.PageInfo;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.pojo.Achievement;
import com.xxfc.platform.order.pojo.QueryCriteria;
import com.xxfc.platform.order.pojo.TotalPerformanceStatement;
import com.xxfc.platform.order.pojo.ReturnOrderAmount;
import com.xxfc.platform.order.pojo.TotalOrderRevenue;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -26,30 +25,33 @@ import java.util.List;
public class TotalPerformanceBiz {
private final BaseOrderBiz baseOrderBiz;
private final OrderAccountBiz accountBiz;
private final UserFeign userFeign;
/**
*
* 入账数据统计
* @param queryCriteria 查询条件
* @param userDTO 当前后台账号信息
*
*/
public TotalPerformanceStatement statisticalData(QueryCriteria queryCriteria, UserDTO userDTO) {
Integer orderType = queryCriteria.getOrderType();
List<Achievement> achievements = baseOrderBiz.selectTotalStatistical(queryCriteria);
if (CollectionUtil.isEmpty(achievements)) {
return new TotalPerformanceStatement();
}
return incomeDataProcessing(achievements);
public TotalOrderRevenue entryStatisticalData(QueryCriteria queryCriteria) {
//获取总数据
TotalOrderRevenue totalOrderRevenue = incomeDataProcessing(queryCriteria);
//设置订单明细并分页
getAchievementPageInfo(totalOrderRevenue,queryCriteria);
return totalOrderRevenue ;
}
/**
* 核算收益
* 核算收益
* @return
* @param achievements
* @param queryCriteria
*/
private TotalPerformanceStatement incomeDataProcessing(List<Achievement> achievements) {
private TotalOrderRevenue incomeDataProcessing( QueryCriteria queryCriteria) {
List<Achievement> achievements = baseOrderBiz.entryStatisticalData(queryCriteria);
if (CollectionUtil.isEmpty(achievements)) {
return new TotalOrderRevenue();
}
//应收总额
BigDecimal totalReceivables = BigDecimal.ZERO;
//优惠总额
......@@ -61,7 +63,7 @@ public class TotalPerformanceBiz {
actual=actual.add(achievement.getRealAmount());
discount=discount.add(achievement.getOrderAmount().subtract(achievement.getRealAmount()));
}
return TotalPerformanceStatement
return TotalOrderRevenue
.builder()
.orderSum(achievements.size())
.totalReceivables(totalReceivables)
......@@ -70,4 +72,28 @@ public class TotalPerformanceBiz {
.build();
}
/**
* 设置支出明细
* @param totalOrderRevenue
* @param queryCriteria 条件
*/
private void getAchievementPageInfo(TotalOrderRevenue totalOrderRevenue, QueryCriteria queryCriteria){
PageInfo<Achievement> achievementPageInfo = baseOrderBiz.getAchievementPageInfo(queryCriteria);
totalOrderRevenue.setAchievements(achievementPageInfo);
}
public List<ReturnOrderAmount> outStatisticalData(QueryCriteria queryCriteria) {
List<ReturnOrderAmount> returnOrderAmounts = accountBiz.outStatisticalData(queryCriteria);
if (CollectionUtils.isEmpty(returnOrderAmounts)) {
return Lists.newArrayList();
}
}
}
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderAccount;
import com.xxfc.platform.order.pojo.QueryCriteria;
import com.xxfc.platform.order.pojo.ReturnOrderAmount;
import com.xxfc.platform.order.pojo.Term;
import com.xxfc.platform.order.pojo.account.OrderAccountDTO;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
import java.util.Map;
/**
......@@ -19,4 +22,6 @@ import java.util.List;
public interface OrderAccountMapper extends Mapper<OrderAccount> {
List<OrderAccountDTO> getOrderAccountByOrderType(Term term);
List<ReturnOrderAmount> outStatisticalData(QueryCriteria queryCriteria);
}
package com.xxfc.platform.order.rest.background;
import com.alibaba.druid.sql.visitor.functions.If;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.CommonBaseController;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.biz.TotalPerformanceBiz;
import com.xxfc.platform.order.pojo.QueryCriteria;
import com.xxfc.platform.order.contant.enumerate.BookkeepingTypeEnum;
import com.xxfc.platform.order.pojo.TotalOrderRevenue;
import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -20,7 +18,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
......@@ -48,29 +45,22 @@ public class TotalPerformanceStatementController extends CommonBaseController {
//获取用户权限
List<Integer> Jurisdiction = null;
//判断是按选中的公司查询
Integer companyId = queryCriteria.getCompanyId();
if (companyId != null) {
//判断查询的公司,是否在该后台用户的权限内
if (Jurisdiction.contains(companyId)) {
Jurisdiction = Lists.newArrayList(companyId);
}
}
//是否有查询所有数据的权限
if (!HIGHEST_AUTHORITY.equals(userDTO.getDataAll())) {
List<BranchCompany> branchCompanies = vehicleFeign.companyAll(userDTO.getDataAll(), userDTO.getDataCompany(), userDTO.getDataZone());
List<Integer> companyIds = branchCompanies.parallelStream().map(BranchCompany::getId).collect(Collectors.toList());
if (companyId == null) {
Jurisdiction=companyIds;
}else {
if (!companyIds.contains(companyId)) {
return null;
}
}
}
Jurisdiction = branchCompanies.parallelStream().map(BranchCompany::getId).collect(Collectors.toList());
}
queryCriteria.setJurisdiction(Jurisdiction);
totalPerformanceBiz.statisticalData(queryCriteria, userDTO);
return null;
if (BookkeepingTypeEnum.ENTER.getCode().equals(queryCriteria.getType())) {
TotalOrderRevenue totalOrderRevenue = totalPerformanceBiz.entryStatisticalData(queryCriteria);
return ObjectRestResponse.succ(totalOrderRevenue);
}else if (BookkeepingTypeEnum.OUT.getCode().equals(queryCriteria.getType())){
totalPerformanceBiz.outStatisticalData(queryCriteria);
return ObjectRestResponse.succ();
}
return ObjectRestResponse.succ();
}
}
......@@ -412,28 +412,32 @@
</select>
<select id="selectTotalStatistical" parameterType="com.xxfc.platform.order.pojo.QueryCriteria" resultType="com.xxfc.platform.order.pojo.Achievement">
select crt_time,no,type,order_amount,real_amount,realname,username,parentRealname,positionName,parentUsername,companyName,pay_way,company_id from order_user_position_company
<select id="selectTotalStatistical" parameterType="com.xxfc.platform.order.pojo.QueryCriteria"
resultType="com.xxfc.platform.order.pojo.Achievement">
select
crt_time,no,type,order_amount,real_amount,realname,username,parentRealname,positionName,parentUsername,companyName,pay_way,company_id
from order_user_position_company
<where>
<if test="startDate != null">
crt_time <![CDATA[>=]]> #{startDate}
and crt_time <![CDATA[>=]]> #{startDate}
</if>
<if test="endDate != null">
crt_time <![CDATA[<=]]> #{endDate}
and crt_time <![CDATA[<=]]> #{endDate}
</if>
<if test="paymentMethod !=null" >
pay_way = #{paymentMethod}
<if test="paymentMethod !=null">
and pay_way = #{paymentMethod}
</if>
<if test="jurisdiction != null and jurisdiction.size() !=0 ">
company_id in
and company_id in
<foreach collection="jurisdiction" index="index" item="companyId" open="(" separator="," close=")">
#{companyId}
</foreach>
</if>
<if test="companyId != null ">
and company_id =#{companyId}
</if>
<if test="orderType != null">
type = #{orderType}
and type = #{orderType}
</if>
order by crt_time DESC
</where>
......
......@@ -49,6 +49,27 @@
<if test="subdivide !=null and subdivide ==1">
AND date( FROM_UNIXTIME( a.crt_time / 1000 ) ) = date( DATE_SUB( now( ), INTERVAL #{day} DAY ) )
</if>
</select>
<select id="outStatisticalData" resultType="com.xxfc.platform.order.pojo.ReturnOrderAmount">
select oa.crt_time as time ,oupc.no,oupc.type,oa.account_detail ,oupc.realname,oupc.username
from order_account oa
left join order_user_position_company oupc ON oa.order_id=oupc.id
WHERE oa.account_type!=101
<if test="startDate != null">
and oa.crt_time <![CDATA[>=]]> #{startDate}
</if>
<if test="endDate != null">
and oa.crt_time <![CDATA[<=]]> #{endDate}
</if>
<if test="jurisdiction != null and jurisdiction.size() !=0 ">
and oupc.company_id in
<foreach collection="jurisdiction" index="index" item="companyId" open="(" separator="," close=")">
#{companyId}
</foreach>
</if>
<if test="orderType != null">
and oupc.type = #{orderType}
</if>
order by oa.crt_time DESC
</select>
</mapper>
\ No newline at end of file
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