Commit c5544e9e authored by libin's avatar libin

大屏数据调试

parent e2ef45c1
...@@ -38,9 +38,8 @@ public class UserProfileDisplay { ...@@ -38,9 +38,8 @@ public class UserProfileDisplay {
*/ */
@Column(name = "users_num") @Column(name = "users_num")
private Integer usersNum; private Integer usersNum;
/**
* 会员数 @Transient
*/ @JsonIgnore
@Column(name = "members_num") private long memberNums;
private Integer membersNum;
} }
...@@ -30,7 +30,7 @@ public class UserProfileDisplayVo implements Serializable { ...@@ -30,7 +30,7 @@ public class UserProfileDisplayVo implements Serializable {
/** /**
* 会员占比数 * 会员占比数
*/ */
private int membershipRatio; private String membershipRatio;
/** /**
* 用户统计 * 用户统计
*/ */
......
...@@ -12,7 +12,6 @@ import com.github.wxiaoqi.security.admin.vo.AppUserInfoVo; ...@@ -12,7 +12,6 @@ import com.github.wxiaoqi.security.admin.vo.AppUserInfoVo;
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.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.im.utils.BeanUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
...@@ -222,4 +221,12 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail ...@@ -222,4 +221,12 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
} }
return null; return null;
} }
public List<AppUserDetail> findAllUsers() {
Example example = new Example(AppUserDetail.class);
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("isdel",0);
List<AppUserDetail> userDetails = mapper.selectByExample(example);
return CollectionUtils.isEmpty(userDetails)?Collections.emptyList():userDetails;
}
} }
package com.github.wxiaoqi.security.admin.biz; package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.UserProfileDisplay; import com.github.wxiaoqi.security.admin.entity.UserProfileDisplay;
import com.github.wxiaoqi.security.admin.mapper.UserProfileDisplayMapper; import com.github.wxiaoqi.security.admin.mapper.UserProfileDisplayMapper;
import com.github.wxiaoqi.security.admin.vo.UserProfileDisplayVo; import com.github.wxiaoqi.security.admin.vo.UserProfileDisplayVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz; import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.universal.entity.Dictionary;
import com.xxfc.platform.universal.feign.ThirdFeign;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
/** /**
* @author libin * @author libin
...@@ -19,9 +29,97 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -19,9 +29,97 @@ import org.springframework.transaction.annotation.Transactional;
@Service @Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class UserProfileDisplayBiz extends BaseBiz<UserProfileDisplayMapper, UserProfileDisplay> { public class UserProfileDisplayBiz extends BaseBiz<UserProfileDisplayMapper, UserProfileDisplay> {
/**
* 字典查询type
*/
@Value("${large.screen.type:LARGE_SCREEN_DISPLAY}")
private String largeScreenType;
/**
* 字典查询code
*/
@Value("${large.screen.member.code:LARGE_SCREEN_DISPLAY_EMEMBER_CONSTANT}")
private String largeScreenCode;
private final AppUserDetailBiz appUserDetailBiz;
private final ThirdFeign thirdFeign;
private static final Integer GUANG_DONG_CODE = 440000;
public UserProfileDisplayVo findUserProfileData() { public UserProfileDisplayVo findUserProfileData() {
UserProfileDisplayVo userProfileDisplayVo = new UserProfileDisplayVo(); UserProfileDisplayVo userProfileDisplayVo = new UserProfileDisplayVo();
//todo //1.查询固定数据
List<UserProfileDisplay> userProfileDisplays = mapper.selectAll();
//2.查询真实数据
List<AppUserDetail> appUserDetails = appUserDetailBiz.findAllUsers();
//3.包装数据
List<UserProfileDisplay> wrapUserProfileDisplays = wrapToUserProfileDisplay(appUserDetails);
if (CollectionUtils.isNotEmpty(wrapUserProfileDisplays)) {
wrapUserProfileDisplays = aggreationForUserProfileDisplayData(userProfileDisplays, wrapUserProfileDisplays);
}
//4.查询固定会员数
Dictionary dictionary = thirdFeign.findDictionaryByTypeAndCode(largeScreenType, largeScreenCode);
if (Objects.nonNull(dictionary) && StringUtils.hasText(dictionary.getDetail())) {
String memberNumStr = dictionary.getDetail();
long memberNums = Integer.valueOf(memberNumStr);
userProfileDisplayVo.setMembersNum(memberNums);
}
wrapUserProfileDisplay(wrapUserProfileDisplays, userProfileDisplayVo);
userProfileDisplayVo.setUserProfileDisplays(wrapUserProfileDisplays);
return userProfileDisplayVo;
}
private List<UserProfileDisplay> aggreationForUserProfileDisplayData(List<UserProfileDisplay> baseuserProfileDisplays, List<UserProfileDisplay> wrapUserProfileDisplays) {
Map<Integer, UserProfileDisplay> userProfileMap = wrapUserProfileDisplays.stream().collect(Collectors.toMap(UserProfileDisplay::getProvinceCode, Function.identity()));
for (UserProfileDisplay baseuserProfileDisplay : baseuserProfileDisplays) {
Integer provinceCode = baseuserProfileDisplay.getProvinceCode();
UserProfileDisplay userProfileDisplay = userProfileMap.get(provinceCode);
if (Objects.isNull(userProfileDisplay)) {
continue;
}
int userNums = baseuserProfileDisplay.getUsersNum() + userProfileDisplay.getUsersNum();
long memberNums = baseuserProfileDisplay.getMemberNums() + userProfileDisplay.getMemberNums();
baseuserProfileDisplay.setUsersNum(userNums);
baseuserProfileDisplay.setMemberNums(memberNums);
}
return baseuserProfileDisplays;
}
private UserProfileDisplayVo wrapUserProfileDisplay(List<UserProfileDisplay> userProfileDisplays, UserProfileDisplayVo userProfileDisplayVo) {
long membersNum = 0;
long usersNum = 0;
for (UserProfileDisplay userProfileDisplay : userProfileDisplays) {
usersNum = usersNum + userProfileDisplay.getUsersNum();
membersNum = membersNum + userProfileDisplay.getMemberNums();
}
membersNum = membersNum + userProfileDisplayVo.getMembersNum();
userProfileDisplayVo.setUsersNum(usersNum);
userProfileDisplayVo.setMembersNum(membersNum);
double ratio = membersNum / (usersNum * 1.0);
userProfileDisplayVo.setMembershipRatio(String.format("%.2f",ratio));
return userProfileDisplayVo; return userProfileDisplayVo;
} }
private List<UserProfileDisplay> wrapToUserProfileDisplay(List<AppUserDetail> appUserDetails) {
List<UserProfileDisplay> userProfileDisplays = new ArrayList<>();
if (CollectionUtils.isEmpty(appUserDetails)) {
return userProfileDisplays;
}
Map<Integer, List<AppUserDetail>> appUserDetailMap = appUserDetails.stream().peek(x -> {
if (x.getProvinceCode() == null || x.getProvinceCode() == 0) {
x.setProvinceCode(GUANG_DONG_CODE);
}
}).collect(Collectors.groupingBy(AppUserDetail::getProvinceCode, Collectors.toList()));
UserProfileDisplay userProfileDisplay;
Set<Map.Entry<Integer, List<AppUserDetail>>> appUserDetailEntrySet = appUserDetailMap.entrySet();
for (Map.Entry<Integer, List<AppUserDetail>> appUserMapEntry : appUserDetailEntrySet) {
userProfileDisplay = new UserProfileDisplay();
Integer provinceCode = appUserMapEntry.getKey();
userProfileDisplay.setProvinceCode(provinceCode);
List<AppUserDetail> appUserDetailList = appUserMapEntry.getValue();
userProfileDisplay.setUsersNum(appUserDetailList.size());
long members = appUserDetailList.stream().filter(x -> Objects.equals(x.getIsMember(), 1)).count();
userProfileDisplay.setMemberNums(members);
userProfileDisplays.add(userProfileDisplay);
}
return userProfileDisplays;
}
} }
...@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
* @data 2019/12/26 10:11 * @data 2019/12/26 10:11
*/ */
@RestController @RestController
@RequestMapping("/large_screen") @RequestMapping("/large_screen/app/unauth")
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class LargeScreenDisplayUserController { public class LargeScreenDisplayUserController {
private final UserProfileDisplayBiz userProfileDisplayBiz; private final UserProfileDisplayBiz userProfileDisplayBiz;
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
<!-- 可根据自己的需求,是否要使用 --> <!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.github.wxiaoqi.security.admin.entity.UserProfileDisplay" id="userProfileDisplayMap"> <resultMap type="com.github.wxiaoqi.security.admin.entity.UserProfileDisplay" id="userProfileDisplayMap">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="membersNum" column="travel_num"/>
<result property="provinceCode" column="province_code"/> <result property="provinceCode" column="province_code"/>
<result property="provinceName" column="province_name"/> <result property="provinceName" column="province_name"/>
<result property="usersNum" column="users_num"/> <result property="usersNum" column="users_num"/>
......
...@@ -26,4 +26,21 @@ public class LargeScreenDisplayConstantDataBo implements Serializable { ...@@ -26,4 +26,21 @@ public class LargeScreenDisplayConstantDataBo implements Serializable {
* 订单基础单量 * 订单基础单量
*/ */
private int baseOrderNum; private int baseOrderNum;
/**
* 微信支付占比率
*/
private double wxPayRatio;
/**
* 支付宝支付占比率
*/
private double aliPayRatio;
/**
* 安卓终端支付占比率
*/
private double androidPayRatio;
/**
* ios终端支付占比率
*/
private double iosPayRatio;
} }
package com.xxfc.platform.order.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/12/26 15:43
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "center_order_profile_display")
@Entity
public class CenterOrderProfileDisplay implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(generator = "JDBC")
private Integer id;
/**
* 区域id
*/
@Column(name = "area_id")
private Integer areaId;
/**
* 区域名称
*/
@Column(name = "area_name")
private String areaName;
/**
* 区域订单金额
*/
@Column(name = "area_amount")
private BigDecimal areaAmount;
}
...@@ -23,16 +23,7 @@ public class OrderProfileDisplay { ...@@ -23,16 +23,7 @@ public class OrderProfileDisplay {
@Id @Id
@GeneratedValue(generator = "JDBC") @GeneratedValue(generator = "JDBC")
private Integer id; private Integer id;
/**
* 区域id
*/
@Column(name = "area_id")
private Integer areaId;
/**
* 区域名称
*/
@Column(name = "area_name")
private String areaName;
/** /**
* 订单日期 * 订单日期
*/ */
...@@ -43,25 +34,25 @@ public class OrderProfileDisplay { ...@@ -43,25 +34,25 @@ public class OrderProfileDisplay {
*/ */
@Column(name = "order_amount") @Column(name = "order_amount")
private BigDecimal orderAmount; private BigDecimal orderAmount;
/** // /**
* 订单量 // * 订单量
*/ // */
@Column(name = "order_num") // @Column(name = "order_num")
private Integer orderNum; // private Integer orderNum;
/** // /**
* 支付方式 1:微信 2:支付宝 // * 支付方式 1:微信 2:支付宝
*/ // */
@Column(name = "pay_way") // @Column(name = "pay_way")
private Integer payWay; // private Integer payWay;
/** // /**
* 支付终端 1:app 2:小程序 3:公众号 4:ios // * 支付终端 1:app 2:小程序 3:公众号 4:ios
*/ // */
@Column(name = "pay_terminal") // @Column(name = "pay_terminal")
private Integer payTerminal; // private Integer payTerminal;
/** // /**
* 订单类型 1:租车 2:旅游 3:会员 // * 订单类型 1:租车 2:旅游 3:会员
*/ // */
@Column(name = "order_type") // @Column(name = "order_type")
private Integer orderType; // private Integer orderType;
} }
...@@ -60,7 +60,7 @@ public class BaseOrderDTO implements Serializable { ...@@ -60,7 +60,7 @@ public class BaseOrderDTO implements Serializable {
public Date getPayDate() { public Date getPayDate() {
return Objects.isNull(payTime) ? null : DateUtil.beginOfDay(new Date(payTime)); return Objects.isNull(payTime) ? payDate : DateUtil.beginOfDay(new Date(payTime));
} }
public Integer getOrderNum() { public Integer getOrderNum() {
......
...@@ -21,7 +21,7 @@ public class CenterOrderProfileDisplayVo implements Serializable { ...@@ -21,7 +21,7 @@ public class CenterOrderProfileDisplayVo implements Serializable {
/** /**
* 订单金额 * 订单金额
*/ */
private BigDecimal orderAmount = BigDecimal.ZERO; private BigDecimal areaAmount = BigDecimal.ZERO;
/** /**
* 区域名称 * 区域名称
*/ */
......
package com.xxfc.platform.order.pojo.vo; package com.xxfc.platform.order.pojo.vo;
import com.xxfc.platform.order.bo.LargeScreenDisplayConstantDataBo;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -23,16 +22,8 @@ public class LargeScreenDisplayDataVo implements Serializable { ...@@ -23,16 +22,8 @@ public class LargeScreenDisplayDataVo implements Serializable {
* 订单相关数据 * 订单相关数据
*/ */
private OrderProfileDispayVo orderProfileDispayData; private OrderProfileDispayVo orderProfileDispayData;
/**
* 常量数据
*/
private LargeScreenDisplayConstantDataBo largeScreenDisplayConstantData;
public OrderProfileDispayVo getOrderProfileDispayData() { public OrderProfileDispayVo getOrderProfileDispayData() {
return Objects.isNull(orderProfileDispayData)?new OrderProfileDispayVo():orderProfileDispayData; return Objects.isNull(orderProfileDispayData)?new OrderProfileDispayVo():orderProfileDispayData;
} }
public LargeScreenDisplayConstantDataBo getLargeScreenDisplayConstantData() {
return Objects.isNull(largeScreenDisplayConstantData)?new LargeScreenDisplayConstantDataBo():largeScreenDisplayConstantData;
}
} }
...@@ -29,17 +29,25 @@ public class OrderPayProfileDispalyVo implements Serializable { ...@@ -29,17 +29,25 @@ public class OrderPayProfileDispalyVo implements Serializable {
/** /**
* app支付金额 * app支付金额
*/ */
private BigDecimal appPayAmount = BigDecimal.ZERO; private BigDecimal androidPayAmount = BigDecimal.ZERO;
/** /**
* ios支付金额 * ios支付金额
*/ */
private BigDecimal iosPayAmount = BigDecimal.ZERO; private BigDecimal iosPayAmount = BigDecimal.ZERO;
/** /**
* 小程序支付金额 * 微信占比
*/ */
private BigDecimal appletPayAmount = BigDecimal.ZERO; private String wxPayRatio;
/** /**
* 公众号支付金额 * 支付宝占比
*/ */
private BigDecimal weChatOfficialAccountPayAmount = BigDecimal.ZERO; private String aliPayRatio;
/**
* 安卓支付占比
*/
private String androidPayRatio;
/**
* ios支付占比
*/
private String iosPayRatio;
} }
package com.xxfc.platform.order.pojo.vo; package com.xxfc.platform.order.pojo.vo;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -22,9 +23,14 @@ public class OrderProfileVo implements Serializable { ...@@ -22,9 +23,14 @@ public class OrderProfileVo implements Serializable {
/** /**
* 订单日期 * 订单日期
*/ */
@JsonIgnore
private Date orderDate; private Date orderDate;
/** /**
* 订单金额 * 订单金额
*/ */
private BigDecimal orderAmount = BigDecimal.ZERO; private BigDecimal orderAmount = BigDecimal.ZERO;
/**
* 显示日期
*/
private String date;
} }
...@@ -2,6 +2,7 @@ package com.xxfc.platform.order.biz; ...@@ -2,6 +2,7 @@ package com.xxfc.platform.order.biz;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
...@@ -970,7 +971,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements ...@@ -970,7 +971,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
} }
public List<BaseOrderDTO> findOrdersByDate(Date startDate, Date endDate) { public List<BaseOrderDTO> findOrdersByDate(Date startDate, Date endDate) {
List<BaseOrderDTO> baseOrderDTOS = mapper.findOrdersByDate(startDate,endDate); startDate = DateUtil.beginOfDay(startDate);
endDate = DateUtil.endOfDay(endDate);
long startTime = startDate.getTime();
long endTime = endDate.getTime();
List<BaseOrderDTO> baseOrderDTOS = mapper.findOrdersByDate(startDate,endDate,startTime,endTime);
return CollectionUtils.isEmpty(baseOrderDTOS)?Collections.emptyList():baseOrderDTOS; return CollectionUtils.isEmpty(baseOrderDTOS)?Collections.emptyList():baseOrderDTOS;
} }
} }
\ No newline at end of file
package com.xxfc.platform.order.biz;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.order.entity.CenterOrderProfileDisplay;
import com.xxfc.platform.order.mapper.CenterOrderProfileDisplayMapper;
import com.xxfc.platform.order.pojo.vo.CenterOrderProfileDisplayVo;
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 java.util.ArrayList;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/12/26 15:48
*/
@Transactional(rollbackFor = Exception.class)
@Service
@RequiredArgsConstructor(onConstructor =@__(@Autowired))
public class CenterOrderProfileDisplayBiz extends BaseBiz<CenterOrderProfileDisplayMapper, CenterOrderProfileDisplay> {
public List<CenterOrderProfileDisplayVo> findCenterOrderProfileDisplays(){
List<CenterOrderProfileDisplayVo> centerOrderProfileDisplayVos = new ArrayList<>();
List<CenterOrderProfileDisplay> centerOrderProfileDisplays = mapper.selectAll();
if (CollectionUtils.isEmpty(centerOrderProfileDisplays)){
return centerOrderProfileDisplayVos;
}
return JSON.parseObject(JSON.toJSONString(centerOrderProfileDisplays),new TypeReference<List<CenterOrderProfileDisplayVo>>(){});
}
}
...@@ -53,5 +53,7 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> { ...@@ -53,5 +53,7 @@ public interface BaseOrderMapper extends Mapper<BaseOrder> {
List<Achievement> selectTotalStatistical(QueryCriteria queryCriteria); List<Achievement> selectTotalStatistical(QueryCriteria queryCriteria);
List<BaseOrderDTO> findOrdersByDate(@Param("startDate") Date startDate, List<BaseOrderDTO> findOrdersByDate(@Param("startDate") Date startDate,
@Param("endDate") Date endDate); @Param("endDate") Date endDate,
@Param("startTime") Long startTime,
@Param("endTime") Long endTime);
} }
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.CenterOrderProfileDisplay;
import tk.mybatis.mapper.common.Mapper;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/12/26 15:49
*/
public interface CenterOrderProfileDisplayMapper extends Mapper<CenterOrderProfileDisplay> {
}
...@@ -19,7 +19,7 @@ import java.util.Date; ...@@ -19,7 +19,7 @@ import java.util.Date;
* @data 2019/12/24 16:29 * @data 2019/12/24 16:29
*/ */
@RestController @RestController
@RequestMapping("/large_screen") @RequestMapping("/large_screen/app/unauth")
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class LargeScreenDisplayController { public class LargeScreenDisplayController {
......
...@@ -435,20 +435,24 @@ ...@@ -435,20 +435,24 @@
</select> </select>
<select id="selectOrdersByTypeAndTime" resultType="com.xxfc.platform.order.pojo.dto.OrderDTO"> <select id="selectOrdersByTypeAndTime" resultType="com.xxfc.platform.order.pojo.dto.OrderDTO">
select bo.id,bo.type,bo.status,bo.order_amount,bo.real_amount,bo.order_origin,bo.parent_user_id as `userId`,bo.parent_position_id as `postionId`, select bo.id,bo.type,bo.status,bo.order_amount,bo.real_amount,bo.order_origin,bo.parent_user_id as
bo.has_pay,bo.pay_way,omd.memberLevel,IFNULL(IFNULL(orvd.start_company_id,otd.start_company_id),`parent_user_company_id`) AS `companyId`, `userId`,bo.parent_position_id as `postionId`,
bo.has_pay,bo.pay_way,omd.memberLevel,IFNULL(IFNULL(orvd.start_company_id,otd.start_company_id),`parent_user_company_id`)
AS `companyId`,
orvd.deposit,orvd.cost_detail AS `costDetail` orvd.deposit,orvd.cost_detail AS `costDetail`
from (select * from `base_order` where 1=1 from (select * from `base_order` where 1=1
<if test="hasPay!=null"> <if test="hasPay!=null">
and `has_pay`=#{hasPay} and `has_pay`=#{hasPay}
</if> </if>
and (`crt_time` between #{startDate} and #{endDate} or `pay_time` between #{startDate} and #{endDate} ) and `type` IN <foreach collection="types" and (`crt_time` between #{startDate} and #{endDate} or `pay_time` between #{startDate} and #{endDate} ) and
`type` IN <foreach collection="types"
item="type" item="type"
open="(" close=")" open="(" close=")"
separator=","> separator=",">
#{type} #{type}
</foreach> ) AS `bo` </foreach> ) AS `bo`
LEFT JOIN (select `order_id`,`start_company_id`,`deposit`,`cost_detail` from `order_rent_vehicle_detail`) AS `orvd` ON LEFT JOIN (select `order_id`,`start_company_id`,`deposit`,`cost_detail` from `order_rent_vehicle_detail`) AS
`orvd` ON
orvd.order_id=bo.id orvd.order_id=bo.id
LEFT JOIN (select `order_id`,`start_company_id` from `order_tour_detail`) AS `otd` ON otd.order_id=bo.id LEFT JOIN (select `order_id`,`start_company_id` from `order_tour_detail`) AS `otd` ON otd.order_id=bo.id
LEFT JOIN (select `order_id`,`member_level` AS `memberLevel` from `order_member_detail`) AS `omd` ON LEFT JOIN (select `order_id`,`member_level` AS `memberLevel` from `order_member_detail`) AS `omd` ON
...@@ -466,7 +470,8 @@ ...@@ -466,7 +470,8 @@
<select id="selectTotalStatistical" parameterType="com.xxfc.platform.order.pojo.QueryCriteria" <select id="selectTotalStatistical" parameterType="com.xxfc.platform.order.pojo.QueryCriteria"
resultType="com.xxfc.platform.order.pojo.Achievement"> resultType="com.xxfc.platform.order.pojo.Achievement">
select select
crt_time,no,type,order_amount,real_amount,realname,username,parentRealname,positionName,parentUsername,companyName,pay_way,company_id,(order_amount-real_amount) as favorablePrice crt_time,no,type,order_amount,real_amount,realname,username,parentRealname,positionName,parentUsername,companyName,pay_way,company_id,(order_amount-real_amount)
as favorablePrice
from order_user_position_company from order_user_position_company
<where> <where>
<if test="startDate != null"> <if test="startDate != null">
...@@ -495,7 +500,20 @@ ...@@ -495,7 +500,20 @@
</select> </select>
<select id="findOrdersByDate" resultType="com.xxfc.platform.order.pojo.dto.BaseOrderDTO"> <select id="findOrdersByDate" resultType="com.xxfc.platform.order.pojo.dto.BaseOrderDTO">
SELECT bo.*,orvd.start_company_id as `companyId`,orvd.`start_zone_id` as `areaId` FROM(
SELECT
`id`,
`type`,
`real_amount`,
`pay_way`,
`pay_origin`,
`pay_time`
FROM
`base_order`
WHERE
has_pay = 1 and `pay_time` BETWEEN #{startTime} AND #{endTime}
) as bo
left join order_rent_vehicle_detail as orvd on orvd.order_id=bo.id;
</select> </select>
</mapper> </mapper>
\ No newline at end of file
<?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.CenterOrderProfileDisplayMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.order.entity.CenterOrderProfileDisplay" id="centerOrderProfileDisplayMap">
<result property="id" column="id"/>
<result property="areaId" column="area_id"/>
<result property="areaName" column="area_name"/>
<result property="areaAmount" column="area_amount"/>
</resultMap>
</mapper>
\ No newline at end of file
...@@ -6,14 +6,8 @@ ...@@ -6,14 +6,8 @@
<!-- 可根据自己的需求,是否要使用 --> <!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.order.entity.OrderProfileDisplay" id="orderProfileDisplayMap"> <resultMap type="com.xxfc.platform.order.entity.OrderProfileDisplay" id="orderProfileDisplayMap">
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="areaId" column="area_id"/>
<result property="areaName" column="area_name"/>
<result property="orderAmount" column="order_amount"/> <result property="orderAmount" column="order_amount"/>
<result property="orderDate" column="order_date"/> <result property="orderDate" column="order_date"/>
<result property="orderNum" column="order_num"/>
<result property="orderType" column="order_num"/>
<result property="payTerminal" column="pay_terminal"/>
<result property="payWay" column="pay_way"/>
</resultMap> </resultMap>
<select id="findOrderProfileDisplayDatabyDate" resultMap="orderProfileDisplayMap"> <select id="findOrderProfileDisplayDatabyDate" resultMap="orderProfileDisplayMap">
......
package com.xxfc.platform.vehicle.entity; package com.xxfc.platform.vehicle.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
...@@ -20,6 +21,7 @@ import javax.persistence.*; ...@@ -20,6 +21,7 @@ import javax.persistence.*;
public class VehicleProfileDisplay { public class VehicleProfileDisplay {
@Id @Id
@GeneratedValue(generator = "JDBC") @GeneratedValue(generator = "JDBC")
@JsonIgnore
private Integer id; private Integer id;
/** /**
* 省份code * 省份code
...@@ -32,26 +34,9 @@ public class VehicleProfileDisplay { ...@@ -32,26 +34,9 @@ public class VehicleProfileDisplay {
@Column(name = "province_name") @Column(name = "province_name")
private String provinceName; private String provinceName;
/** /**
* 出行中 * 车辆数量
*/ */
@Column(name = "travel_num") @Column(name = "vehicle_num")
private Integer travelNum; private Integer vehicleNum;
/**
* 待出行
*/
@Column(name = "to_travel_num")
private Integer toTravelNum;
/**
* 保养中
*/
@Column(name = "maintenance_num")
private Integer maintenanceNum;
/**
* 维修中
*/
@Column(name = "in_maintenance_num")
private Integer inMaintenanceNum;
} }
...@@ -6,6 +6,7 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO; ...@@ -6,6 +6,7 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.common.RestResponse; import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.entity.*; import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.pojo.*; import com.xxfc.platform.vehicle.pojo.*;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyAreaDTO;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyFindDTO; import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyFindDTO;
import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO; import com.xxfc.platform.vehicle.pojo.dto.VehicleModelCalendarPriceDTO;
import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo; import com.xxfc.platform.vehicle.pojo.vo.AccompanyingItemVo;
...@@ -215,4 +216,7 @@ public interface VehicleFeign { ...@@ -215,4 +216,7 @@ public interface VehicleFeign {
@GetMapping("/area/areas") @GetMapping("/area/areas")
List<Area> findAllAreas(); List<Area> findAllAreas();
@GetMapping("/branchCompany/compnays_area")
public List<BranchCompanyAreaDTO> findBranchCompnayAreaByIds(@RequestParam("companyIds") List<Integer> compnayIds);
} }
...@@ -17,8 +17,7 @@ import java.io.Serializable; ...@@ -17,8 +17,7 @@ import java.io.Serializable;
@AllArgsConstructor @AllArgsConstructor
public class BranchCompanyAreaDTO implements Serializable { public class BranchCompanyAreaDTO implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private Integer compnayId; private Integer companyId;
private String companyName; private String companyName;
private Integer areaId; private Integer areaId;
private String areaName;
} }
...@@ -21,24 +21,6 @@ import java.util.List; ...@@ -21,24 +21,6 @@ import java.util.List;
@AllArgsConstructor @AllArgsConstructor
public class VehicleProfileDisplayVo implements Serializable { public class VehicleProfileDisplayVo implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/**
* 出行中
*/
private long travelNum;
/**
* 待出行
*/
private long toTravelNum;
/**
* 保养中
*/
private long maintenanceNum;
/**
* 维修中
*/
private long inMaintenanceNum;
/** /**
* 每个省份车辆概况数据 * 每个省份车辆概况数据
*/ */
......
...@@ -24,6 +24,7 @@ import com.xxfc.platform.vehicle.mapper.BranchCompanyMapper; ...@@ -24,6 +24,7 @@ import com.xxfc.platform.vehicle.mapper.BranchCompanyMapper;
import com.xxfc.platform.vehicle.pojo.BranchCompanyVo; import com.xxfc.platform.vehicle.pojo.BranchCompanyVo;
import com.xxfc.platform.vehicle.pojo.CompanyDetail; import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import com.xxfc.platform.vehicle.pojo.CompanySearchDTO; import com.xxfc.platform.vehicle.pojo.CompanySearchDTO;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyAreaDTO;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyFindDTO; import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyFindDTO;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyListDTO; import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyListDTO;
import com.xxfc.platform.vehicle.pojo.vo.BranComanyLeaderVo; import com.xxfc.platform.vehicle.pojo.vo.BranComanyLeaderVo;
...@@ -446,4 +447,8 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany ...@@ -446,4 +447,8 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
return branchCompanies.stream().collect(Collectors.toMap(BranchCompany::getId,BranchCompany::getName)); return branchCompanies.stream().collect(Collectors.toMap(BranchCompany::getId,BranchCompany::getName));
} }
public List<BranchCompanyAreaDTO> findBranchCompanyAreaByIds(List<Integer> compnayIds) {
List<BranchCompanyAreaDTO> branchCompanyAreaDTOS = mapper.findBranchCompanyAreaByIds(compnayIds);
return CollectionUtils.isEmpty(branchCompanyAreaDTOS)?Collections.EMPTY_LIST:branchCompanyAreaDTOS;
}
} }
...@@ -11,16 +11,13 @@ import com.xxfc.platform.vehicle.pojo.vo.LargeScreenDisplayBaseDataVo; ...@@ -11,16 +11,13 @@ import com.xxfc.platform.vehicle.pojo.vo.LargeScreenDisplayBaseDataVo;
import com.xxfc.platform.vehicle.pojo.vo.VehicleProfileDisplayVo; import com.xxfc.platform.vehicle.pojo.vo.VehicleProfileDisplayVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.util.List; import java.util.List;
import java.util.concurrent.CountDownLatch;
/** /**
* @author libin * @author libin
...@@ -36,65 +33,28 @@ public class VehicleProfileDisplayBiz extends BaseBiz<VehicleProfileDisplayMappe ...@@ -36,65 +33,28 @@ public class VehicleProfileDisplayBiz extends BaseBiz<VehicleProfileDisplayMappe
/** /**
* 字典查询type * 字典查询type
*/ */
@Value("large.screen.type:LARGE_SCREEN_DISPLAY") @Value("${large.screen.type:LARGE_SCREEN_DISPLAY}")
private String largeScreenType; private String largeScreenType;
/** /**
* 字典查询code * 字典查询code
*/ */
@Value("large.screen.cct.code:LARGE_SCREEN_DISPLAY_CCT_CONSTANT") @Value("${large.screen.cct.code:LARGE_SCREEN_DISPLAY_CCT_CONSTANT}")
private String largeScreenCode; private String largeScreenCode;
private final ThirdFeign thirdFeign; private final ThirdFeign thirdFeign;
private final ThreadPoolTaskExecutor executor;
public LargeScreenDisplayBaseDataVo findVehicleProfileDisplayData() { public LargeScreenDisplayBaseDataVo findVehicleProfileDisplayData() {
LargeScreenDisplayBaseDataVo largeScreenDisplayBaseDataVo = new LargeScreenDisplayBaseDataVo(); LargeScreenDisplayBaseDataVo largeScreenDisplayBaseDataVo = new LargeScreenDisplayBaseDataVo();
VehicleProfileDisplayVo vehicleProfileDisplayVo = new VehicleProfileDisplayVo(); VehicleProfileDisplayVo vehicleProfileDisplayVo = new VehicleProfileDisplayVo();
//1.查询全部固定数据 //1.查询全部固定数据
List<VehicleProfileDisplay> vehicleProfileDisplays = mapper.selectAll(); List<VehicleProfileDisplay> vehicleProfileDisplays = mapper.selectAll();
CountDownLatch latch = new CountDownLatch(1); Dictionary dictionary = thirdFeign.findDictionaryByTypeAndCode(largeScreenType, largeScreenCode);
executor.execute(()->{
try {
Dictionary dictionary = thirdFeign.findDictionaryByTypeAndCode(largeScreenType, largeScreenType);
if (dictionary != null && StringUtils.hasText(dictionary.getDetail())) { if (dictionary != null && StringUtils.hasText(dictionary.getDetail())) {
LargeScreenDisplayCCTConstantDataBo largeScreenDisplayConstantDataBo = JSON.parseObject(dictionary.getDetail(), LargeScreenDisplayCCTConstantDataBo.class); LargeScreenDisplayCCTConstantDataBo largeScreenDisplayConstantDataBo = JSON.parseObject(dictionary.getDetail(), LargeScreenDisplayCCTConstantDataBo.class);
largeScreenDisplayBaseDataVo.setLargeScreenDisplayCCTConstantDataBo(largeScreenDisplayConstantDataBo); largeScreenDisplayBaseDataVo.setLargeScreenDisplayCCTConstantDataBo(largeScreenDisplayConstantDataBo);
} }
}catch (Exception ex){ vehicleProfileDisplayVo.setVehicleProfileDisplays(vehicleProfileDisplays);
log.error("字典数据查询失败【{}】",ex);
}finally {
latch.countDown();
}
});
if (CollectionUtils.isEmpty(vehicleProfileDisplays)) {
try {
latch.await();
} catch (InterruptedException e) {
log.error("查询失败【{}】",e);
}
return largeScreenDisplayBaseDataVo;
}
long travelNum = 0;
long toTravelNum = 0;
long maintenanceNum = 0;
long inMaintenanceNum = 0;
for (VehicleProfileDisplay vehicleProfileDisplay : vehicleProfileDisplays) {
travelNum = +vehicleProfileDisplay.getTravelNum();
toTravelNum = +vehicleProfileDisplay.getToTravelNum();
maintenanceNum = +vehicleProfileDisplay.getMaintenanceNum();
inMaintenanceNum = +vehicleProfileDisplay.getInMaintenanceNum();
}
vehicleProfileDisplayVo.setTravelNum(travelNum);
vehicleProfileDisplayVo.setToTravelNum(toTravelNum);
vehicleProfileDisplayVo.setMaintenanceNum(maintenanceNum);
vehicleProfileDisplayVo.setInMaintenanceNum(inMaintenanceNum);
largeScreenDisplayBaseDataVo.setVehicleProfileDisplayVo(vehicleProfileDisplayVo); largeScreenDisplayBaseDataVo.setVehicleProfileDisplayVo(vehicleProfileDisplayVo);
try {
latch.await();
} catch (InterruptedException e) {
log.error("查询失败【{}】",e);
}
return largeScreenDisplayBaseDataVo; return largeScreenDisplayBaseDataVo;
} }
} }
...@@ -2,6 +2,7 @@ package com.xxfc.platform.vehicle.mapper; ...@@ -2,6 +2,7 @@ package com.xxfc.platform.vehicle.mapper;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.xxfc.platform.vehicle.entity.BranchCompany; import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyAreaDTO;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyListDTO; import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyListDTO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select; import org.apache.ibatis.annotations.Select;
...@@ -24,4 +25,5 @@ public interface BranchCompanyMapper extends Mapper<BranchCompany>, SelectByIdLi ...@@ -24,4 +25,5 @@ public interface BranchCompanyMapper extends Mapper<BranchCompany>, SelectByIdLi
List<JSONObject> getList(); List<JSONObject> getList();
List<BranchCompanyAreaDTO> findBranchCompanyAreaByIds(@Param("companyIds") List<Integer> compnayIds);
} }
\ No newline at end of file
...@@ -19,6 +19,7 @@ import com.xxfc.platform.vehicle.entity.BranchCompany; ...@@ -19,6 +19,7 @@ import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.pojo.BranchCompanyVo; import com.xxfc.platform.vehicle.pojo.BranchCompanyVo;
import com.xxfc.platform.vehicle.pojo.CompanyDetail; import com.xxfc.platform.vehicle.pojo.CompanyDetail;
import com.xxfc.platform.vehicle.pojo.CompanySearchDTO; import com.xxfc.platform.vehicle.pojo.CompanySearchDTO;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyAreaDTO;
import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyFindDTO; import com.xxfc.platform.vehicle.pojo.dto.BranchCompanyFindDTO;
import com.xxfc.platform.vehicle.pojo.vo.BranComanyLeaderVo; import com.xxfc.platform.vehicle.pojo.vo.BranComanyLeaderVo;
import com.xxfc.platform.vehicle.pojo.vo.BranchCompanyListVO; import com.xxfc.platform.vehicle.pojo.vo.BranchCompanyListVO;
...@@ -228,4 +229,9 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> { ...@@ -228,4 +229,9 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
return baseBiz.selectCompanyMap(); return baseBiz.selectCompanyMap();
} }
@GetMapping("/compnays_area")
public List<BranchCompanyAreaDTO> findBranchCompnayAreaByIds(@RequestParam("companyIds") List<Integer> compnayIds){
return baseBiz.findBranchCompanyAreaByIds(compnayIds);
}
} }
...@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RestController; ...@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RestController;
* @data 2019/12/26 9:41 * @data 2019/12/26 9:41
*/ */
@RestController @RestController
@RequestMapping("/large_screen") @RequestMapping("/large_screen/app/unauth")
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class LargeScreenDisplayCCTVehicleController { public class LargeScreenDisplayCCTVehicleController {
private final VehicleProfileDisplayBiz vehicleProfileDisplayBiz; private final VehicleProfileDisplayBiz vehicleProfileDisplayBiz;
......
...@@ -97,4 +97,15 @@ ...@@ -97,4 +97,15 @@
</if> </if>
) AS `cb` ON cb.id = bc.company_base_id ORDER BY bc.id ) AS `cb` ON cb.id = bc.company_base_id ORDER BY bc.id
</select> </select>
<select id="findBranchCompanyAreaByIds"
resultType="com.xxfc.platform.vehicle.pojo.dto.BranchCompanyAreaDTO">
select `id` as `companyId`,`name` as `companyName`,`zone_id` as `areaId` from `branch_company`
<if test="companyIds != null and companyIds.size() != 0">
where `id` in
<foreach collection="companyIds" item="companyId" open="(" close=")" separator=",">
#{companyId}
</foreach>
</if>
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -8,9 +8,6 @@ ...@@ -8,9 +8,6 @@
<result property="id" column="id"/> <result property="id" column="id"/>
<result property="provinceName" column="province_name"/> <result property="provinceName" column="province_name"/>
<result property="provinceCode" column="province_code"/> <result property="provinceCode" column="province_code"/>
<result property="inMaintenanceNum" column="in_maintenance_num"/> <result property="vehicleNum" column="vehicle_num"/>
<result property="maintenanceNum" column="maintenance_num"/>
<result property="toTravelNum" column="to_travel_num"/>
<result property="travelNum" column="travel_num"/>
</resultMap> </resultMap>
</mapper> </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