Commit 378968c5 authored by hezhen's avatar hezhen

Merge branch 'master' into master_position

# Conflicts:
#	ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserRelationBiz.java
parents cd2547bd 436702b8
......@@ -65,6 +65,10 @@ public class AppUserManageDTO {
*/
private Integer userId;
/**
* 真实姓名
*/
private String realName;
// /**
// * 接收前台时间范围
// */
......
......@@ -86,8 +86,8 @@ public interface UserFeign {
* @param ids
* @return
*/
@RequestMapping(value = "/public/getByUserIds", method = RequestMethod.GET)
public ObjectRestResponse<List<AppUserVo>> getByUserIds(@RequestParam("ids")List<Integer> ids);
@GetMapping(value = "/public/getByUserIds")
ObjectRestResponse<List<AppUserVo>> getByUserIds(@RequestParam("ids")List<Integer> ids);
/**
* 购买会员
......@@ -131,6 +131,15 @@ public interface UserFeign {
@GetMapping("/app/user/finduserIdsByphones")
Map<String, Integer> findAppusersByUserNames(@RequestParam(value = "phones") List<String> phones);
/**
* 批量获取用户基本信息
* @param ids
* @return
*/
@GetMapping("/public/getUsersByUserIds")
ObjectRestResponse<List<AppUserVo>> getUsersByUserIds(@RequestParam("ids") List<Integer> ids);
@GetMapping(value = "/app/user/users")
List<Integer> findAppUserIds(@RequestParam(value = "phone",required = false) String phone,
@RequestParam(value = "leaderPhone",required = false) String leaderPhone,
......
......@@ -89,4 +89,11 @@ public class AppUserVo {
private Integer state;
@ApiModelProperty(value = "支付宝授权返回的code")
private String aliCode;
@ApiModelProperty(value = "用户职位名称")
private String jobTitle;
@ApiModelProperty(value = "用户会员名称")
private String memberName;
}
......@@ -167,4 +167,8 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
criteria.andEqualTo("userid",userId);
mapper.updateByExampleSelective(appUserDetail,example);
}
public List<AppUserVo> getUserByUserIds(List<Integer> ids) {
return mapper.getUserVo(ids);
}
}
......@@ -66,7 +66,8 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
log.info("----userId==="+userId+"----parentId===="+parentId+"----自己不能成为自己的上线");
return;
}
/*AppUserVo appUserVo=userDetailBiz.getUserInfoById(userId);
/* AppUserVo appUserVo=userDetailBiz.getUserInfoById(userId);
if (appUserVo==null){
log.info("----userId==="+userId+"----parentId===="+parentId+"----该用户不存在");
return;
......
......@@ -21,4 +21,6 @@ public interface AppUserDetailMapper extends Mapper<AppUserDetail> {
void updateUserPositionByUserId(@Param("userId") Integer id, @Param("positionId") Integer positionId);
List<Integer> getUserIdByUsername(@Param("keywords") String keywords);
List<AppUserVo> getUserVo(@Param("list") List<Integer> ids);
}
\ No newline at end of file
package com.github.wxiaoqi.security.admin.rest;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.biz.*;
import com.github.wxiaoqi.security.admin.entity.*;
......@@ -156,7 +157,20 @@ public class PublicController {
AppUserVo userVo = detailBiz.getUserInfoById(id);
appUserVos.add(userVo);
}
return ObjectRestResponse.succ(appUserVos);
}
@GetMapping("/getUsersByUserIds")
public ObjectRestResponse<List<AppUserVo>> getUsersByUserIds(@RequestParam("ids") List<Integer> ids) {
if(CollectionUtil.isEmpty(ids)) {
return ObjectRestResponse.createFailedResult(500, "参数id为空");
}
List<AppUserVo> appUserVos = detailBiz.getUserByUserIds(ids);
if(CollectionUtil.isEmpty(appUserVos)) {
return ObjectRestResponse.succ(new ArrayList<AppUserVo>());
}
return ObjectRestResponse.succ(appUserVos);
}
......
......@@ -33,6 +33,8 @@
<result column="code" property="code"/>
<result column="inviter_account" property="inviterAccount"/>
<result column="state" property="state"/>
<result column="jobTitle" property="jobTitle"/>
<result column="memberName" property="memberName"/>
</resultMap>
......@@ -45,6 +47,27 @@
</select>
<!-- 获取用户信息 -->
<select id="getUserVo" resultMap="AppUserVoMap">
select l.im_userid,l.username,l.wx_openid,l.unionid,l.openid,l.status,l.id_number,l.certification_status,d.*,p.name as jobTitle,buml.name as memberName from app_user_login l
left join app_user_detail d
on d.userid = l.id
left join base_user_member bum
on bum.user_id=l.id
left join (select level, name from base_user_member_level level where isdel = 0) buml
on bum.member_level = buml.level
left join (select id, name from app_user_position where is_del=0) p
on d.position_id=p.id
where
d.userid in
<foreach collection="list" item="userId" index="index" open="(" separator="," close=")" >
#{userId}
</foreach>
</select>
<select id="getUserIdByUsername" resultType="java.lang.Integer" parameterType="java.lang.String">
select d.userid from app_user_login l
left join app_user_detail d
......@@ -169,6 +192,9 @@
<if test="userId!=null">
and l.id=#{userId}
</if>
<if test="realName !=null and realName != ''">
and d.realname like CONCAT('%',#{realName},'%')
</if>
<if test="citySet != null ">
and d.city_code in
<foreach collection="citySet" item="item" index="index" open="(" separator="," close=")" >
......
......@@ -27,6 +27,7 @@ public class Coupon implements Serializable {
public static final Integer CHANNEL_RENT = 1;
public static final Integer CHANNEL_TOUR = 2;
public static final Integer CHANNEL_CAMPSITE = 3;
public static final Integer CHANNEL_MEMBER = 4;
/**
* 主键id
......
......@@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.admin.dto.UserInfoDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.activity.dto.ActivityListDTO;
import com.xxfc.platform.activity.dto.ActivityPopularizeRelationDTO;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.entity.IntegralUserTotal;
import com.xxfc.platform.activity.vo.UserCouponVo;
import io.swagger.annotations.ApiModelProperty;
......@@ -12,7 +13,9 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
......@@ -73,4 +76,14 @@ public interface ActivityFeign {
@ApiOperation("查询活动的时间")
@GetMapping("/activityList/time/{activityId}")
ActivityListDTO findActivityStartTimeAndEndTimeById(@PathVariable(value = "activityId") Integer activityId);
@ApiOperation("获取所用优惠卷")
@GetMapping("/coupon/coupons")
Map<String, Coupon> coupons();
@ApiOperation("获取所用优惠卷")
@GetMapping("/coupon/couponsBycouponIds")
List<Coupon> couponsByTickerNoList(@RequestParam(value = "tickerNoList") List<String> tickerNoList);
}
......@@ -59,12 +59,18 @@ public class UserCouponVo {
@ApiModelProperty(value = "开始时间", hidden = true )
private Long startTime;
/**
* 到期时间
*/
@ApiModelProperty(value = "到期时间", hidden = true )
private Long expireTime;
@ApiModelProperty(value = "到期时间字符串")
private String expireDate;
/**
* 使用时间
*/
......
package com.xxfc.platform.activity.biz;
import cn.hutool.core.collection.CollectionUtil;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.xxfc.platform.activity.constant.CouponUsed;
import com.xxfc.platform.activity.dto.CouponDTO;
import com.xxfc.platform.activity.dto.CouponFindDTO;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.entity.UserCoupon;
import com.xxfc.platform.activity.vo.CouponPagVo;
import com.xxfc.platform.activity.vo.CouponTitleVo;
import com.xxfc.platform.activity.vo.CouponVo;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.mapper.CouponMapper;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
......@@ -17,10 +22,9 @@ import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import tk.mybatis.mapper.entity.Example;
import java.math.BigDecimal;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.*;
/**
* 优惠券表
......@@ -31,7 +35,8 @@ import java.util.Objects;
*/
@Service
public class CouponBiz extends BaseBiz<CouponMapper, Coupon> {
@Autowired
private UserCouponBiz userCouponBiz;
//获取优惠卷
public Coupon getCouponByUsed(Integer used){
......@@ -122,4 +127,20 @@ public class CouponBiz extends BaseBiz<CouponMapper, Coupon> {
public List<CouponTitleVo> getCouponTitleList() {
return mapper.selectTitles();
}
public Map<String, Coupon> getCoupons() {
HashMap<String, Coupon> map = Maps.newHashMap();
List<Coupon> coupons = mapper.getCoupons();
if (CollectionUtil.isNotEmpty(coupons)) {
for (Coupon coupon : coupons) {
map.put(coupon.getId().toString(),coupon);
}
}
return map;
}
public List<Coupon> couponsByTickerNoList(List<String> tickerNoList) {
return mapper.couponsByTickerNoList(tickerNoList);
}
}
\ No newline at end of file
......@@ -124,9 +124,12 @@ public class UserCouponBiz extends BaseBiz<UserCouponMapper, UserCoupon> {
if(type==1){
startTime=coupon.getStartTime();
expireTime=coupon.getValidEndTime();
}else {
}else if (type==2){
startTime=expireTime;
expireTime+=DAY*coupon.getValidDays();
} else {
startTime=expireTime;
expireTime=-1L;
}
String ticker_no=Snowflake.build()+"";
UserCoupon userCoupon=new UserCoupon();
......
......@@ -2,9 +2,12 @@ package com.xxfc.platform.activity.mapper;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.vo.CouponTitleVo;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
* 优惠券表
......@@ -16,4 +19,9 @@ import java.util.List;
public interface CouponMapper extends Mapper<Coupon> {
List<CouponTitleVo> selectTitles();
List<Coupon> getCoupons();
List<Coupon> couponsByTickerNoList(@Param(value = "tickerNoList") List<String> tickerNoList);
}
......@@ -3,13 +3,30 @@ package com.xxfc.platform.activity.rest;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.activity.biz.CouponBiz;
import com.xxfc.platform.activity.entity.Coupon;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
@RestController
@RequestMapping("coupon")
public class CouponController extends BaseController<CouponBiz, Coupon> {
@ApiOperation("获取所用优惠卷")
@GetMapping("/coupons")
public Map<String, Coupon> coupons() {
return baseBiz.getCoupons();
}
@ApiOperation("获取所用优惠卷")
@GetMapping("/couponsBycouponIds")
public List<Coupon> couponsBycouponIds(@RequestParam(value = "tickerNoList") List<String> tickerNoList) {
return baseBiz.couponsByTickerNoList(tickerNoList);
}
}
\ No newline at end of file
......@@ -40,4 +40,21 @@
<select id="selectTitles" resultType="com.xxfc.platform.activity.vo.CouponTitleVo">
select `id`,`title` from `coupon` where `is_del`=0
</select>
<select id="getCoupons" resultType="com.xxfc.platform.activity.entity.Coupon" >
select id ,title,used_amount from coupon
</select>
<select id="couponsByTickerNoList" resultType="com.xxfc.platform.activity.entity.Coupon">
select c.* from user_coupon u left join coupon c on u.coupon_id=c.id
<where>
u.ticker_no in
<foreach collection="tickerNoList" item="no" index="index" open="(" separator="," close=")">
#{no}
</foreach>
</where>
</select>
</mapper>
\ No newline at end of file
......@@ -13,6 +13,7 @@
<result property="crtTime" column="crt_time"/>
<result property="startTime" column="start_time"/>
<result property="expireTime" column="expire_time"/>
<result property="expireDate" column="expireDate"/>
<result property="useTime" column="use_time"/>
<result property="title" column="title"/>
<result property="subtitle" column="subtitle"/>
......@@ -32,20 +33,20 @@
<select id="getUserCouponsByType" resultMap="userCouponMap">
SELECT
*
*,IF(expire_time=-1,'永久有效',CONCAT('有效期至',FROM_UNIXTIME(expire_time/1000,'%Y-%m-%d'))) as expireDate
FROM
user_coupon u
LEFT JOIN coupon c ON u.coupon_id = c.id
WHERE
u.is_del = 0 and u.user_id=#{userId}
<if test="type==0">
and u.is_use=0 and u.expire_time >=#{time}
and u.is_use=0 and (u.expire_time >=#{time} or u.expire_time=-1)
</if>
<if test="type==1">
and u.is_use=1
</if>
<if test="type==2">
and u.is_use=0 and u.expire_time &lt;#{time}
and u.is_use=0 and u.expire_time &lt;#{time} and u.expire_time!=-1
</if>
<if test="channel!=null and channel!=''">
and (c.channel=#{channel} or c.channel=0 )
......
......@@ -293,4 +293,19 @@ public class BaseOrder implements Serializable {
@ApiModelProperty(value = "促成人联系方式")
@Column(name = "facilitate_phone")
String facilitatePhone;
/**
* 1:微信公众号支付 2.支付宝即时到账,3,银联
*/
@ApiModelProperty(value = "1:微信公众号支付 2.支付宝即时到账,3,银联")
@Column(name = "pay_way")
private Integer payWay;
/**
* 备注
*/
@ApiModelProperty(value = "备注")
@Column(name = "remark")
private Integer remark;
}
......@@ -136,4 +136,6 @@ public class OrderVehicleCrosstown {
private Integer orperaterId;
private String userLicenseImg;
private String checkUserInfo;
}
\ No newline at end of file
package com.xxfc.platform.order.pojo;
import lombok.Data;
import java.math.BigDecimal;
/**
* 费用明细
* @author Administrator
*/
@Data
public class DetailsOfExpenses {
private String key;
private String detail;
private BigDecimal val =BigDecimal.ZERO;
}
package com.xxfc.platform.order.pojo.order;
import lombok.Data;
@Data
public class CheckUserInfoDto {
private Integer id;
private String username;
private String telephone;
}
package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.pojo.DetailsOfExpenses;
import com.xxfc.platform.order.pojo.OrderAccompanyDTO;
import com.xxfc.platform.order.pojo.price.RentVehiclePriceVO;
import com.xxfc.platform.vehicle.entity.VehicleUserLicense;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Data
public class OrderListVo extends BaseOrder {
......@@ -44,4 +51,32 @@ public class OrderListVo extends BaseOrder {
private List<OrderItem> items;
@ApiModelProperty(value = "车辆编号")
private Integer vehicleCode;
@ApiModelProperty(value = "用户职位名称")
private String jobTitle;
@ApiModelProperty(value = "用户会员名称")
private String memberName;
@ApiModelProperty(value = "随车物品")
private String carArticlesJson;
@ApiModelProperty(value = "使用优惠卷")
List<Coupon> couponList;
@ApiModelProperty(value = "退还优惠卷")
List<Coupon> backCouponList;
/**
* 费用详情
*/
private RentVehiclePriceVO rentVehiclePriceVO;
/**
* 费用明细
*/
private List<Map<String,String>> detailsOfExpenses;
}
package com.xxfc.platform.order.pojo.order;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.order.entity.DepositRefundRecord;
import com.xxfc.platform.order.entity.OrderVehicleCrosstown;
import com.xxfc.platform.order.pojo.DedDetailDTO;
import lombok.Data;
import java.util.List;
......@@ -35,8 +37,45 @@ public class OrderVehicleCrosstownDto extends OrderVehicleCrosstown {
private String vehicleNumberPlat;
/**
* 操作人昵称
*/
private String username;
List<DepositRefundRecord> depositRefundRecord;
/**
* 操作人
*/
private String operatorName;
/**
* 操作人手机
*/
private String operatorPhone;
/**
* 操作时间
*/
private Long operatorTime;
/**
* 退还优惠卷
*/
private List<Coupon> backCoupons;
private List<DedDetailDTO> dedDetailDTOList;
private List<DedDetailDTO> violateDetailList;
private String types;
private List<String> typeList;
private Integer address;
private Integer showType;
}
\ No newline at end of file
......@@ -15,4 +15,10 @@ public class AddMemberDTO extends AddOrderCommonDTO{
@ApiModelProperty(value = "会员等级")
private Integer memberLevel;
/**
* 优惠券*
*/
@ApiModelProperty(value = "优惠卷卷号")
private String tickerNos;
}
......@@ -20,4 +20,8 @@ public class NotifyUrlDTO {
//支付类型
@ApiModelProperty(value = "支付类型")
private Integer type;
//支付类型
@ApiModelProperty(value = "支付方式")
private Integer payWay;
}
\ No newline at end of file
......@@ -16,7 +16,7 @@ public class OrderPriceVO {
public BigDecimal realAmount = BigDecimal.ZERO;
@ApiModelProperty(value = "优惠券扣除的费用")
public BigDecimal couponAmount = BigDecimal.ZERO;
@ApiModelProperty(value = "优惠券扣除的费用")
@ApiModelProperty(value = "优惠券描述")
public String couponDesc = "";
@ApiModelProperty(value = "参数json")
......
......@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Data
public class RentVehiclePriceVO extends OrderPriceVO{
......@@ -15,9 +16,9 @@ public class RentVehiclePriceVO extends OrderPriceVO{
BigDecimal damageSafeAmount = BigDecimal.ZERO;
@ApiModelProperty(value = "押金价格")
BigDecimal deposit = BigDecimal.ZERO;
@ApiModelProperty(value = "天数")
@ApiModelProperty(value = "天数")
Integer dayNum = 0;
@ApiModelProperty(value = "车辆天数")
@ApiModelProperty(value = "扣除免费天数后的车辆天数")
Integer vehicleDayNum = 0;
@ApiModelProperty(value = "车辆个数")
Integer vehicleNum = 0;
......
......@@ -18,6 +18,7 @@ import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.inner.OrderCalculateBiz;
import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
......@@ -132,8 +133,8 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
}
public List<OrderListVo> listOrder(Map<String, Object> paramMap) {
return mapper.listOrder(paramMap);
List<OrderListVo> orderListVos = mapper.listOrder(paramMap);
return orderListVos;
}
public List<OrderPageVO> getRentVehicle(Map<String, Object> paramMap) {
......@@ -563,7 +564,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
* @param tradeNo
*/
@Transactional
public void payNotifyHandle(String orderNo, String tradeNo, Integer type) {
public void payNotifyHandle(String orderNo, String tradeNo, Integer type, Integer payWay) {
OrderRentVehicleDetail orvd = new OrderRentVehicleDetail();
OrderTourDetail otd = new OrderTourDetail();
OrderMemberDetail omd = new OrderMemberDetail();
......@@ -578,6 +579,7 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
setHasPay(SYS_TRUE);
setPayTime(System.currentTimeMillis());
setPayOrigin(type);
setPayWay(payWay);
setVersion(baseOrder.getVersion());
}};
......@@ -780,8 +782,6 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
return userFeign;
}
/**
* 订单查询类
*/
......@@ -789,4 +789,19 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
public static class QueryOrderDetailDTO extends QueryOrderDTO {
private String no;
}
/**
* 获取退还优惠卷
* @param orderId
*/
public List<Coupon> getReturnCouponByOrderId(Integer orderId) {
BaseOrder baseOrder = mapper.selectByPrimaryKey(orderId);
String backCoupon = baseOrder.getBackCoupon();
if (StringUtils.isNotBlank(backCoupon)) {
String[] couponArray = backCoupon.split(",");
return activityFeign.couponsByTickerNoList(Lists.newArrayList(couponArray));
}
return Lists.newArrayList();
}
}
\ No newline at end of file
......@@ -305,6 +305,7 @@ public class DailyVehicleOrderStatisticsBiz extends BaseBiz<DailyVehicleOrderSta
types.add(DeductionTypeEnum.VIOLATE_ADVANCE.getCode());
types.add(DeductionTypeEnum.VIOLATE_CANCEL.getCode());
types.add(DeductionTypeEnum.VIOLATE_DELAY.getCode());
types.add(DeductionTypeEnum.VIOLATE_CHANGE_C.getCode());
orderStatistics.setDefaultMoney(get(OrderAccountDeductions, types));
......
......@@ -387,8 +387,21 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
}});
if(null == crosstown) {
//设置等待时间 5秒
try {
Thread.sleep(5000L);
crosstown = crosstownBiz.selectOne(new OrderVehicleCrosstown(){{
setOrderId(orderMQDTO.getId());
setType(crosstownTypeEnum);
}});
if(null == crosstown) {
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, Sets.newSet(StrUtil.format("退款第一部分押金失败,获取不了还车/定损记录,订单号:{}, crosstownTypeEnum: {}", orderMQDTO.getId(), crosstownTypeEnum)));
}
} catch (InterruptedException e) {
e.printStackTrace();
throw new BaseException(ResultCode.PARAM_ILLEGAL_CODE, Sets.newSet(StrUtil.format("退款第一部分押金失败,获取不了还车/定损记录,订单号:{}, crosstownTypeEnum: {}", orderMQDTO.getId(), crosstownTypeEnum)));
}
}
if(null == crosstown.getRestDeposit()
|| crosstown.getRestDeposit().subtract(illegalReserve).compareTo(BigDecimal.ZERO) < 0 ){
......
......@@ -114,10 +114,10 @@ public class OrderDepositRefundRecordBiz extends BaseBiz<DepositRefundRecordMapp
}
if(depositRefundRecord.getStatus() == DepositRefundStatus.VIOLATIONARRIVAL.getCode()) {
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
Integer rentDepositAutoRefundTime = new Integer(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_DEPOSIT_AUTO_REFUND_TIME).getDetail());
Long rentDepositAutoRefundTime = new Long(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_DEPOSIT_AUTO_REFUND_TIME).getDetail());
if(rentDepositAutoRefundTime != null) {
Long time = Long.parseLong(rentDepositAutoRefundTime + "");
depositRefundRecord.setRentDepositAutoRefundTime(depositRefundRecord.getCrtTime() + time * 60 * 60 * 1000);
// Long time = Long.parseLong(rentDepositAutoRefundTime + "");
depositRefundRecord.setRentDepositAutoRefundTime(depositRefundRecord.getCrtTime() + (rentDepositAutoRefundTime * 60L * 1000L));
}
}
}
......
......@@ -46,12 +46,14 @@ public class OrderStatisticsBiz extends BaseBiz<OrderStatisticsMapper, OrderStat
@Autowired
private DailyMembersOrderStatisticsBiz membersStatisticsBiz;
public HomePageOrderData getTotalOrder(List<Integer> companyIds) {
public HomePageOrderData getTotalOrder(List<Integer> companyIds, Integer dataAll) {
HomePageOrderData result = new HomePageOrderData();
ArrayList<HomePageOrderData> list = new ArrayList<>();
list.add(getVehicleHomePageOrderData(companyIds));
list.add(getTourHomePageOrderData(companyIds));
if (1==dataAll) {
list.add(getMemberHomePageOrderData(companyIds));
}
result.setTotalOrders(list.stream().map(HomePageOrderData::getTotalOrders).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setTotalOutstandingDeposit(list.stream().map(HomePageOrderData::getTotalOutstandingDeposit).reduce(BigDecimal.ZERO, BigDecimal::add));
result.setAdditionalIndemnity(list.stream().map(HomePageOrderData::getAdditionalIndemnity).reduce(BigDecimal.ZERO, BigDecimal::add));
......
......@@ -612,7 +612,7 @@ public class OrderMsgBiz {
break;
case SmsTemplateDTO.REFUND_A:
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
Integer rentDepositAutoRefundTime = new Integer(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_DEPOSIT_AUTO_REFUND_TIME).getDetail());
Long rentDepositAutoRefundTime = new Long(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_DEPOSIT_AUTO_REFUND_TIME).getDetail());
if(SYS_TRUE.equals(appUserDTO.getIsMember()) && !NONE.getCode().equals(appUserDTO.getMemberLevel()) ) {
smsParams.add(USER_M+ appUserDTO.getRealname());
}else {
......@@ -623,7 +623,7 @@ public class OrderMsgBiz {
smsParams.add(violateAmount.toString());
smsParams.add(refundAmount.toString());
smsParams.add(residueAmount.toString());
smsParams.add(DateUtil.formatDateTime(DateUtil.date(baseOrder.getRefundTime() + Long.valueOf(rentDepositAutoRefundTime * 60 * 60 * 1000))));
smsParams.add(DateUtil.formatDateTime(DateUtil.date(baseOrder.getRefundTime() + (rentDepositAutoRefundTime * 60L * 1000L))));
break;
case SmsTemplateDTO.REFUND_B:
if(SYS_TRUE.equals(appUserDTO.getIsMember()) && !NONE.getCode().equals(appUserDTO.getMemberLevel()) ) {
......
......@@ -41,7 +41,7 @@ public class FeignHeadConfiguration {
* 遍历请求头里面的属性字段,将logId和token添加到新的请求头中转发到下游服务
* */
if ("Authorization".equalsIgnoreCase(name)) {
log.debug("添加自定义请求头key:" + name + ",value:" + value);
// log.debug("添加自定义请求头key:" + name + ",value:" + value);
requestTemplate.header(name, value);
} else {
//log.debug("FeignHeadConfiguration", "非自定义请求头key:" + name + ",value:" + value + "不需要添加!");
......
......@@ -62,9 +62,6 @@ public class RemindMsgJobHandler extends IJobHandler {
@Override
public ReturnT<String> execute(String idLastNumInterval) {
Map<String, Dictionary> dictionaryMap = thirdFeign.dictionaryGetAll4Map().getData();
Integer rentDepositAutoRefundTime = new Integer(dictionaryMap.get(APP_ORDER+ "_"+ DictionaryKey.RENT_DEPOSIT_AUTO_REFUND_TIME).getDetail());
try {
Date tomorrow = DateUtil.offsetDay(DateUtil.parse(DateUtil.today(), "yyyy-MM-dd"), 1);
Date tomorrowBegin = DateUtil.beginOfDay(tomorrow);
......@@ -75,8 +72,6 @@ public class RemindMsgJobHandler extends IJobHandler {
.where(WeekendSqls.<BaseOrder>custom()
.andIn(BaseOrder::getType, CollectionUtil.newArrayList(OrderTypeEnum.RENT_VEHICLE.getCode(), OrderTypeEnum.TOUR.getCode()))
.andEqualTo(BaseOrder::getStatus, OrderStatusEnum.ORDER_TOSTART.getCode()) //待出发的订单
// .andLessThanOrEqualTo(BaseOrder::getCrtTime, DateUtil.beginOfDay(tomorrow))
// .andGreaterThanOrEqualTo(BaseOrder::getCrtTime, DateUtil.endOfDay(tomorrow))
).build());
for(BaseOrder baseOrder : lists) {
......
......@@ -18,7 +18,7 @@ public interface DailyMembersOrderStatisticsMapper extends Mapper<DailyMembersOr
Map<String, Object> getTravelGmv(@Param("day") Integer day);
OrderStatistics monthOrderTotal(List<Integer> companyIds);
OrderStatistics monthOrderTotal(List<Integer> list);
......
......@@ -19,5 +19,5 @@ public interface DailyTravelOrderStatisticsMapper extends Mapper<DailyTravelOrde
List<DailyTravelOrderStatistics> getTravelPenalSum(@Param("day") Integer day);
OrderStatistics monthOrderTotal(List<Integer> companyIds);
OrderStatistics monthOrderTotal(List<Integer> list);
}
......@@ -25,5 +25,5 @@ public interface DailyVehicleOrderStatisticsMapper extends Mapper<DailyVehicleOr
List<DailyVehicleOrderStatistics> getViolationMoney(@Param("day") Integer day);
OrderStatistics monthOrderTotal(List<Integer> companyIds);
OrderStatistics monthOrderTotal(@Param("list") List<Integer> list);
}
......@@ -5,6 +5,7 @@ import cn.hutool.json.JSONUtil;
import com.rabbitmq.client.Channel;
import com.xxfc.platform.order.biz.OrderAccountBiz;
import com.xxfc.platform.order.biz.OrderRefundBiz;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
......@@ -46,7 +47,10 @@ public class RefundMQHandler {
String msg = new String(message.getBody(), "UTF-8");
OrderMQDTO orderMQDTO = JSONUtil.toBean(msg, OrderMQDTO.class);
//租车订单完成
if(OrderTypeEnum.RENT_VEHICLE.getCode().equals(orderMQDTO.getType())) {
orderAccountBiz.refundPartDeposit(orderMQDTO);
}
executorService.shutdown();
Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
......
......@@ -16,15 +16,14 @@ import com.github.wxiaoqi.security.common.util.ClientUtil;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderItemBiz;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
import com.xxfc.platform.order.biz.OrderUserLicenseBiz;
import com.xxfc.platform.order.biz.*;
import com.xxfc.platform.order.biz.inner.OrderCancelBiz;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.order.pojo.order.CancelOrderDTO;
import com.xxfc.platform.order.pojo.order.OrderAboutParamDTO;
import com.xxfc.platform.order.pojo.order.OrderPageVO;
......@@ -57,6 +56,8 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Controller
......@@ -90,6 +91,24 @@ public class BaseOrderController extends CommonBaseController implements UserRes
@Autowired
OrderItemBiz orderItemBiz;
@Autowired
OrderRentVehicleBiz orderRentVehicleBiz;
@Autowired
OrderVehicleCrosstownBiz crosstownBiz;
@Autowired
OrderViolationBiz orderViolationBiz;
@Autowired
OrderAccountBiz orderAccountBiz;
@Autowired
OrderMsgBiz orderMsgBiz;
@Autowired
OrderDepositRefundRecordBiz orderDepositRefundRecordBiz;
@Override
public UserFeign getUserFeign() {
return userFeign;
......@@ -283,7 +302,7 @@ public class BaseOrderController extends CommonBaseController implements UserRes
public ObjectRestResponse notifyUrl(NotifyUrlDTO dto) {
//判断是否成功,并且订单是未支付状态,则添加支付编号和修改状态
if (StrUtil.isNotBlank(dto.getOrderNo())) {
baseOrderBiz.payNotifyHandle(dto.getOrderNo(), dto.getTradeNo(), dto.getType());
baseOrderBiz.payNotifyHandle(dto.getOrderNo(), dto.getTradeNo(), dto.getType(), dto.getPayWay());
} else {
log.error(" exception notifyUrl : " + JSONUtil.toJsonStr(dto));
}
......@@ -319,6 +338,8 @@ public class BaseOrderController extends CommonBaseController implements UserRes
private Integer startZoneId;
private Integer zoneId;
private Integer userId;
private Integer type;
......@@ -340,6 +361,8 @@ public class BaseOrderController extends CommonBaseController implements UserRes
//订单用户ID列表
private List<Integer> userIds;
//订单用户大区id列表
private List<Integer> zoneIds;
//订单用户手机号或订单用户真实姓名
private String keywords;
......@@ -378,4 +401,61 @@ public class BaseOrderController extends CommonBaseController implements UserRes
return ObjectRestResponse.succ(result);
}
@RequestMapping(value = "/app/unauth/refundDeposit/{no}", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "退款违章保证金")
@IgnoreClientToken
@IgnoreUserToken
public ObjectRestResponse refundDepositAmount(@PathVariable("no") String no) {
BaseOrder baseOrder = baseOrderBiz.selectOne(new BaseOrder(){{
setNo(no);
}});
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail() {{
setOrderId(baseOrder.getId());
}});
Integer crosstownTypeEnum;
//判断是否定损过
if(SYS_TRUE.equals(orvd.getFixedLossStatus())) {
crosstownTypeEnum = CrosstownTypeEnum.FIXED_LOSS.getCode();
}else {
crosstownTypeEnum = CrosstownTypeEnum.ARRIVE.getCode();
}
OrderVehicleCrosstown crosstown = crosstownBiz.selectOne(new OrderVehicleCrosstown(){{
setOrderId(baseOrder.getId());
setType(crosstownTypeEnum);
}});
OrderViolation orderViolation = orderViolationBiz.selectOne(new OrderViolation(){{
setDetailId(orvd.getId());
setIsDel(SYS_FALSE);
}});
OrderAccountDetail oad = new OrderAccountDetail();
String refundDesc = "退还违章押金:";
BigDecimal refundAmont;
if(null != orderViolation) {
//设置扣款项
oad.getDeductions().add(
orderAccountBiz.initDeduction(orderViolation.getPrice(), DeductionTypeEnum.VIOLATE_TRAFFIC_DEDUCT.getDesc(), DeductionTypeEnum.VIOLATE_TRAFFIC_DEDUCT, OrderAccountDeduction.ORIGIN_DEPOSIT)
);
//还车扣除款 剩余的 钱,再减去违章预备金
refundAmont = orvd.getReturnPayResidue().subtract(orderViolation.getPrice());
refundDesc += refundAmont.toString();
}else {
refundAmont = orvd.getReturnPayResidue();
refundDesc += refundAmont.toString();
}
oad.setOriginDepositAmount(orvd.getReturnPayResidue());
oad.setDepositAmount(refundAmont);
orderAccountBiz.refundTrigger(baseOrder, orvd, BigDecimal.ZERO, orvd.getReturnPayResidue(), refundAmont, refundDesc, RefundStatusEnum.REFUND_DEPOSIT.getCode(), AccountTypeEnum.OUT_RESIDUE_DEPOSIT, oad);
orderDepositRefundRecordBiz.completeRecordStatus(crosstown.getId(), DepositRefundStatus.VIOLATIONARRIVAL);
orderMsgBiz.handelMsgDeposit(orvd, baseOrder, userFeign.userDetailById(baseOrder.getUserId()).getData());
return ObjectRestResponse.succ();
}
}
package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken;
import com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken;
......@@ -46,7 +47,8 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,
@ApiOperation(value = "确认会员订单")
public ObjectRestResponse<BaseOrder> add(@RequestBody AddMemberDTO dto) {
MemberBO bo = BeanUtil.toBean(dto, MemberBO.class);
bo.setTickerNo(StrUtil.isNotBlank(dto.getTickerNos())?
StrUtil.splitTrim(dto.getTickerNos(), ","):null);
//查询会员等级实体
// bo.setBaseUserMemberLevel(userFeign.memberEntityList(BeanUtil.beanToMap(new BaseUserMemberLevel(){{
// setId(dto.getMemberLevelId());
......
......@@ -100,7 +100,7 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
UserDTO user = userDTOObjectRestResponse.getData();
List<Integer> companyIds = null;
if (!DATA_AUTHORITY.equals(user.getDataAll())) {
companyIds = vehicleFeign.getCompanyIds().getData();
companyIds = vehicleFeign.getCompanyIds(user.getDataZone(), user.getDataCompany()).getData();
}
//只统计租车订单
if (TYPE_VEHICLE.equals(type)) {
......@@ -111,12 +111,12 @@ public class OrderStatisticsController extends BaseController<OrderStatisticsBiz
return ObjectRestResponse.succ(baseBiz.getTourHomePageOrderData(companyIds));
}
//只统计会员订单
if (TYPE_MEMBER.equals(type)) {
if (TYPE_MEMBER.equals(type)&&DATA_AUTHORITY.equals(user.getDataAll())) {
return ObjectRestResponse.succ(baseBiz.getMemberHomePageOrderData(companyIds));
}
//所有订单
if (TYPE_TOTAL.equals(type)) {
return ObjectRestResponse.succ(baseBiz.getTotalOrder(companyIds));
return ObjectRestResponse.succ(baseBiz.getTotalOrder(companyIds,user.getDataAll()));
}
return ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE, "参数错误!");
} catch (Exception e) {
......
......@@ -150,8 +150,8 @@ public abstract class AbstractOrderHandle<Biz extends BaseBiz, Detail extends Or
if(BigDecimal.ZERO.compareTo(realAmount) > 0) {
throw new BaseException(ResultCode.FAILED_CODE);
}else if(BigDecimal.ZERO.compareTo(realAmount) == 0) {
//直接支付
baseOrderBiz.payNotifyHandle(detail.getOrder().getNo(), null, detail.getOrderOrigin());
//直接支付 0表示不需要支付
baseOrderBiz.payNotifyHandle(detail.getOrder().getNo(), null, detail.getOrderOrigin(), 0);
}
}
/**
......
......@@ -9,6 +9,7 @@ import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.entity.Coupon;
import com.xxfc.platform.activity.feign.ActivityFeign;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.biz.OrderCostDetailBiz;
......@@ -99,6 +100,7 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
@PostConstruct
public void init() {
this.channel = Coupon.CHANNEL_MEMBER;
this.orderTypeEnum = OrderTypeEnum.MEMBER;
}
......@@ -333,9 +335,6 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
pageDataVO.setPageNum(memberOrderFindDTO.getPage());
pageDataVO.setPageSize(memberOrderFindDTO.getLimit());
pageDataVO.setData(Collections.EMPTY_LIST);
String name = memberOrderFindDTO.getLevel()==null?"":memberOrderFindDTO.getLevel()==1?"普通":memberOrderFindDTO.getLevel()==2?"黄金":memberOrderFindDTO.getLevel()==3?"钻石":null;
memberOrderFindDTO.setLevelName(name);
if (Objects.nonNull(memberOrderFindDTO.getEndPayTime())){
Long payEndTime = memberOrderFindDTO.getEndPayTime()+(1000*60*60*24);
memberOrderFindDTO.setEndPayTime(payEndTime);
......@@ -407,40 +406,29 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
private MemberOrderStatisticsBo getMemberOrderStatisticsBo(List<MemberOrderBo> baseOrders){
MemberOrderStatisticsBo memberOrderStatisticsBo = new MemberOrderStatisticsBo();
baseOrders.stream().peek(x->{
if(x.getName().contains("黄金")){
x.setDesc("黄金");
}
if (x.getName().contains("钻石")){
x.setDesc("钻石");
}
if (x.getName().contains("普通")){
x.setDesc("普通");
}
}).count();
Map<String, List<MemberOrderBo>> baseOrderMap = baseOrders.stream().collect(Collectors.groupingBy(MemberOrderBo::getDesc, Collectors.toList()));
Map<String, List<MemberOrderBo>> baseOrderHasPayMap = baseOrders.stream().filter(x->x.getHasPay()==1).collect(Collectors.groupingBy(MemberOrderBo::getDesc, Collectors.toList()));
Map<Integer, List<MemberOrderBo>> baseOrderMap = baseOrders.stream().collect(Collectors.groupingBy(MemberOrderBo::getMemberLevel, Collectors.toList()));
Map<Integer, List<MemberOrderBo>> baseOrderHasPayMap = baseOrders.stream().filter(x->x.getHasPay()==1).collect(Collectors.groupingBy(MemberOrderBo::getMemberLevel, Collectors.toList()));
memberOrderStatisticsBo.setOrderNum(baseOrders.size());
BigDecimal totalAmount = baseOrders.stream().filter(x->x.getHasPay()==1).map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalAmount(totalAmount);
List<MemberOrderBo> diamondOrders = baseOrderMap.get(levelEnum.DIAMOND.getDesc());
List<MemberOrderBo> diamondOrders = baseOrderMap.get(levelEnum.DIAMOND.getLevel());
memberOrderStatisticsBo.setDiamondOrderNum(diamondOrders==null?0:diamondOrders.size());
List<MemberOrderBo> diamondHashPayOrders = baseOrderHasPayMap.get(levelEnum.DIAMOND.getDesc());
List<MemberOrderBo> diamondHashPayOrders = baseOrderHasPayMap.get(levelEnum.DIAMOND.getLevel());
diamondHashPayOrders = diamondHashPayOrders==null?Collections.EMPTY_LIST:diamondHashPayOrders;
BigDecimal diamondAmount = diamondHashPayOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
memberOrderStatisticsBo.setTotalDiamondAmount(diamondAmount);
List<MemberOrderBo> goldOrders = baseOrderMap.get(levelEnum.GOLD.getDesc());
List<MemberOrderBo> goldOrders = baseOrderMap.get(levelEnum.GOLD.getLevel());
memberOrderStatisticsBo.setGoldOrderNum(goldOrders==null?0:goldOrders.size());
List<MemberOrderBo> goldHasPayOrders = baseOrderHasPayMap.get(levelEnum.GOLD.getDesc());
List<MemberOrderBo> goldHasPayOrders = baseOrderHasPayMap.get(levelEnum.GOLD.getLevel());
goldHasPayOrders = goldHasPayOrders==null?Collections.EMPTY_LIST:goldHasPayOrders;
BigDecimal goldAmount = goldHasPayOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalGoldAmount(goldAmount);
List<MemberOrderBo> generalOrders = baseOrderMap.get(levelEnum.GENERAL.getDesc());
List<MemberOrderBo> generalOrders = baseOrderMap.get(levelEnum.GENERAL.getLevel());
memberOrderStatisticsBo.setGeneralOrderNum(generalOrders==null?0:generalOrders.size());
List<MemberOrderBo> generalHasPayOrders = baseOrderHasPayMap.get(levelEnum.GENERAL.getDesc());
List<MemberOrderBo> generalHasPayOrders = baseOrderHasPayMap.get(levelEnum.GENERAL.getLevel());
generalHasPayOrders = generalHasPayOrders==null?Collections.EMPTY_LIST:generalHasPayOrders;
BigDecimal generalAmount = generalHasPayOrders.stream().map(MemberOrderBo::getOrderAmount).reduce(BigDecimal.ZERO, (x, y) -> x.add(y));
memberOrderStatisticsBo.setTotalGeneralAmount(generalAmount);
......@@ -448,16 +436,26 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
return memberOrderStatisticsBo;
}
private enum levelEnum{
DIAMOND("钻石"),
GOLD("黄金"),
GENERAL("普通");
DIAMOND(3,"钻石"),
GOLD(2,"黄金"),
GENERAL(1,"普通");
levelEnum(String desc) {
levelEnum(Integer level,String desc) {
this.level = level;
this.desc = desc;
}
private Integer level;
private String desc;
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public String getDesc() {
return desc;
}
......
......@@ -11,7 +11,6 @@ import com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.constant.CommonConstants;
import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
......@@ -45,13 +44,16 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.math.BigDecimal;
import java.util.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum.*;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.order.contant.enumerate.ItemTypeEnum.*;
import static com.xxfc.platform.order.contant.enumerate.ItemTypeEnum.ACCOMPANY;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
@Service
......@@ -452,7 +454,6 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//根据车型、时间、距离,门店,预定车辆
RentVehicleBookDTO rentVehicleBookDTO = BeanUtil.toBean(detail.getBookVehicleVO(), RentVehicleBookDTO.class);
rentVehicleBookDTO.setModelId(detail.getModelId());
rentVehicleBookDTO.setUserName(BaseContextHandler.getName());
rentVehicleBookDTO.setLiftCompany(detail.getStartCompanyId());
rentVehicleBookDTO.setLiftAddr(detail.getStartAddr());
rentVehicleBookDTO.setRetCompany(detail.getEndCompanyId());
......@@ -462,6 +463,10 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
rentVehicleBookDTO.setNumberPlate(numberPlate);
rentVehicleBookDTO.setStatus(status);
rentVehicleBookDTO.setUseType(detail.getUseType());
if (detail.getAppUserDTO() != null) {
rentVehicleBookDTO.setVehicleUserPhone(detail.getAppUserDTO().getUsername());
rentVehicleBookDTO.setVehicleUsername(detail.getAppUserDTO().getRealname());
}
if(null != detail.getAccompanyItems()) {
rentVehicleBookDTO.setSelectedAccItem(detail.getAccompanyItems().parallelStream().collect(Collectors.toMap(OrderAccompanyDTO::getId, OrderAccompanyDTO::getNum)));
......
......@@ -115,10 +115,16 @@
<select id="listOrder" parameterType="Map" resultMap="orderListMap">
select b.*
<if test="type==1">
,i.detail as carArticlesJson
</if>
from base_order b
LEFT JOIN order_rent_vehicle_detail r on r.order_id = b.id
LEFT JOIN order_tour_detail t on t.order_id = b.id
LEFT JOIN order_member_detail m on m.order_id = b.id
<if test="type==1">
LEFT JOIN (select * from order_item where type = 104) i on b.id = i.order_id
</if>
<where>
<if test="crtUser != null">
and b.crt_user = #{crtUser}
......@@ -285,6 +291,7 @@
</select>
<select id="findMemberOrders" resultType="com.xxfc.platform.order.pojo.dto.MemberOrderBo">
select bo.*,omd.member_level AS `memberLevel` from (
SELECT
`id`,
`no` AS `orderNo`,
......@@ -298,7 +305,6 @@
`coupon_amount` AS `couponAmount`,
`user_id` AS `userId`,
`has_pay` AS `hasPay`,
`member_level` AS `memberLevel`,
`facilitate_id` AS `facilitateId`,
`facilitate_phone` AS `facilitatePhone`
FROM
......@@ -332,15 +338,18 @@
<if test="endPayTime!=null and startPayTime==null">
and `pay_time` <![CDATA[<=#{endPayTime}]]>
</if>
<if test="levelName!=null and levelName!=''">
and `name` like CONCAT('%',#{levelName},'%')
</if>
<if test="userIds!=null and userIds.size()>0">
and `user_id` IN
<foreach collection="userIds" item="userId" separator="," open="(" close=")">
#{userId}
</foreach>
</if>
ORDER BY `crt_time` DESC
) AS `bo`
INNER JOIN (select * from `order_member_detail` where 1=1
<if test="level!=null">
and `member_level`=#{level}
</if>
) AS `omd` ON omd.order_id=bo.id
ORDER BY bo.`creatTime` DESC
</select>
</mapper>
\ No newline at end of file
......@@ -22,9 +22,9 @@
daily_members_order_statistics
WHERE
1=1
<if test="companyIds != null and companyIds.size()!=0">
<if test="list != null and list.size()!=0">
and branch_company_id in
<foreach collection="companyIds" index="index" item="companyId" open="(" separator="," close=")" >
<foreach collection="list" index="index" item="companyId" open="(" separator="," close=")" >
#{companyId}
</foreach>
</if>
......
......@@ -58,9 +58,9 @@
daily_travel_order_statistics
WHERE
1=1
<if test="companyIds != null and companyIds.size()!=0">
<if test="list != null and list.size()!=0">
and branch_company_id in
<foreach collection="companyIds" index="index" item="companyId" open="(" separator="," close=")" >
<foreach collection="list" index="index" item="companyId" open="(" separator="," close=")" >
#{companyId}
</foreach>
</if>
......
......@@ -94,9 +94,9 @@
daily_vehicle_order_statistics
WHERE
1=1
<if test="companyIds != null and companyIds.size()!=0">
<if test="list != null and list.size()!=0">
and branch_company_id in
<foreach collection="companyIds" index="index" item="companyId" open="(" separator="," close=")" >
<foreach collection="list" index="index" item="companyId" open="(" separator="," close=")" >
#{companyId}
</foreach>
</if>
......
......@@ -51,6 +51,12 @@
<if test="orderNo != null">
and o.order_no = #{orderNo}
</if>
<if test="typeList != null and typeList.size() != 0">
and o.type in
<foreach collection="typeList" item="type" index="index" open="(" separator="," close=")">
#{type}
</foreach>
</if>
</where>
</select>
<select id="selectByOrderNo" parameterType="java.util.Map" resultType="com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto">
......
......@@ -187,7 +187,8 @@ public class OrderPayBiz extends BaseBiz<OrderPayMapper, OrderPay> {
if (StringUtils.isNotBlank(pay.getNotifyUrl())) {
String url = pay.getNotifyUrl();
Integer type = pay.getType() == null ? 1 : pay.getType();
url += "&tradeNo=" + orderNo + "&type=" + type;
Integer payWay = pay.getPayWay();
url += "&tradeNo=" + orderNo + "&type=" + type+"&payWay="+payWay;
log.error("---支付回调处理---orderNo=======" + orderNo + "----notifyUrl====" + url);
String result = "";
if (url.contains("https") || url.contains("HTTPS")) {
......
......@@ -182,4 +182,8 @@ public class VehicleModel implements Serializable {
@Column(name = "img_desc")
@ApiModelProperty("seo*html标签优化")
private String imgDesc;
@Column(name = "app_show")
@ApiModelProperty("是否在App展示")
private Integer appShow;
}
package com.xxfc.platform.vehicle.feign;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.GoodDataVO;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
......@@ -171,8 +172,8 @@ public interface VehicleFeign {
@RequestMapping(value = "/vehicleInfo/bookRecord/update", method = RequestMethod.POST)
public ObjectRestResponse update(@RequestBody BookRecordUpdateLog bookRecordUpdateLog);
@RequestMapping(value ="/branchCompany/app/unauth/getCompanyIds",method = RequestMethod.GET)
RestResponse<List<Integer>> getCompanyIds();
@GetMapping(value ="/branchCompany/getCompanyIds")
RestResponse<List<Integer>> getCompanyIds(@RequestParam(value = "dataZone")String dataZone ,@RequestParam(value = "dataCompany")String dataCompany);
@GetMapping(value = "/bookRecord/get")
public ObjectRestResponse<List<BookRecordUpdateLog>> get(@RequestParam(value = "bookRecordId")Long bookRecordId);
......
......@@ -4,14 +4,9 @@ import com.github.wxiaoqi.security.common.vo.PageParam;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.List;
import java.util.Map;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.DATE_TIME_LINE_FORMATTER;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.YMR_SLASH_FORMATTER;
@Data
......@@ -74,6 +69,11 @@ public class RentVehicleBookDTO extends PageParam {
@ApiModelProperty("用户名")
private String userName;
//使用人姓名
private String vehicleUsername;
//使用人电话
private String vehicleUserPhone;
@ApiModelProperty("订单号")
private String orderNo;
......
......@@ -15,6 +15,7 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.google.common.collect.Lists;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.entity.Area;
import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.entity.BranchCompanyStockInfo;
......@@ -413,8 +414,22 @@ public class BranchCompanyBiz extends BaseBiz<BranchCompanyMapper, BranchCompany
return ObjectRestResponse.succ(list);
}
public List<Integer> getCompanyIds() {
UserDTO userDTO = getAdminUserInfo();
return vehicleBiz.dataCompany(userDTO.getDataZone(), userDTO.getDataCompany());
public List<Integer> getCompanyIds(String dataZone ,String dataCompany) {
return vehicleBiz.dataCompany(dataZone, dataCompany);
}
@CacheClear(pre = RedisKey.BRANCH_COMPANY_CACHE_ALL)
public ObjectRestResponse delCompanyByBaseId(Integer id) {
Example example = new Example(BranchCompany.class);
example.createCriteria().andEqualTo("companyBaseId", id);
example.createCriteria().andEqualTo("isDel", 0);
BranchCompany branchCompany = mapper.selectOneByExample(example);
if(branchCompany == null) {
return ObjectRestResponse.createFailedResult(ResCode.BRANCH_COMPANY_UNEXIST.getCode(), ResCode.BRANCH_COMPANY_UNEXIST.getDesc());
}
branchCompany.setIsDel(1);
updateSelectiveByIdRe(branchCompany);
return ObjectRestResponse.succ();
}
}
......@@ -8,7 +8,6 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.RandomUtil;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.RedisKey;
import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.mapper.BranchCompanyStockInfoMapper;
......@@ -32,7 +31,6 @@ import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
@Service
@Slf4j
......@@ -388,6 +386,7 @@ public class CompanyBaseBiz extends BaseBiz<CompanyBaseMapper, CompanyBase> {
companyBase.setId(id);
companyBase.setIsDel(1);
updateSelectiveById(companyBase);
branchCompanyBiz.delCompanyByBaseId(id);
return ObjectRestResponse.succ();
}
......
package com.xxfc.platform.vehicle.biz;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.xxfc.platform.vehicle.entity.Constant;
import com.xxfc.platform.vehicle.entity.Vehicle;
import com.xxfc.platform.vehicle.mapper.VehicleMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import tk.mybatis.mapper.entity.Example;
import java.util.Date;
import java.util.List;
/**
* @author Administrator
*/
@Service
@Slf4j
public class ImportVehicleDataBiz extends BaseBiz<VehicleMapper, Vehicle> {
@Autowired
private ConstantBiz constantBiz;
@Transactional(rollbackFor = Exception.class)
public Object parsingUploadedFiles(List<List<Object>> excel) {
try {
StringBuffer stringBuffer = new StringBuffer();
StringBuffer stringBuffer2 = new StringBuffer();
for (int i = 0; i < excel.size(); i++) {
System.out.println(i);
List<Object> list = excel.get(i);
//获取车牌号
String numberPlate = (String) list.get(2);
if (StringUtils.isBlank(numberPlate)) {
continue;
}
Example example = new Example(Vehicle.class);
example.createCriteria().andEqualTo("numberPlate", numberPlate);
List<Vehicle> vehicles = mapper.selectByExample(example);
if (CollectionUtils.isEmpty(vehicles)) {
stringBuffer.append(numberPlate).append(",");
continue;
}
Example example1 = new Example(Constant.class);
example1.createCriteria().andEqualTo("type", 3);
List<Constant> constants = constantBiz.selectByExample(example1);
for (Vehicle vehicle : vehicles) {
if (i==83){
System.out.println("测试");
}
log.info("修改前:" + vehicle.toString());
if (numberPlate.equals(vehicle.getNumberPlate()) && !( String.valueOf(list.get(1)).equals(vehicle.getCode()))) {
stringBuffer2.append("numberPlate:" + numberPlate).append(",").append("code:" + ((String) list.get(2))).append("|");
}
//设置托管人
if (list.get(5) != null) {
vehicle.setBelongTo(2);
vehicle.setBelongToName((String) list.get(5));
}
//设置车架号
if (list.get(6) != null) {
vehicle.setVin((String) list.get(6));
}
// //设置交强险公司
// if (list.get(7) != null && !((String) list.get(7)).trim().equals("未知")) {
// String company = (String) list.get(7);
// for (Constant constant : constants) {
// if (constant.getVal().contains(company)) {
// vehicle.setStrongInsuranceCompany(constant.getCode());
// break;
// }
// }
//
//
// }
//
// //设置交强险单号
// if (list.get(8) != null) {
// vehicle.setStrongInsuranceNo((String) list.get(8));
// }
//
// //设置交强险到期时间
// if ((list.get(9) != null) && String.valueOf(list.get(9)).trim() != "") {
// vehicle.setStrongInsuranceEndDate(((DateTime) list.get(9)).toJdkDate());
// }
//设置商业险公司
if (list.get(10) != null) {
String company = (String) list.get(10);
for (Constant constant : constants) {
if (constant.getVal().contains(company)) {
vehicle.setInsuranceCompany(constant.getCode());
break;
}
}
}
//设置商业险单号
if (list.get(11) != null) {
vehicle.setInsuranceNo((String) list.get(11));
}
//设置商业险到期时间
if (list.get(12) != null&&String.valueOf(list.get(12)).trim()!="") {
vehicle.setInsuranceEndDate(((DateTime) list.get(12)).toJdkDate());
}
//设置年审时间
if (list.get(13) != null&&String.valueOf(list.get(13)).trim()!="") {
DateTime dateTime = (DateTime) list.get(13);
vehicle.setAnnualVerificationDate(dateTime.toJdkDate());
}
//设置发动机号
if (list.get(14) != null) {
vehicle.setEngineNum(String.valueOf(list.get(14)) );
}
System.out.println(i);
log.info("修改后:" + vehicle.toString());
mapper.updateByPrimaryKeySelective(vehicle);
}
}
System.out.println("stringBuffer:"+stringBuffer);
System.out.println("stringBuffer2:"+stringBuffer2);
} catch (Exception e) {
log.error(e.getMessage());
e.printStackTrace();
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return null;
}
}
......@@ -10,7 +10,6 @@ import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.mapper.*;
import com.xxfc.platform.vehicle.pojo.*;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
......@@ -62,19 +61,25 @@ public class VehicleActiveService {
log.info("出车参数: departureVo = {}", departureVo.toString());
Vehicle vehicle = vehicleBiz.selectById(departureVo.getVehicleId());
if (vehicle == null) {
log.info("出车异常,车辆不存在!");
throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getDesc(),
ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getCode());
}
if (StringUtils.isBlank(departureVo.getCheckMan()) || StringUtils.isBlank(departureVo.getCheckManTel())) {
throw new BaseException(ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getDesc(),
ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getCode());
}
// if (StringUtils.isBlank(departureVo.getCheckMan()) || StringUtils.isBlank(departureVo.getCheckManTel())) {
// log.error("出车 核销人姓名不能为空!");
// throw new BaseException(ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getDesc(),
// ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getCode());
// }
if (vehicle.getStatus().equals(VehicleStatus.DISCARD.getCode()) || vehicle.getIsDel() == 1 || vehicle.getStatus().equals(VehicleStatus.DEPARTURE.getCode())) {
throw new BaseException(ResCode.VEHICLE_STATUS_IS_NOT_NORMAL.getDesc(),
ResCode.VEHICLE_STATUS_IS_NOT_NORMAL.getCode());
}
//添加出车时间过滤 再出车开始时间前一天至结束时间内可以出车,并且预定记录为已审核状态
try {
checkDateInvalid(departureVo);
} catch (BaseException b) {
throw new BaseException(b.getMessage(), b.getStatus());
}
Integer MileageLift = vehicle.getMileageLastUpdate();
Integer MileageLift1 = departureVo.getMileage();
if (MileageLift1 == null) {
......@@ -193,10 +198,10 @@ public class VehicleActiveService {
throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getDesc(),
ResCode.VEHICLE_DEPARTURE_VEHICLE_UNEXIST.getCode());
}
if (StringUtils.isBlank(arrivalVo.getRecycleMan()) || StringUtils.isBlank(arrivalVo.getRecycleManTel())) {
throw new BaseException(ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getDesc(),
ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getCode());
}
// if (StringUtils.isBlank(arrivalVo.getRecycleMan()) || StringUtils.isBlank(arrivalVo.getRecycleManTel())) {
// throw new BaseException(ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getDesc(),
// ResCode.CHECKUSER_AND_PHONE_NOT_NULL.getCode());
// }
// if (!vehicle.getStatus().equals(VehicleStatus.DEPARTURE.getCode())) {
// throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getDesc() + ", 车辆状态是:" + getVehicleStatus(vehicle.getStatus(), vehicle.getId()),
// ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getCode());
......@@ -215,10 +220,6 @@ public class VehicleActiveService {
}
// 写入车辆公里数,还车分公司id
vehicle.setMileageLastUpdate(MileageRest1);
if (vehicleBookRecord != null) {
vehicle.setParkBranchCompanyId(vehicleBookRecord.getRetCompany());
}
// 出车记录
VehicleDepartureLogVo departureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(arrivalVo.getBookRecordId());
......@@ -263,7 +264,7 @@ public class VehicleActiveService {
throw new BaseException(ResCode.VEHICLE_UNBOOK_FAIL.getDesc(), ResCode.VEHICLE_UNBOOK_FAIL.getCode());
}
} catch (Exception e) {
log.info("提前还车失败,bookVehicleVo = {}", bookVehicleVo.toString());
log.error("提前还车失败,bookVehicleVo = {}", bookVehicleVo.toString());
e.printStackTrace();
}
} else if (actualArrivalDate.compareTo(arrivalDate) > 0) {//实际还车时间大于预计还车时间
......@@ -343,6 +344,7 @@ public class VehicleActiveService {
}
}
if (!(startDate.minusDays(1).compareTo(DateTime.now()) <= 0 && DateTime.now().compareTo(endDate) <= 0 && vehicleBookRecord.getStatus() == VehicleBookRecordStatus.APPROVE.getCode() && (list == null || list.size() <= 0))) {
log.error("出车过滤,有正常未还车记录,请按照预定的日期出车");
throw new BaseException(ResCode.VEHICLE_DEPARTURE_DATE_IS_NOT_ABLED.getDesc(),
ResCode.VEHICLE_DEPARTURE_DATE_IS_NOT_ABLED.getCode());
}
......
......@@ -22,6 +22,7 @@ import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.*;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.entity.*;
import com.xxfc.platform.vehicle.jobhandler.VehicleJobHandler;
import com.xxfc.platform.vehicle.mapper.BookRecordAccItemMapper;
import com.xxfc.platform.vehicle.mapper.VehicleBookInfoMapper;
import com.xxfc.platform.vehicle.mapper.VehicleMapper;
......@@ -89,6 +90,9 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
@Autowired
private VehicleBookInfoBiz vehicleBookInfoBiz;
@Autowired
private VehicleJobHandler vehicleJobHandler;
@Override
public UserFeign getUserFeign() {
......@@ -237,6 +241,9 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
// }
}
mapper.insertSelective(vehicle);
//排班表插入
vehicleJobHandler.InsertBookInfo(vehicle.getId());
}
return RestResponse.suc();
}
......@@ -1173,17 +1180,19 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
public PageDataVO<UsableVehicleModelVO> searchUsableModel(UsableVeicleDTO dto) {
Map<String, Object> params = BeanUtil.beanToMap(dto);
if (StrUtil.isNotBlank(dto.getStartDate()) && StrUtil.isNotBlank(dto.getEndDate())) {
initBookSearchParam(dto, params, Boolean.FALSE);
params = initBookSearchParam(dto, params, Boolean.FALSE);
}
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params));
Map<String, Object> finalParams = params;
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(finalParams));
}
public PageDataVO<UsableVehicleModelVO> searchUsableModelBackStage(UsableVeicleDTO dto) {
Map<String, Object> params = BeanUtil.beanToMap(dto);
if (StrUtil.isNotBlank(dto.getStartDate()) && StrUtil.isNotBlank(dto.getEndDate())) {
initBookSearchParam(dto, params, Boolean.FALSE);
params = initBookSearchParam(dto, params, Boolean.FALSE);
}
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params));
Map<String, Object> finalParams = params;
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(finalParams));
}
public PageDataVO<UsableVehicleModelVO> hotModel(HotVeicleDTO dto) {
......@@ -1192,7 +1201,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
return PageDataVO.pageInfo(dto.getPage(), dto.getLimit(), () -> mapper.searchUsableModel(params));
}
private void initBookSearchParam(UsableVeicleDTO dto, Map<String, Object> params, Boolean needDateExtend) {
private Map<String, Object> initBookSearchParam(UsableVeicleDTO dto, Map<String, Object> params, Boolean needDateExtend) {
List<String> notBookedDates = Lists.newArrayList();
if (StringUtils.isNotBlank(dto.getStartDate()) &&
StringUtils.isNotBlank(dto.getEndDate())) {
......@@ -1202,6 +1211,9 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
}else {
notBookedDates = convertDatePeriod2List(dto.getStartDate(),
dto.getEndDate());
dto.setStartDateExtend(dto.getStartDate());
dto.setEndDateExtend(dto.getEndDate());
params = BeanUtil.beanToMap(dto);
}
}
......@@ -1221,6 +1233,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
//加入预定信息查询条件
fillBookedDateSearchParam(params, yearMonthAndDate, yearMonthAndDateNotBooked);
return params;
}
public PageDataVO<Vehicle> searchUsableVehicle(RentVehicleBookDTO dto) {
......@@ -1229,16 +1242,20 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
dto.setUseType(null);
}
Map<String, Object> params = BeanUtil.beanToMap(dto);
List<String> notBookedDates = Lists.newArrayList();
if (StringUtils.isNotBlank(dto.getBookEndDate()) &&
StringUtils.isNotBlank(dto.getBookEndDate())) {
notBookedDates = convertDatePeriod2List(dto.getBookStartDate(),
dto.getBookEndDate());
dto.setStartDateExtend(dto.getBookStartDate());
dto.setEndDateExtend(dto.getBookEndDate());
// notBookedDates = convertDatePeriod2List(dto.getStartDateExtend(),
// dto.getEndDateExtend());
}
Map<String, Object> params = BeanUtil.beanToMap(dto);
//若传入预定信息查询条件,则查询对应月份预定信息查询条件(不超过3个月)
if (CollectionUtils.isEmpty(notBookedDates)) {
//return;
......
......@@ -83,6 +83,9 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
@Autowired
VehicleActiveService vehicleActiveService;
@Autowired
VehicleBiz vehicleBiz;
@Override
public UserFeign getUserFeign() {
return userFeign;
......@@ -252,6 +255,15 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
if(a <= 0) {
return ObjectRestResponse.createDefaultFail();
}
//出行中才修改车辆停靠分公司
VehicleDepartureLogVo vehicleDepartureLogVo = vehicleDepartureService.getByRecordId(vehicleBookRecord.getId());
if (vehicleDepartureLogVo != null && vehicleDepartureLogVo.getState() == 0) {
Vehicle vehicle = vehicleBiz.selectById(vehicleBookRecord.getVehicleId());
if (vehicle != null) {
vehicle.setParkBranchCompanyId(vehicleBookRecord.getRetCompany());
vehicleBiz.updateSelectiveByIdRe(vehicle);
}
}
return bookRecordUpdateLogBiz.save(bookRecordUpdateLog);
} else {
return ObjectRestResponse.createFailedResult(ResCode.VEHICLE_BOOK_RECORD_IS_NOT_EXIST.getCode(), ResCode.VEHICLE_BOOK_RECORD_IS_NOT_EXIST.getDesc());
......
......@@ -17,6 +17,7 @@ import org.springframework.stereotype.Component;
import java.time.LocalDate;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author libin
......@@ -66,4 +67,21 @@ public class VehicleJobHandler extends IJobHandler {
return FAIL;
}
}
public void InsertBookInfo(String vehicleId){
XxlJobLogger.log("----添加新建的车辆【{}】的bookInfo",vehicleId);
List<VehicleBookInfo> bookInfos = Stream.of(0, 1, 2).map(x -> {
LocalDate date = LocalDate.now().plusMonths(x);
int year = date.getYear();
int month = date.getMonthValue();
String yearAndMonth = String.format("%d-%02d", year, month);
VehicleBookInfo vehicleBookInfo = new VehicleBookInfo();
vehicleBookInfo.setVehicle(vehicleId);
vehicleBookInfo.setYearMonth(yearAndMonth);
return vehicleBookInfo;
}).collect(Collectors.toList());
XxlJobLogger.log("----插入车型对象:【{}】",bookInfos);
vehicleBookInfoBiz.InsertBatch(bookInfos);
}
}
......@@ -221,10 +221,10 @@ public class BranchCompanyController extends BaseController<BranchCompanyBiz> {
return baseBiz.branchCompans();
}
@RequestMapping(value ="/app/unauth/getCompanyIds",method = RequestMethod.GET)
public RestResponse<List<Integer>> getCompanyIds() {
return RestResponse.suc(baseBiz.getCompanyIds());
@GetMapping(value ="/getCompanyIds")
public RestResponse<List<Integer>> getCompanyIds(@RequestParam(value = "dataZone",defaultValue ="")String dataZone ,@RequestParam(value = "dataCompany")String dataCompany) {
return RestResponse.suc(baseBiz.getCompanyIds(dataZone,dataCompany));
}
}
......@@ -200,7 +200,7 @@ public class RentVehicleController extends BaseController<VehicleBiz> implements
LocalDateTime ldt = LocalDateTime.ofInstant(Instant.ofEpochMilli(System.currentTimeMillis()), ZoneOffset.ofHours(8)).plusSeconds(30L);
dto.setBookStartDate(DateTimeFormatter.ofPattern(DATE_TIME_LINE).format(ldt));
}else {
dto.setBookStartDate(dto.getBookEndDateTime());
dto.setBookStartDate(dto.getBookStartDateTime());
}
dto.setBookEndDate(dto.getBookEndDateTime());
BookVehicleVO bookVehicleVo = BeanUtil.toBean(dto, BookVehicleVO.class);
......
......@@ -78,6 +78,9 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use
@Autowired
BookRecordUpdateLogBiz bookRecordUpdateLogBiz;
@Autowired
VehicleDepartureService vehicleDepartureService;
public UserFeign getUserFeign() {
return userFeign;
......@@ -335,6 +338,14 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use
bookRecordUpdateLog.setOperaterId(userDTO.getId());
bookRecordUpdateLog.setOperaterName(userDTO.getName());
bookRecordUpdateLog.setCreateTime(new Date());
VehicleDepartureLogVo vehicleDepartureLogVo = vehicleDepartureService.getByRecordId(oldValue.getId());
if (vehicleDepartureLogVo != null && vehicleDepartureLogVo.getState() == 0) {
Vehicle vehicle = vehicleBiz.selectById(oldValue.getVehicleId());
if (vehicle != null) {
vehicle.setParkBranchCompanyId(oldValue.getRetCompany());
vehicleBiz.updateSelectiveByIdRe(vehicle);
}
}
vehicleBookRecordBiz.updateSelectiveByIdRe(vehicleBookRecord);
return bookRecordUpdateLogBiz.save(bookRecordUpdateLog);
} else {
......
......@@ -18,6 +18,7 @@ import com.xxfc.platform.vehicle.biz.VehicleCataBiz;
import com.xxfc.platform.vehicle.biz.VehicleModelBiz;
import com.xxfc.platform.vehicle.biz.VehiclePlatCataBiz;
import com.xxfc.platform.vehicle.common.RestResponse;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import com.xxfc.platform.vehicle.entity.VehicleCata;
import com.xxfc.platform.vehicle.entity.VehicleModel;
import com.xxfc.platform.vehicle.pojo.VModelDetailVO;
......@@ -292,7 +293,20 @@ public class VehicleModelController extends BaseController<VehicleModelBiz, Vehi
}
}
@ApiOperation("是否在App展示")
@PostMapping(value = "/bg/updateAppShow")
public ObjectRestResponse<VehicleModel> updateAppShow(@RequestBody VehicleModel vehicleModel) {
if (vehicleModel == null || vehicleModel.getId() == null) {
return ObjectRestResponse.paramIsEmpty();
}
VehicleModel oldValue = vehicleModelBiz.selectById(vehicleModel.getId());
if (oldValue == null) {
return ObjectRestResponse.createFailedResult(ResCode.FIND_DATA_NOT_EXIST.getCode(), ResCode.FIND_DATA_NOT_EXIST.getDesc());
}
oldValue.setAppShow(vehicleModel.getAppShow());
vehicleModelBiz.updateByPrimaryKeySelective(oldValue);
return ObjectRestResponse.succ();
}
@ApiOperation("删除")
@DeleteMapping(value = "/app/{id}")
......
package com.xxfc.platform.vehicle.rest.admin;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.vehicle.biz.ImportVehicleDataBiz;
import com.xxfc.platform.vehicle.common.BaseController;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.List;
/**
* @author Administrator
*/
@RestController
@RequestMapping("/vehicle/import")
@Slf4j
public class ImportVehicleDataController extends BaseController<ImportVehicleDataBiz> {
@PostMapping("/excel/import")
public ObjectRestResponse excelImport(@RequestParam("file")MultipartFile excelFile) throws IOException {
String filename = excelFile.getOriginalFilename();
String split = filename.substring(filename.lastIndexOf("."));
if (".xlsx".equals(split)) {
ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE,"文件格式错误,必须为.xlsx文件!!");
}
List<List<Object>> excel= ExcelUtil.getReader(excelFile.getInputStream()).read();
if (excel==null||excel.size()<3) {
ObjectRestResponse.createFailedResult(ResultCode.FAILED_CODE,"导入文件无数据!!");
}
excel.remove(0);
excel.remove(1);
log.error(String.valueOf(excel.size()));
return ObjectRestResponse.succ(baseBiz.parsingUploadedFiles(excel));
}
}
......@@ -807,14 +807,14 @@
</if>
<!-- yearNo4Where 标识时间参数不用于where条件,用于select部分 -->
<if test=" yearMonthAndParam !=null and yearNo4Where != null and yearNo4Where == true">
,(ifnull(max(
vbi.bit_str = #{yearMonthAndParamBitStr}
,(max(
ifnull(vbi.bit_str = #{yearMonthAndParamBitStr}, false)
<!-- 租车列表 不过滤前后预约记录不符的车辆 但是合并标示车型是否有车 即 hasVehicle-->
<if test="withoutRecordWhere != null and withoutRecordWhere = 1 and startCompanyId != null and endCompanyId != null ">
and (abr.to_lift_company is null or abr.to_lift_company = #{startCompanyId})
and (abr.to_return_company is null or abr.to_return_company = #{endCompanyId})
</if>
), 1)
)
) as hasVehicle
</if>
<if test="lon != null and lat != null">
......@@ -871,7 +871,7 @@
bc.id = #{parkBranchCompanyId}
</otherwise>
</choose>
where vm.isdel = 0 and vm.status = 0)
where vm.isdel = 0 and vm.status = 0 and vm.app_show = 1)
</if>
<if test="lon != null and lat != null">
order by
......
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