Commit 49dd5ee5 authored by libin's avatar libin

员工统计

parent cec6f5ac
...@@ -4,6 +4,9 @@ import lombok.AllArgsConstructor; ...@@ -4,6 +4,9 @@ import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.math.BigDecimal;
/** /**
* @author libin * @author libin
* @version 1.0 * @version 1.0
...@@ -13,10 +16,18 @@ import lombok.NoArgsConstructor; ...@@ -13,10 +16,18 @@ import lombok.NoArgsConstructor;
@Data @Data
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
public class UserDetailBo { public class UserStaffBo implements Serializable {
private Integer userId; private static final long serialVersionUID = 1L;
private String userName; private Integer userId;
private String phone; private String realName;
private Integer postionId; private String nickName;
private String postionName; private String phone;
private Integer postionId;
private String postionName;
private Integer companyId;
private String companyName;
/**
* 佣金
*/
private BigDecimal commission;
} }
package com.github.wxiaoqi.security.admin.feign; package com.github.wxiaoqi.security.admin.feign;
import com.github.wxiaoqi.security.admin.bo.UserBo; import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.dto.UserMemberDTO; import com.github.wxiaoqi.security.admin.dto.UserMemberDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin; import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.BaseUserMember; import com.github.wxiaoqi.security.admin.entity.BaseUserMember;
...@@ -158,4 +159,10 @@ public interface UserFeign { ...@@ -158,4 +159,10 @@ public interface UserFeign {
@RequestParam(value = "cono",required = false) String cono, @RequestParam(value = "cono",required = false) String cono,
@RequestParam(value = "reason",required = false) String reason, @RequestParam(value = "reason",required = false) String reason,
@RequestParam(value = "isSuccess") Boolean isSuccess); @RequestParam(value = "isSuccess") Boolean isSuccess);
@GetMapping("/app/user/list_staff")
List<UserStaffBo> findAllStaffs();
@GetMapping("/sellingwater/list_staff_sellerwater")
List<UserStaffBo> findStaffSellerWater(@RequestParam("userIds") List<Integer> userIds);
} }
...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.biz; ...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.biz;
import com.ace.cache.annotation.Cache; import com.ace.cache.annotation.Cache;
import com.ace.cache.annotation.CacheClear; import com.ace.cache.annotation.CacheClear;
import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.dto.AccountBindDTO; import com.github.wxiaoqi.security.admin.dto.AccountBindDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail; import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.mapper.AppUserDetailMapper; import com.github.wxiaoqi.security.admin.mapper.AppUserDetailMapper;
...@@ -17,10 +18,7 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -17,10 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.time.Instant; import java.time.Instant;
import java.util.Collection; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -173,4 +171,9 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -173,4 +171,9 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
public List<AppUserVo> getUserByUserIds(List<Integer> ids) { public List<AppUserVo> getUserByUserIds(List<Integer> ids) {
return mapper.getUserVo(ids); return mapper.getUserVo(ids);
} }
public List<UserStaffBo> findAllStaffs() {
List<UserStaffBo> userStaffBos = mapper.selectAllStaffs();
return CollectionUtils.isEmpty(userStaffBos)? Collections.EMPTY_LIST:userStaffBos;
}
} }
package com.github.wxiaoqi.security.admin.biz; package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.bo.UserIncomeBo; import com.github.wxiaoqi.security.admin.bo.UserIncomeBo;
import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.dto.OrderGoodsDTO; import com.github.wxiaoqi.security.admin.dto.OrderGoodsDTO;
import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO; import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO;
import com.github.wxiaoqi.security.admin.dto.UserSellingWaterAdminDTO; import com.github.wxiaoqi.security.admin.dto.UserSellingWaterAdminDTO;
...@@ -462,6 +463,11 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A ...@@ -462,6 +463,11 @@ public class AppUserSellingWaterBiz extends BaseBiz<AppUserSellingWaterMapper, A
return pageDataVO; return pageDataVO;
} }
public List<UserStaffBo> findStatffSellerWaterByUserIds(List<Integer> userIds) {
List<UserStaffBo> userStaffBos = mapper.statisticsStatffSellerWaterByUserIds(userIds);
return CollectionUtils.isEmpty(userStaffBos)?Collections.EMPTY_LIST:userStaffBos;
}
private enum SellerWallterStatus { private enum SellerWallterStatus {
CANCEL(2, "取消订单"), CANCEL(2, "取消订单"),
POST(1, "已入账"), POST(1, "已入账"),
......
package com.github.wxiaoqi.security.admin.mapper; package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO; import com.github.wxiaoqi.security.admin.dto.AppUserManageDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail; import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.vo.AppUserManageVo; import com.github.wxiaoqi.security.admin.vo.AppUserManageVo;
...@@ -26,4 +27,5 @@ public interface AppUserDetailMapper extends Mapper<AppUserDetail> { ...@@ -26,4 +27,5 @@ public interface AppUserDetailMapper extends Mapper<AppUserDetail> {
List<AppUserManageVo> selectAppUser(AppUserManageDTO appUserManageDTO); List<AppUserManageVo> selectAppUser(AppUserManageDTO appUserManageDTO);
List<UserStaffBo> selectAllStaffs();
} }
\ No newline at end of file
package com.github.wxiaoqi.security.admin.mapper; package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.bo.UserIncomeBo; import com.github.wxiaoqi.security.admin.bo.UserIncomeBo;
import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.dto.UserSellingWaterAdminDTO; import com.github.wxiaoqi.security.admin.dto.UserSellingWaterAdminDTO;
import com.github.wxiaoqi.security.admin.dto.UserSellingWaterFindDTO; import com.github.wxiaoqi.security.admin.dto.UserSellingWaterFindDTO;
import com.github.wxiaoqi.security.admin.entity.AppUserSellingWater; import com.github.wxiaoqi.security.admin.entity.AppUserSellingWater;
import com.github.wxiaoqi.security.admin.vo.SellingWalletVo; import com.github.wxiaoqi.security.admin.vo.SellingWalletVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.web.bind.annotation.RequestParam;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.math.BigDecimal; import java.math.BigDecimal;
...@@ -27,4 +29,6 @@ public interface AppUserSellingWaterMapper extends Mapper<AppUserSellingWater> { ...@@ -27,4 +29,6 @@ public interface AppUserSellingWaterMapper extends Mapper<AppUserSellingWater> {
List<SellingWalletVo> selectSellerWalterByUserIdAndWating(@Param("userId") Integer userId, @Param("wating") Integer wating); List<SellingWalletVo> selectSellerWalterByUserIdAndWating(@Param("userId") Integer userId, @Param("wating") Integer wating);
List<UserSellingWaterAdminDTO> selectSellingWaterPage(UserSellingWaterFindDTO userSellingWaterFindDTO); List<UserSellingWaterAdminDTO> selectSellingWaterPage(UserSellingWaterFindDTO userSellingWaterFindDTO);
List<UserStaffBo> statisticsStatffSellerWaterByUserIds(@RequestParam("userIds") List<Integer> userIds);
} }
...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.rest; ...@@ -2,6 +2,7 @@ package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.*; import com.github.wxiaoqi.security.admin.biz.*;
import com.github.wxiaoqi.security.admin.bo.UserBo; import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.dto.AccountBindDTO; import com.github.wxiaoqi.security.admin.dto.AccountBindDTO;
import com.github.wxiaoqi.security.admin.entity.*; import com.github.wxiaoqi.security.admin.entity.*;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
...@@ -366,4 +367,9 @@ public class AppUserController extends CommonBaseController{ ...@@ -366,4 +367,9 @@ public class AppUserController extends CommonBaseController{
return appUserLoginBiz.findUserDetailInfo(userBos); return appUserLoginBiz.findUserDetailInfo(userBos);
} }
@ApiOperation("查询全部员工")
@GetMapping("/app/user/list_staff")
public List<UserStaffBo> findAllStaffs(){
return userDetailBiz.findAllStaffs();
}
} }
package com.github.wxiaoqi.security.admin.rest; package com.github.wxiaoqi.security.admin.rest;
import com.github.wxiaoqi.security.admin.biz.AppUserSellingWaterBiz; import com.github.wxiaoqi.security.admin.biz.AppUserSellingWaterBiz;
import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO; import com.github.wxiaoqi.security.admin.dto.OrderWaterDTO;
import com.github.wxiaoqi.security.admin.vo.SellingWalletPagVo; import com.github.wxiaoqi.security.admin.vo.SellingWalletPagVo;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig; import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
...@@ -8,10 +9,12 @@ import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil; ...@@ -8,10 +9,12 @@ import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo; import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.List;
/** /**
* @author libin * @author libin
...@@ -72,4 +75,11 @@ public class UserSellingWaterController { ...@@ -72,4 +75,11 @@ public class UserSellingWaterController {
throw new BaseException(e); throw new BaseException(e);
} }
} }
@ApiOperation("员工佣金")
@GetMapping("/list_staff_sellerwater")
public List<UserStaffBo> findStaffSellerWater(@RequestParam("userIds") List<Integer> userIds){
return appUserSellingWaterBiz.findStatffSellerWaterByUserIds(userIds);
}
} }
...@@ -234,5 +234,14 @@ ...@@ -234,5 +234,14 @@
order by l.id ASC order by l.id ASC
</select> </select>
<!--查询非普通用户-->
<select id="selectAllStaffs" resultType="com.github.wxiaoqi.security.admin.bo.UserStaffBo">
select aud.realname as `realName`,aud.nickname as `nickName`,aul.username as `phone`,aupt.position_id as `postionId`,aupt.company_id as `companyId`,aupt.company_name as `companyName`
from `app_user_detail` as `aud` left join `app_user_login` as `aul`
on aul.id=aud.userid left join `app_user_position_temp` as `aupt`
on aupt.user_id=aul.id left join `app_user_position` as `aup`
on aup.id=aupt.position_id
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -26,10 +26,10 @@ FROM ...@@ -26,10 +26,10 @@ FROM
<select id="selectTotalIncomeByUserId" resultType="java.math.BigDecimal"> <select id="selectTotalIncomeByUserId" resultType="java.math.BigDecimal">
SELECT SELECT
( auswu.upIncome - auswd.dowIncome ) AS `income` ( IFNULL(auswu.upIncome,0) - IFNULL(auswd.dowIncome,0) ) AS `income`
FROM FROM
( SELECT IFNULL(SUM( commission ),0) AS upIncome FROM `app_user_selling_water` WHERE STATUS = 0 AND `user_id` = #{userId} ) AS `auswu`, ( SELECT IFNULL(SUM( commission ),0) AS upIncome FROM `app_user_selling_water` WHERE STATUS = 0 AND waiting=1 AND `user_id` = #{userId} ) AS `auswu`,
( SELECT IFNULL(SUM( commission ),0) AS `dowIncome` FROM `app_user_selling_water` WHERE STATUS = 1 AND `user_id` = #{userId} ) AS `auswd`; ( SELECT IFNULL(SUM( commission ),0) AS `dowIncome` FROM `app_user_selling_water` WHERE STATUS = 1 AND waiting=1 AND `user_id` = #{userId} ) AS `auswd`;
</select> </select>
<select id="selectSellerWalterByUserIdAndWating" resultType="com.github.wxiaoqi.security.admin.vo.SellingWalletVo"> <select id="selectSellerWalterByUserIdAndWating" resultType="com.github.wxiaoqi.security.admin.vo.SellingWalletVo">
...@@ -150,4 +150,23 @@ FROM ...@@ -150,4 +150,23 @@ FROM
</if>) AS audd ON audd.userid = ausw.user_id </if>) AS audd ON audd.userid = ausw.user_id
ORDER BY ausw.crt_time DESC ORDER BY ausw.crt_time DESC
</select> </select>
<select id="statisticsStatffSellerWaterByUserIds"
resultType="com.github.wxiaoqi.security.admin.bo.UserStaffBo">
SELECT
`auswu`.user_id, ( IFNULL(auswu.upIncome,0) - IFNULL(auswd.dowIncome,0) ) AS `commission`
FROM
( SELECT `user_id` as `userId`, IFNULL(SUM( commission ),0) AS upIncome FROM `app_user_selling_water` where STATUS = 0 and waiting=1 <if test="userIds!=null and userIds.size!=0">
AND `user_id` IN <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
#{userId}
</foreach>
</if> group by user_id) AS `auswu`
left join
( SELECT `user_id`,IFNULL(SUM( commission ),0) AS `dowIncome` FROM `app_user_selling_water` where STATUS = 1 and waiting=1 <if test="userIds!=null and userIds.size!=0">
AND `user_id` IN <foreach collection="userIds" item="userId" open="(" close=")" separator=",">
#{userId}
</foreach>
</if> group by user_id) AS `auswd`
on auswd.user_id=auswu.user_id
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -23,5 +23,5 @@ public class StaffStatisticsFindDTO extends PageParam { ...@@ -23,5 +23,5 @@ public class StaffStatisticsFindDTO extends PageParam {
private Date endDate; private Date endDate;
private String companyName; private String companyName;
private Integer userPostionId; private Integer userPostionId;
private List<String> companyIds; private List<Integer> companyIds;
} }
package com.xxfc.platform.order.biz; package com.xxfc.platform.order.biz;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.github.wxiaoqi.security.admin.bo.UserDetailBo; import com.github.wxiaoqi.security.admin.bo.UserStaffBo;
import com.github.wxiaoqi.security.admin.feign.UserFeign; import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.vo.AppUserVo; import com.github.wxiaoqi.security.admin.vo.AppUserVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists;
import com.xxfc.platform.order.entity.StaffStatistics; import com.xxfc.platform.order.entity.StaffStatistics;
import com.xxfc.platform.order.mapper.StaffStatisticsMapper; 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.bo.StaffStatisticsTotalBo;
import com.xxfc.platform.order.pojo.dto.StaffStatisticsFindDTO;
import com.xxfc.platform.order.pojo.vo.StaffStatisticsVo; import com.xxfc.platform.order.pojo.vo.StaffStatisticsVo;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -38,6 +38,10 @@ public class StaffStatisticsBiz extends BaseBiz<StaffStatisticsMapper, StaffStat ...@@ -38,6 +38,10 @@ public class StaffStatisticsBiz extends BaseBiz<StaffStatisticsMapper, StaffStat
private final UserFeign userFeign; private final UserFeign userFeign;
private final BaseOrderBiz baseOrderBiz;
private final OrderAccountBiz orderAccountBiz;
public StaffStatisticsTotalBo staffStatisticsWithTotal(StaffStatisticsFindDTO staffStatisticsFindDTO) { public StaffStatisticsTotalBo staffStatisticsWithTotal(StaffStatisticsFindDTO staffStatisticsFindDTO) {
return mapper.statistics(staffStatisticsFindDTO); return mapper.statistics(staffStatisticsFindDTO);
} }
...@@ -57,6 +61,7 @@ public class StaffStatisticsBiz extends BaseBiz<StaffStatisticsMapper, StaffStat ...@@ -57,6 +61,7 @@ public class StaffStatisticsBiz extends BaseBiz<StaffStatisticsMapper, StaffStat
} }
List<Integer> userIds = data.stream().map(StaffStatistics::getUserId).collect(Collectors.toList()); List<Integer> userIds = data.stream().map(StaffStatistics::getUserId).collect(Collectors.toList());
//根据员工id查询员工信息
ObjectRestResponse<List<AppUserVo>> result = userFeign.getByUserIds(userIds); ObjectRestResponse<List<AppUserVo>> result = userFeign.getByUserIds(userIds);
List<AppUserVo> users = result.getData(); 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,AppUserVo> userVoMap = CollectionUtils.isEmpty(users) ? Collections.EMPTY_MAP : users.stream().filter(x->Objects.nonNull(x.getUserid())).collect(Collectors.toMap(AppUserVo::getUserid, Function.identity()));
...@@ -97,4 +102,19 @@ public class StaffStatisticsBiz extends BaseBiz<StaffStatisticsMapper, StaffStat ...@@ -97,4 +102,19 @@ public class StaffStatisticsBiz extends BaseBiz<StaffStatisticsMapper, StaffStat
pageDataVO.setTotalCount(statisticsVoPageDataVO.getTotalCount()); pageDataVO.setTotalCount(statisticsVoPageDataVO.getTotalCount());
return pageDataVO; return pageDataVO;
} }
public void staffStatisticsJob(Date startDate,Date endDate,Map<Integer,String> companyMap){
//1.查询全部员工信息
List<UserStaffBo> userStaffBos = userFeign.findAllStaffs();
//2.根据员工id调用用户服务查询员工的佣金
if (CollectionUtils.isEmpty(userStaffBos)){
return;
}
Map<Integer, UserStaffBo> staffMap = userStaffBos.stream().collect(Collectors.toMap(UserStaffBo::getUserId, Function.identity()));
List<UserStaffBo> staffCommisstions = userFeign.findStaffSellerWater(Lists.newArrayList(staffMap.keySet()));
Map<Integer, BigDecimal> staffCommissionMap = CollectionUtils.isEmpty(staffCommisstions)?Collections.EMPTY_MAP:staffCommisstions.stream().collect(Collectors.toMap(UserStaffBo::getUserId, UserStaffBo::getCommission));
//2.根据员工id去订单基础表查询
//2.根据员工id去订单账目表查询
}
} }
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