Commit 82fcad23 authored by hezhen's avatar hezhen

Merge branch 'dev' of http://113.105.137.151:22280/youjj/cloud-platform into dev

parents 4e169c9c c5233d1a
...@@ -67,6 +67,7 @@ public class AppAuthServiceImpl implements AuthService { ...@@ -67,6 +67,7 @@ public class AppAuthServiceImpl implements AuthService {
} }
@Override @Override
public JSONObject sendsms(String username, Integer type, String pointList) throws Exception { public JSONObject sendsms(String username, Integer type, String pointList) throws Exception {
pointList = pointList == null ? " " : pointList;
return userService.sendsms(username,type,pointList); return userService.sendsms(username,type,pointList);
} }
......
package com.github.wxiaoqi.security.admin.constant.enumerate;
import java.util.Arrays;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description 身份等级
* @data 2019/12/21 16:51
*/
public enum IdentityLevel {
HEADQUARTERS_SHAREHOLDER(1, "总部股东"),
BRANCH_SHAREHOLDER(2, "分公司股东"),
PARTNER(3, "合伙人"),
STAFF(4, "员工"),
DEPUTY(5, "代理人"),
COMMON_USER(0, "普通用户");
private int level;
private String name;
/**
* 股东
*/
private static List<Integer> shareholeders;
/**
* 员工
*/
private static List<Integer> employees;
static {
shareholeders = Arrays.asList(HEADQUARTERS_SHAREHOLDER.getLevel(), BRANCH_SHAREHOLDER.getLevel());
employees = Arrays.asList(PARTNER.getLevel(), STAFF.getLevel(), DEPUTY.getLevel(), COMMON_USER.getLevel());
}
IdentityLevel(int level, String name) {
this.level = level;
this.name = name;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.github.wxiaoqi.security.admin.constant.enumerate;
import java.util.Arrays;
import java.util.List;
/**
* @author libin
* @version 1.0
* @description 员工变更状态
* @data 2019/12/21 18:14
*/
public enum StaffChangeStatusEnum {
INDUCTION(1, "入职"),
JOB_CHANGE(2, "职位变更"),
IDENTITY_CHANE(3, "身份变更"),
COMPANY_CHANGE(4, "公司所属变更"),
JOB_SEPARATION(5, "离职(状态更改)"),
REINSTATED(6, "复职(状态更改)");
private int code;
private String desc;
public static List<Integer> needChangePostionsStatus;
static {
needChangePostionsStatus = Arrays.asList(INDUCTION.getCode(),IDENTITY_CHANE.getCode(),JOB_SEPARATION.getCode(),REINSTATED.getCode());
}
StaffChangeStatusEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
package com.github.wxiaoqi.security.admin.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Map;
@Data
public class AppShareholderDetailDTO {
private Integer id;
@ApiModelProperty("用户id")
private Integer userId;
@ApiModelProperty("公司名称")
private String companyName;
@ApiModelProperty("公司ID")
private Integer companyId;
@ApiModelProperty("用户手机号")
private String phone;
@ApiModelProperty("股东名称")
private String name;
@ApiModelProperty("持股状态 0:持股中 1:已退股")
private Integer isQuit;
@ApiModelProperty("创建时间")
private Long crtTime;
@ApiModelProperty("更新时间")
private Long updTime;
@ApiModelProperty("实际入股时间时间")
private Date relTime;
@ApiModelProperty("持股数")
private Integer userNumber;
@ApiModelProperty("公司集合")
private Map<Integer, String> companyMap;
@ApiModelProperty("股东身份ID")
private Integer positionId;
}
package com.github.wxiaoqi.security.admin.dto;
import com.github.wxiaoqi.security.common.vo.PageParam;
import lombok.Data;
@Data
public class AppShareholderDetailFindDTO extends PageParam {
private String phone;
private String name;
private Integer status;
private Integer companyId;
private Integer positionId;
}
package com.github.wxiaoqi.security.admin.entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
@Table(name = "app_shareholder_detail")
@Data
public class AppShareholderDetail {
@Id
@GeneratedValue(generator = "JDBC")//此处加上注解
private Integer id;
@ApiModelProperty("用户id")
@Column(name = "user_id")
private Integer userId;
@ApiModelProperty("公司名称")
@Column(name = "company_name")
private String companyName;
@ApiModelProperty("公司ID")
@Column(name = "company_id")
private Integer companyId;
@ApiModelProperty("用户手机号")
@Column(name = "phone")
private String phone;
@ApiModelProperty("股东名称")
@Column(name = "name")
private String name;
@ApiModelProperty("持股状态 0:持股中 1:已退股")
@Column(name = "is_quit")
private Integer isQuit;
@ApiModelProperty("创建时间")
@Column(name = "crt_time")
private Long crtTime;
@ApiModelProperty("更新时间")
@Column(name = "upd_time")
private Long updTime;
@ApiModelProperty("实际入股时间时间")
@Column(name = "rel_time")
private Date relTime;
@Column(name = "position_id")
private Integer positionId;
}
package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.sql.Timestamp;
import java.util.Date;
import java.util.Map;
@Data
public class AppShareholderDetailVo {
private Integer id;
@ApiModelProperty("用户id")
private Integer userId;
@ApiModelProperty("公司名称")
private String companyName;
@ApiModelProperty("公司ID")
private Integer companyId;
@ApiModelProperty("用户手机号")
private String phone;
@ApiModelProperty("股东名称")
private String name;
@ApiModelProperty("持股状态 0:持股中 1:已退股")
private Integer isQuit;
@ApiModelProperty("创建时间")
private Long crtTime;
@ApiModelProperty("更新时间")
private Long updTime;
@ApiModelProperty("实际入股时间")
private Date relTime;
@ApiModelProperty("持股数")
private Integer userNumber;
@ApiModelProperty("公司集合")
private Map<Integer, String> companyMap;
@ApiModelProperty("股东身份ID")
private Integer positionId;
@ApiModelProperty("股东身份名称")
private String positionName;
}
package com.github.wxiaoqi.security.admin.vo; package com.github.wxiaoqi.security.admin.vo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
...@@ -21,6 +20,8 @@ public class AppUserPositionTempVo { ...@@ -21,6 +20,8 @@ public class AppUserPositionTempVo {
private Integer id; private Integer id;
private Integer userId;
@ApiModelProperty(value = "手机号码") @ApiModelProperty(value = "手机号码")
private String phone; private String phone;
......
package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.dto.AppShareholderDetailDTO;
import com.github.wxiaoqi.security.admin.dto.AppShareholderDetailFindDTO;
import com.github.wxiaoqi.security.admin.entity.AppShareholderDetail;
import com.github.wxiaoqi.security.admin.entity.AppUserDetail;
import com.github.wxiaoqi.security.admin.entity.AppUserLogin;
import com.github.wxiaoqi.security.admin.entity.AppUserPosition;
import com.github.wxiaoqi.security.admin.mapper.AppShareholderDetailMapper;
import com.github.wxiaoqi.security.admin.vo.AppShareholderDetailVo;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
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;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.vehicle.entity.BranchCompany;
import com.xxfc.platform.vehicle.feign.VehicleFeign;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors;
@Slf4j
@Transactional
@Service("appShareholderDetailBiz")
public class AppShareholderDetailBiz extends BaseBiz<AppShareholderDetailMapper, AppShareholderDetail> {
@Autowired
private VehicleFeign vehicleFeign;
@Autowired
private AppUserDetailBiz detailBiz;
@Autowired
private AppUserLoginBiz loginBiz;
@Autowired
private AppUserPositionBiz appUserPositionBiz;
@Autowired
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
public static int HEADQUARTERS_SHAREHOLDER = 1;
public static int BRANCH_HEADQUARTERS_SHAREHOLDER = 2;
private final int BORDER_NUM = 250;
public Integer findShareholderByUserIdOrPhone(Integer userId, String phone) {
return mapper.selectShareHolderByUserIdOrPhone(userId, phone);
}
/**
* 新增股东
* zuoyh
*
* @param appShareholderDetailDTO
* @param updUserId
* @return
*/
public ObjectRestResponse add(AppShareholderDetailDTO appShareholderDetailDTO, Integer updUserId) {
if (appShareholderDetailDTO == null || StringUtils.isBlank(appShareholderDetailDTO.getName()) || StringUtils.isBlank(appShareholderDetailDTO.getPhone()) ||
appShareholderDetailDTO.getCompanyMap().size() == 0) {
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, "参数不能为空");
}
AppShareholderDetail appShareholderDetail = new AppShareholderDetail();
Map<Integer, String> companyMap = appShareholderDetailDTO.getCompanyMap();
for (Integer companyId : companyMap.keySet()) {
String companyName = companyMap.get(companyId);
if (!(companyId != null && companyId > 0 && StringUtils.isNotBlank(companyName)))
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, "分公司不存在");
BranchCompany branchCompany = vehicleFeign.companyId(companyName);
if (branchCompany == null) {
return ObjectRestResponse.createFailedResult(ResultCode.NOTEXIST_CODE, "分公司不存在");
}
Integer positionId = branchCompany.getId().equals(1) ? HEADQUARTERS_SHAREHOLDER : BRANCH_HEADQUARTERS_SHAREHOLDER;
//用户表更改其身份
Integer userId = 0;
//登陆表查询用户手机号
AppUserLogin userLogin = loginBiz.checkeUserLogin(appShareholderDetailDTO.getPhone());
if (userLogin != null) {
userId = userLogin.getId();
//关联查询detail表 获取身份
AppUserDetail appUserDetail = detailBiz.checkeIsAppUser(userId);
if (!(appUserDetail.getPositionId().equals(1))) {
if (positionId.equals(1)) {
detailBiz.updateUserPositionByUserId(userId, positionId);
}
}
}
Integer id = appShareholderDetailDTO.getId() == null ? 0 : appShareholderDetailDTO.getId();
BeanUtils.copyProperties(appShareholderDetailDTO, appShareholderDetail);
appShareholderDetail.setPositionId(positionId);
appShareholderDetailDTO.setUserId(userId);
//插入
if (id == null || id == 0) {
insertSelective(appShareholderDetail);
//編輯
} else {
updateSelectiveById(appShareholderDetail);
}
}
return ObjectRestResponse.succ();
}
/**
* 分页查询
*/
public PageDataVO<AppShareholderDetailVo> findWithPage(AppShareholderDetailFindDTO appShareholderDetailFindDTO) {
PageDataVO<AppShareholderDetailVo> dataVO = new PageDataVO<>();
Example example = new Example(AppShareholderDetail.class);
Example.Criteria criteria = example.createCriteria();
if (StringUtils.isNotEmpty(appShareholderDetailFindDTO.getName())) {
example.createCriteria().andEqualTo("name", String.format("%%%s%%", appShareholderDetailFindDTO.getName().trim()));
}
if (StringUtils.isNotEmpty(appShareholderDetailFindDTO.getPhone())) {
example.createCriteria().andEqualTo("phone", appShareholderDetailFindDTO.getPhone());
}
if (Objects.nonNull(appShareholderDetailFindDTO.getCompanyId())) {
example.createCriteria().andEqualTo("companyId", appShareholderDetailFindDTO.getCompanyId());
}
if (Objects.nonNull(appShareholderDetailFindDTO.getPositionId())) {
example.createCriteria().andEqualTo("positionId", appShareholderDetailFindDTO.getPositionId());
}
example.setOrderByClause("crt_time desc");
PageDataVO<AppShareholderDetail> pageDataVO = PageDataVO.pageInfo(appShareholderDetailFindDTO.getPage(), appShareholderDetailFindDTO.getLimit(), () -> mapper.selectByExample(example));
List<AppShareholderDetail> data = pageDataVO.getData();
if (CollectionUtils.isEmpty(data)) {
dataVO.setData(Collections.EMPTY_LIST);
dataVO.setPageNum(appShareholderDetailFindDTO.getPage());
dataVO.setPageSize(appShareholderDetailFindDTO.getLimit());
return dataVO;
}
List<Integer> postionIds = data.stream().map(AppShareholderDetail::getPositionId).collect(Collectors.toList());
Map<Integer, AppUserPosition> postionMap = appUserPositionBiz.findPostionIdAndPostionMapByIds(postionIds);
List<AppShareholderDetailVo> AppShareholderDetailVos = new ArrayList<>();
AppShareholderDetailVo appShareholderDetailVo;
for (AppShareholderDetail appShareholderDetail : data) {
appShareholderDetailVo = new AppShareholderDetailVo();
String postionName = postionMap == null ? "" : postionMap.get(appShareholderDetail.getPositionId()) == null ? "" : postionMap.get(appShareholderDetail.getPositionId()).getName();
appShareholderDetailVo.setPositionName(postionName);
AppShareholderDetailVos.add(appShareholderDetailVo);
}
dataVO.setPageSize(pageDataVO.getPageSize());
dataVO.setPageNum(pageDataVO.getPageNum());
dataVO.setData(AppShareholderDetailVos);
dataVO.setTotalCount(pageDataVO.getTotalCount());
dataVO.setTotalPage(pageDataVO.getTotalPage());
return dataVO;
}
/**
* 批量导入
*/
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public int importShareholder(List<String[]> shareholderData, Integer userId, String userName) {
List<AppShareholderDetail> appShareholderDetail = new ArrayList<>();
Integer discount = 0;
AtomicInteger counter = new AtomicInteger(0);
int threadNums = shareholderData.size() / BORDER_NUM == 0 ? 1 : shareholderData.size() / BORDER_NUM;
CountDownLatch latch = new CountDownLatch(threadNums);
for (int i = 0; i < threadNums; i++) {
int startIndex = i * BORDER_NUM;
int endIndex = i == (threadNums - 1) ? shareholderData.size() : (i + 1) * BORDER_NUM;
List<String[]> subResultDate = shareholderData.subList(startIndex, endIndex);
threadPoolTaskExecutor.execute(() -> {
wrapperData(subResultDate, discount, counter);
latch.countDown();
});
try {
latch.await();
} catch (InterruptedException e) {
throw new BaseException("导入数据失败");
}
}
return appShareholderDetail.size();
}
/**
* @param subResultDate
* @param discount
* @param counter
*/
private void wrapperData(List<String[]> subResultDate, Integer discount, AtomicInteger counter) {
for (String[] data : subResultDate) {
String name = data[0];
String phone = data[1];
String companyName = data[2];
String Time = data[3];
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
try {
Date relTime = formatter.parse(Time);
BranchCompany branchCompany = vehicleFeign.companyId(companyName);
if (branchCompany != null) {
Integer positionId = branchCompany.getId().equals(1) ? HEADQUARTERS_SHAREHOLDER : BRANCH_HEADQUARTERS_SHAREHOLDER;
AppShareholderDetailDTO appShareholderDetailDTO = new AppShareholderDetailDTO();
//用户表更改其身份
Integer userId = 0;
//登陆表查询用户手机号
AppUserLogin userLogin = loginBiz.checkeUserLogin(phone);
if (userLogin != null) {
userId = userLogin.getId();
appShareholderDetailDTO.setUserId(userId);
//关联查询detail表 获取身份
AppUserDetail appUserDetail = detailBiz.checkeIsAppUser(userId);
if (!(appUserDetail.getPositionId().equals(1))) {
if (positionId.equals(1)) {
detailBiz.updateUserPositionByUserId(userId, positionId);
}
}
}
appShareholderDetailDTO.setUserId(userId);
appShareholderDetailDTO.setPositionId(positionId);
appShareholderDetailDTO.setCompanyId(branchCompany.getId());
appShareholderDetailDTO.setCompanyName(branchCompany.getName());
appShareholderDetailDTO.setName(name);
appShareholderDetailDTO.setPhone(phone);
appShareholderDetailDTO.setRelTime(relTime);
appShareholderDetailDTO.setIsQuit(0);
appShareholderDetailDTO.setCrtTime(System.currentTimeMillis());
AppShareholderDetail appShareholderDetail = new AppShareholderDetail();
BeanUtils.copyProperties(appShareholderDetailDTO, appShareholderDetail);
mapper.insertSelective(appShareholderDetail);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
}
package com.github.wxiaoqi.security.admin.biz; package com.github.wxiaoqi.security.admin.biz;
import com.github.wxiaoqi.security.admin.constant.enumerate.StaffChangeStatusEnum;
import com.github.wxiaoqi.security.admin.dto.AppUserPositionChangeRecordDTO; import com.github.wxiaoqi.security.admin.dto.AppUserPositionChangeRecordDTO;
import com.github.wxiaoqi.security.admin.dto.AppUserPositionTempDTO; import com.github.wxiaoqi.security.admin.dto.AppUserPositionTempDTO;
import com.github.wxiaoqi.security.admin.dto.AppUserPositionTempFindDTO; import com.github.wxiaoqi.security.admin.dto.AppUserPositionTempFindDTO;
...@@ -26,7 +27,6 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -26,7 +27,6 @@ import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example; import tk.mybatis.mapper.entity.Example;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.time.Instant;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -66,6 +66,9 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A ...@@ -66,6 +66,9 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A
@Autowired @Autowired
AppUserPositionChangeRecordBiz appUserPositionChangeRecordBiz; AppUserPositionChangeRecordBiz appUserPositionChangeRecordBiz;
@Autowired
private AppShareholderDetailBiz appShareholderDetailBiz;
public ObjectRestResponse add(AppUserPositionTempDTO appUserPositionTempDTO, Integer updUserId) { public ObjectRestResponse add(AppUserPositionTempDTO appUserPositionTempDTO, Integer updUserId) {
if (appUserPositionTempDTO == null || StringUtils.isBlank(appUserPositionTempDTO.getPhone()) || StringUtils.isBlank(appUserPositionTempDTO.getName()) if (appUserPositionTempDTO == null || StringUtils.isBlank(appUserPositionTempDTO.getPhone()) || StringUtils.isBlank(appUserPositionTempDTO.getName())
...@@ -109,14 +112,12 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A ...@@ -109,14 +112,12 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A
updateSelectiveById(userPositionTemp); updateSelectiveById(userPositionTemp);
} }
if (userId != 0) { if (userId != 0) {
//更改用户身份信息
detailBiz.updateUserPositionByUserId(userId, appUserPositionTempDTO.getPositionId()); detailBiz.updateUserPositionByUserId(userId, appUserPositionTempDTO.getPositionId());
} }
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
public void updateAppuserPostionStatusById(Integer id, int status) { public void updateAppuserPostionStatusById(Integer id, int status) {
AppUserPositionTemp appUserPositionTemp = new AppUserPositionTemp(); AppUserPositionTemp appUserPositionTemp = new AppUserPositionTemp();
appUserPositionTemp.setId(id); appUserPositionTemp.setId(id);
...@@ -315,30 +316,35 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A ...@@ -315,30 +316,35 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A
public void setPostionIdByPhone(String phone) { public void setPostionIdByPhone(String phone) {
try { try {
Example example = new Example(AppUserPositionTemp.class);
example.createCriteria().andEqualTo("phone", phone).andEqualTo("isDel", 0);
List<AppUserPositionTemp> list = selectByExample(example);
if (CollectionUtils.isEmpty(list)) {
log.info("----用户无身份----phone===" + phone);
return;
}
AppUserPositionTemp positionTemp = list.get(0);
if (positionTemp.getUserId() > 0) {
log.info("----用户已存在身份----phone===" + phone);
return;
}
//根据手机号查询userId //根据手机号查询userId
AppUserLogin userLogin = loginBiz.checkeUserLogin(phone); AppUserLogin userLogin = loginBiz.checkeUserLogin(phone);
Integer userId = userLogin.getId();
if (userLogin == null) { if (userLogin == null) {
log.info("----用户不存在----phone===" + phone); log.info("----用户不存在----phone===" + phone);
return; return;
} }
Integer userId = userLogin.getId(); Integer postionId = appShareholderDetailBiz.findShareholderByUserIdOrPhone(null, phone);
positionTemp.setUserId(userId); if (Objects.isNull(postionId)) {
int num = updateSelectiveByIdRe(positionTemp); Example example = new Example(AppUserPositionTemp.class);
if (num > 0) { example.createCriteria().andEqualTo("phone", phone).andEqualTo("isDel", 0);
Integer postionId = positionTemp.getPositionId(); List<AppUserPositionTemp> list = selectByExample(example);
log.info("----用户---postionId====" + postionId + "----phone===" + phone); if (CollectionUtils.isEmpty(list)) {
log.info("----用户无身份----phone===" + phone);
return;
}
AppUserPositionTemp positionTemp = list.get(0);
if (positionTemp.getUserId() > 0) {
log.info("----用户已存在身份----phone===" + phone);
return;
}
positionTemp.setUserId(userId);
int num = updateSelectiveByIdRe(positionTemp);
if (num > 0) {
postionId = positionTemp.getPositionId();
log.info("----用户---postionId====" + postionId + "----phone===" + phone);
detailBiz.updateUserPositionByUserId(userId, postionId);
}
} else {
detailBiz.updateUserPositionByUserId(userId, postionId); detailBiz.updateUserPositionByUserId(userId, postionId);
} }
} catch (Exception e) { } catch (Exception e) {
...@@ -405,11 +411,31 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A ...@@ -405,11 +411,31 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A
appUserPositionTempDTO.setPositionId(6); appUserPositionTempDTO.setPositionId(6);
appUserPositionChangeRecordBiz.addPositionChangeRecord(userPositionTemp, oldData, operatorId, appUserPositionTempDTO.getRelTime()); appUserPositionChangeRecordBiz.addPositionChangeRecord(userPositionTemp, oldData, operatorId, appUserPositionTempDTO.getRelTime());
} }
//用户表更改其身份 if (Objects.nonNull(appUserPositionTempDTO.getUserId())) {
AppUserDetail appUserDetail = detailBiz.checkeIsAppUser(userPositionTemp.getUserId()); if (StaffChangeStatusEnum.needChangePostionsStatus.contains(changeStatus)) {
if (appUserDetail != null) { //用户表更改其身份
loginBiz.updateUserPosition(appUserDetail.getId(), appUserPositionTempDTO.getPositionId()); AppUserDetail appUserDetail = detailBiz.checkeIsAppUser(userPositionTemp.getUserId());
//1.查询股东表 根据userid 或 手机号
Integer postionId = appShareholderDetailBiz.findShareholderByUserIdOrPhone(appUserPositionTempDTO.getUserId(), appUserPositionTempDTO.getPhone());
//离职
if (StaffChangeStatusEnum.JOB_SEPARATION.getCode() == changeStatus) {
if (Objects.isNull(postionId)) {
//更改为普通用户 6
loginBiz.updateUserPosition(appUserDetail.getUserid(), 6);
}
}
//身份变更
if (StaffChangeStatusEnum.IDENTITY_CHANE.getCode() == changeStatus) {
//不是离职状态下
if(Objects.nonNull(userPositionTemp.getIsQuit()) && userPositionTemp.getIsQuit()!=1){
postionId = Objects.nonNull(postionId) ? postionId : appUserPositionTempDTO.getPositionId();
//更改为股东身份
loginBiz.updateUserPosition(appUserDetail.getUserid(), postionId);
}
}
}
} }
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
...@@ -426,14 +452,17 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A ...@@ -426,14 +452,17 @@ public class AppUserPositionTempBiz extends BaseBiz<AppUserPositionTempMapper, A
userPositionTemp.setUpdTime(System.currentTimeMillis()); userPositionTemp.setUpdTime(System.currentTimeMillis());
appUserPositionChangeRecordBiz.andAddJoinJobRecord(appUserPositionTempDTO, operatorId); appUserPositionChangeRecordBiz.andAddJoinJobRecord(appUserPositionTempDTO, operatorId);
//用户表更改其身份 //用户表更改其身份
AppUserDetail appUserDetail = detailBiz.checkeIsAppUser(userPositionTemp.getUserId()); if (Objects.nonNull(appUserPositionTempDTO.getUserId())) {
if (appUserDetail != null) { AppUserDetail appUserDetail = detailBiz.checkeIsAppUser(userPositionTemp.getUserId());
loginBiz.updateUserPosition(appUserDetail.getId(), appUserPositionTempDTO.getPositionId()); if (appUserDetail != null) {
Integer postionId = appShareholderDetailBiz.findShareholderByUserIdOrPhone(appUserPositionTempDTO.getUserId(), appUserPositionTempDTO.getPhone());
postionId = Objects.isNull(postionId) ? appUserPositionTempDTO.getPositionId() : postionId;
loginBiz.updateUserPosition(appUserDetail.getUserid(), postionId);
}
} }
return ObjectRestResponse.succ(); return ObjectRestResponse.succ();
} }
/** /**
* 查询员工信息变更记录表 * 查询员工信息变更记录表
*/ */
......
...@@ -107,6 +107,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -107,6 +107,7 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
List<BaseUserMemberLevel> levesls = userMemberLevelBiz.getLevesls(); List<BaseUserMemberLevel> levesls = userMemberLevelBiz.getLevesls();
Map<Integer, BaseUserMemberLevel> levelAndbaseUserMemberMap = levesls.parallelStream().collect(Collectors.toMap(BaseUserMemberLevel::getLevel, Function.identity())); Map<Integer, BaseUserMemberLevel> levelAndbaseUserMemberMap = levesls.parallelStream().collect(Collectors.toMap(BaseUserMemberLevel::getLevel, Function.identity()));
Map<String,Integer> leavelNameAndLeaveMap = levelAndbaseUserMemberMap.values().parallelStream().collect(Collectors.toMap(BaseUserMemberLevel::getName, BaseUserMemberLevel::getLevel)); Map<String,Integer> leavelNameAndLeaveMap = levelAndbaseUserMemberMap.values().parallelStream().collect(Collectors.toMap(BaseUserMemberLevel::getName, BaseUserMemberLevel::getLevel));
List<String> phones = userMemberData.stream().map(x -> x[0]).distinct().collect(Collectors.toList()); List<String> phones = userMemberData.stream().map(x -> x[0]).distinct().collect(Collectors.toList());
Map<String, Integer> phoneAndUserIdMap = appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones); Map<String, Integer> phoneAndUserIdMap = appUserLoginBiz.findPhoneAndUserIdMapByPhones(phones);
Set<Map.Entry<String, Integer>> leaveNameAndLeaveEntry = leavelNameAndLeaveMap.entrySet(); Set<Map.Entry<String, Integer>> leaveNameAndLeaveEntry = leavelNameAndLeaveMap.entrySet();
...@@ -145,7 +146,10 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper, ...@@ -145,7 +146,10 @@ public class BaseUserMemberExportBiz extends BaseBiz<BaseUserMemberExportMapper,
return baseUserMemberExports.size(); return baseUserMemberExports.size();
} }
private void wrapperData(List<String[]> userMemberData, Integer userId, String userName, List<BaseUserMemberExport> baseUserMemberExports, Map<Integer, BaseUserMemberLevel> levelAndbaseUserMemberMap, Map<String, Integer> phoneAndUserIdMap, Set<Map.Entry<String, Integer>> leaveNameAndLeaveEntry, Integer memberLevel, Integer discount, AtomicInteger counter,Map<Integer,UserMemberDTO> numAndUserMemberMap) { private void wrapperData(List<String[]> userMemberData, Integer userId, String userName,
List<BaseUserMemberExport> baseUserMemberExports, Map<Integer, BaseUserMemberLevel> levelAndbaseUserMemberMap,
Map<String, Integer> phoneAndUserIdMap, Set<Map.Entry<String, Integer>> leaveNameAndLeaveEntry,
Integer memberLevel, Integer discount, AtomicInteger counter,Map<Integer,UserMemberDTO> numAndUserMemberMap) {
for (String[] data : userMemberData) { for (String[] data : userMemberData) {
String phone = data[0]; String phone = data[0];
String memberLevelName = data[1]; String memberLevelName = data[1];
......
package com.github.wxiaoqi.security.admin.mapper;
import com.github.wxiaoqi.security.admin.entity.AppShareholderDetail;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;
/**
* @author zuoyihang
* @version 1.0
* @description
* @data 2019/12/21 18:30
*/
public interface AppShareholderDetailMapper extends Mapper<AppShareholderDetail> {
Integer selectShareHolderByUserIdOrPhone(@Param("userId") Integer userId,
@Param("phone") String phone);
}
package com.github.wxiaoqi.security.admin.rest.admin;
import com.github.wxiaoqi.security.admin.biz.AppShareholderDetailBiz;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.auth.client.jwt.UserAuthUtil;
import com.github.wxiaoqi.security.auth.common.util.jwt.IJWTInfo;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.vehicle.util.excel.ExcelImport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.util.List;
@Slf4j
@RestController
@RequestMapping("/admin/appShareholder")
@Api("后台*会员管理")
public class AppShareholderDetailController {
@Autowired
private UserAuthUtil userAuthUtil;
@Autowired
private UserAuthConfig userAuthConfig;
@Autowired
private AppShareholderDetailBiz appShareholderDetailBiz;
@ApiOperation("批量导入股东")
@PostMapping("/appShareholder/export")
public ObjectRestResponse importAppShareholder(@RequestPart("file") MultipartFile appShareholderExcel, HttpServletRequest request) {
try {
IJWTInfo infoFromToken = userAuthUtil.getInfoFromToken(userAuthConfig.getToken(request));
List<String[]> appShareholderData = ExcelImport.getExcelData(appShareholderExcel);
if (appShareholderData.size() < 1) {
return ObjectRestResponse.createFailedResult(1001, "导入不能没数据!!!");
}
appShareholderData.remove(0);
try {
int effectSize = appShareholderDetailBiz.importShareholder(appShareholderData, Integer.valueOf(infoFromToken.getId()), infoFromToken.getUniqueName());
return ObjectRestResponse.succ(effectSize);
} catch (BaseException ex) {
return ObjectRestResponse.createDefaultFail();
}
} catch (Exception e) {
throw new BaseException(e);
}
}
}
...@@ -5,10 +5,8 @@ import com.github.wxiaoqi.security.admin.dto.StaffStatisticsFindDTO; ...@@ -5,10 +5,8 @@ import com.github.wxiaoqi.security.admin.dto.StaffStatisticsFindDTO;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.github.wxiaoqi.security.common.exception.BaseException; import com.github.wxiaoqi.security.common.exception.BaseException;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
...@@ -22,7 +20,7 @@ import java.util.Map; ...@@ -22,7 +20,7 @@ import java.util.Map;
* @description * @description
* @data 2019/11/26 16:59 * @data 2019/11/26 16:59
*/ */
@RestController @Controller
@RequestMapping("/staff_statistics") @RequestMapping("/staff_statistics")
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class StaffStatisticsAdminController { public class StaffStatisticsAdminController {
...@@ -30,6 +28,7 @@ public class StaffStatisticsAdminController { ...@@ -30,6 +28,7 @@ public class StaffStatisticsAdminController {
private final StaffStatisticsBiz staffStatisticsBiz; private final StaffStatisticsBiz staffStatisticsBiz;
@PostMapping("/page") @PostMapping("/page")
@ResponseBody
public ObjectRestResponse<Map<String,Object>> lisetStaffStatisticsWithPage(@RequestBody StaffStatisticsFindDTO staffStatisticsFindDTO){ public ObjectRestResponse<Map<String,Object>> lisetStaffStatisticsWithPage(@RequestBody StaffStatisticsFindDTO staffStatisticsFindDTO){
Map<String,Object> result = staffStatisticsBiz.listStaffStatisticsWithPage(staffStatisticsFindDTO); Map<String,Object> result = staffStatisticsBiz.listStaffStatisticsWithPage(staffStatisticsFindDTO);
return ObjectRestResponse.succ(result); return ObjectRestResponse.succ(result);
......
<?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.github.wxiaoqi.security.admin.mapper.AppShareholderDetailMapper">
<resultMap id="appShareholderDetailMap" type="com.github.wxiaoqi.security.admin.entity.AppShareholderDetail">
<result property="id" column="id"/>
<result property="companyName" column="company_name"/>
<result property="userId" column="user_id"/>
<result property="phone" column="phone"/>
<result property="companyId" column="company_id"/>
<result property="name" column="name"/>
<result property="crtTime" column="crt_time"/>
<result property="isQuit" column="is_quit"/>
<result property="updTime" column="upd_time"/>
<result property="positionId" column="position_id"/>
</resultMap>
<select id="selectShareHolderByUserIdOrPhone" resultType="java.lang.Integer">
select min(`position_id`) from `app_shareholder_detail` where `is_quit`=0
<choose>
<when test="userId != null and (phone == null or phone != '')">
and `user_id`=#{userId}
</when>
<when test="phone != null and phone != '' and userId == null">
and `phone`=#{phone}
</when>
<otherwise>
and `user_id`=#{userId}
</otherwise>
</choose>
</select>
</mapper>
\ No newline at end of file
...@@ -119,17 +119,20 @@ public class ActivityPopularizeBiz extends BaseBiz<ActivityPopularizeMapper, Act ...@@ -119,17 +119,20 @@ public class ActivityPopularizeBiz extends BaseBiz<ActivityPopularizeMapper, Act
Integer num = relationBiz.getByUserIdAndPopularizeId(activityPopularizeRelation); Integer num = relationBiz.getByUserIdAndPopularizeId(activityPopularizeRelation);
double amount = 0; double amount = 0;
JSONObject jsonObject = JSONObject.parseObject(activityPopularizeItem.getDetail()); if (num <= 10) {
if (jsonObject != null && StringUtils.isNotBlank(jsonObject.getString("detail"))) { JSONObject jsonObject = JSONObject.parseObject(activityPopularizeItem.getDetail());
JSONArray jsonArray = JSONArray.parseArray(jsonObject.getString("detail")); if (jsonObject != null && StringUtils.isNotBlank(jsonObject.getString("detail"))) {
if (jsonArray != null) { JSONArray jsonArray = JSONArray.parseArray(jsonObject.getString("detail"));
JSONObject jsonObject1 = jsonArray.getJSONObject(num - 1); if (jsonArray != null) {
if (jsonObject1 != null) { JSONObject jsonObject1 = jsonArray.getJSONObject(num - 1);
double amountString = jsonObject1.getDouble("amount"); if (jsonObject1 != null) {
amount = amount + amountString; double amountString = jsonObject1.getDouble("amount");
amount = amount + amountString;
}
} }
} }
} }
double a = amount; double a = amount;
//添加活动关系 //添加活动关系
relationBiz.insertSelective(new ActivityPopularizeRelation() {{ relationBiz.insertSelective(new ActivityPopularizeRelation() {{
...@@ -185,9 +188,8 @@ public class ActivityPopularizeBiz extends BaseBiz<ActivityPopularizeMapper, Act ...@@ -185,9 +188,8 @@ public class ActivityPopularizeBiz extends BaseBiz<ActivityPopularizeMapper, Act
//已完成,设置为活动结束 //已完成,设置为活动结束
activityPopularize.setStatus(1); activityPopularize.setStatus(1);
popularizeBiz.updateSelectiveByIdRe(activityPopularize); popularizeBiz.updateSelectiveByIdRe(activityPopularize);
return ;
} }
if ( userNumber >= 10 && limitNumber < activityPopularize.getNumLimit()) { if ( userNumber == 10 && limitNumber < activityPopularize.getNumLimit()) {
apLogDTO.setStatus(SYS_TRUE); apLogDTO.setStatus(SYS_TRUE);
popularizeLogBiz.updateSelectiveById(BeanUtil.toBean(apLogDTO, ActivityPopularizeLog.class)); popularizeLogBiz.updateSelectiveById(BeanUtil.toBean(apLogDTO, ActivityPopularizeLog.class));
activityPopularizeUser.setStatus(SYS_TRUE); activityPopularizeUser.setStatus(SYS_TRUE);
......
...@@ -31,6 +31,7 @@ public class CompanyPerformanceBo { ...@@ -31,6 +31,7 @@ public class CompanyPerformanceBo {
private BigDecimal travelAmount; private BigDecimal travelAmount;
private BigDecimal noDeductibleAmount; private BigDecimal noDeductibleAmount;
private BigDecimal depositAmount; private BigDecimal depositAmount;
private BigDecimal depositRefundAmount;
private Integer rentDays; private Integer rentDays;
private BigDecimal extralAmount; private BigDecimal extralAmount;
private Integer departureNum; private Integer departureNum;
...@@ -38,6 +39,9 @@ public class CompanyPerformanceBo { ...@@ -38,6 +39,9 @@ public class CompanyPerformanceBo {
private String startDate; private String startDate;
private String endDate; private String endDate;
private String dateStr; private String dateStr;
private BigDecimal lossSpecifiedAmount;
private BigDecimal lateFeeAmount;
public BigDecimal getMemberAmount() { public BigDecimal getMemberAmount() {
return memberAmount==null?BigDecimal.ZERO:memberAmount; return memberAmount==null?BigDecimal.ZERO:memberAmount;
......
...@@ -5,7 +5,9 @@ import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase; ...@@ -5,7 +5,9 @@ import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -127,6 +129,28 @@ public enum OrderMemberReceivedStatisticsSignEnum{ ...@@ -127,6 +129,28 @@ public enum OrderMemberReceivedStatisticsSignEnum{
resultMap.put(getSign(),orderReceivedStatisticsVos); resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap; return resultMap;
} }
},
MEMBER_AVG_AMOUNT("dh_mavga","会员订单金额arpu"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object,List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
AtomicReference<Integer> divisorAtomicReference = new AtomicReference<>();
orderMap.forEach((K,V)->{
List<OrderMemberReceivedStatistics> orderMemberReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer divisor = divisorAtomicReference.get();
if (Objects.isNull(divisor)){
divisor = orderMemberReceivedStatisticsList.get(0).getDivisor();
divisorAtomicReference.set(divisor);
}
BigDecimal avgAmount = orderMemberReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO,BigDecimal::add).divide(new BigDecimal(divisor),2, RoundingMode.HALF_UP);
OrderMemberReceivedStatistics orderMemberReceivedStatistics = orderMemberReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderMemberReceivedStatistics,avgAmount,null);
orderReceivedStatisticsVos.add(receivedStatisticsVo);
});
resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap;
}
}; };
private String sign; private String sign;
private String desc; private String desc;
......
...@@ -5,7 +5,9 @@ import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase; ...@@ -5,7 +5,9 @@ import com.xxfc.platform.order.entity.OrderReceivedStatisticsBase;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -63,6 +65,28 @@ public enum OrderReceivedStatisticsSignEnum { ...@@ -63,6 +65,28 @@ public enum OrderReceivedStatisticsSignEnum {
resultMap.put(getSign(),orderReceivedStatisticsVos); resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap; return resultMap;
} }
},
ORDER_AVG_AMOUNT("ad_oavga","订单金额arpu"){
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
AtomicReference<Integer> divisorAtomicReference = new AtomicReference<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{
List<OrderReceivedStatistics> orderReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer divisor = divisorAtomicReference.get();
if (Objects.isNull(divisor)){
divisor = orderReceivedStatisticsList.get(0).getDivisor();
divisorAtomicReference.set(divisor);
}
BigDecimal avgAmount = orderReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO,BigDecimal::add).divide(new BigDecimal(divisor),2, RoundingMode.HALF_UP);
OrderReceivedStatistics orderReceivedStatistics = orderReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,avgAmount,null);
orderReceivedStatisticsVos.add(receivedStatisticsVo);
});
resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap;
}
}; };
private String sign; private String sign;
private String desc; private String desc;
......
...@@ -5,6 +5,7 @@ import com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics; ...@@ -5,6 +5,7 @@ import com.xxfc.platform.order.entity.OrderRentVehicleReceivedStatistics;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
...@@ -70,7 +71,30 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{ ...@@ -70,7 +71,30 @@ public enum OrderRentVehicleReceivedStatisticsSignEnum{
resultMap.put(getSign(),orderReceivedStatisticsVos); resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap; return resultMap;
} }
}; },
RENT_VEHICLE_AVG_AMOUNT("bd_rvavga","租车金额arpu") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
AtomicReference<Integer> divisorAtomicReference = new AtomicReference<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K,V)->{
List<OrderRentVehicleReceivedStatistics> orderRentVehicleReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer divisor = divisorAtomicReference.get();
if (Objects.isNull(divisor)){
divisor = orderRentVehicleReceivedStatisticsList.get(0).getDivisor();
divisorAtomicReference.set(divisor);
}
BigDecimal avgAmount = orderRentVehicleReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO,BigDecimal::add).divide(new BigDecimal(divisor),2, RoundingMode.HALF_UP);
OrderRentVehicleReceivedStatistics orderReceivedStatistics = orderRentVehicleReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics,avgAmount,null);
orderReceivedStatisticsVos.add(receivedStatisticsVo);
});
resultMap.put(getSign(),orderReceivedStatisticsVos);
return resultMap;
}
};
private String sign; private String sign;
private String desc; private String desc;
private static Map<String,OrderRentVehicleReceivedStatisticsSignEnum> orderRentVehicleReceivedStatisticsSignEnumMap; private static Map<String,OrderRentVehicleReceivedStatisticsSignEnum> orderRentVehicleReceivedStatisticsSignEnumMap;
......
...@@ -5,6 +5,7 @@ import com.xxfc.platform.order.entity.OrderTourReceivedStatistics; ...@@ -5,6 +5,7 @@ import com.xxfc.platform.order.entity.OrderTourReceivedStatistics;
import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo; import com.xxfc.platform.order.pojo.vo.OrderReceivedStatisticsVo;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicReference; import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Function; import java.util.function.Function;
...@@ -70,6 +71,28 @@ public enum OrderTourReceivedStatisticsSignEnum { ...@@ -70,6 +71,28 @@ public enum OrderTourReceivedStatisticsSignEnum {
resultMap.put(getSign(), orderReceivedStatisticsVos); resultMap.put(getSign(), orderReceivedStatisticsVos);
return resultMap; return resultMap;
} }
},
TOUR_AVG_AMOUNT("ce_tavga", "旅游金额arpu") {
@Override
Map<String, List<OrderReceivedStatisticsVo>> wrapToMap(Map<Object, List<OrderReceivedStatisticsBase>> orderMap) {
Map<String, List<OrderReceivedStatisticsVo>> resultMap = new HashMap<>();
AtomicReference<Integer> divisorAtomicReference = new AtomicReference<>();
List<OrderReceivedStatisticsVo> orderReceivedStatisticsVos = new ArrayList<>();
orderMap.forEach((K, V) -> {
List<OrderTourReceivedStatistics> orderTourReceivedStatisticsList = ReceivedStatisticsEnum.convertToTargetBean(V);
Integer divisor = divisorAtomicReference.get();
if (Objects.isNull(divisor)){
divisor = orderTourReceivedStatisticsList.get(0).getDivisor();
divisorAtomicReference.set(divisor);
}
BigDecimal avgAmount = orderTourReceivedStatisticsList.stream().map(x -> x.getTotalAmount()).reduce(BigDecimal.ZERO, BigDecimal::add).divide(new BigDecimal(divisor),2, RoundingMode.HALF_UP);
OrderTourReceivedStatistics orderReceivedStatistics = orderTourReceivedStatisticsList.get(0);
OrderReceivedStatisticsVo receivedStatisticsVo = ReceivedStatisticsEnum.createOrderReceivedStatistics(orderReceivedStatistics, avgAmount, null);
orderReceivedStatisticsVos.add(receivedStatisticsVo);
});
resultMap.put(getSign(), orderReceivedStatisticsVos);
return resultMap;
}
}; };
private String sign; private String sign;
private String desc; private String desc;
......
...@@ -27,8 +27,6 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -27,8 +27,6 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -54,7 +52,6 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM ...@@ -54,7 +52,6 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM
private List<String> orderRentVehicleSigns; private List<String> orderRentVehicleSigns;
private List<String> orderTourSigns; private List<String> orderTourSigns;
private Map<String, String> signAndDescMap; private Map<String, String> signAndDescMap;
private DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
private final ThreadPoolTaskExecutor executor; private final ThreadPoolTaskExecutor executor;
...@@ -181,15 +178,15 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM ...@@ -181,15 +178,15 @@ public class OrderReceivedStatisticsBiz extends BaseBiz<OrderReceivedStatisticsM
firstCell.setCellValue(DateUtil.format(orderReceivedStatisticsVo.getDate(), "yyyy.MM.dd")); firstCell.setCellValue(DateUtil.format(orderReceivedStatisticsVo.getDate(), "yyyy.MM.dd"));
} }
if (ReceivedStatisticsEnum.WEEK.getWayCode() == statisticalWay) { if (ReceivedStatisticsEnum.WEEK.getWayCode() == statisticalWay) {
LocalDate localDate = LocalDate.of(Integer.valueOf(orderReceivedStatisticsVo.getYear()), Integer.valueOf(orderReceivedStatisticsVo.getMonth().replace(orderReceivedStatisticsVo.getYear(), "")), 1); Calendar cal = Calendar.getInstance();
int dayOfYear = localDate.getDayOfYear(); cal.setFirstDayOfWeek(Calendar.MONDAY);
int days = Integer.valueOf(orderReceivedStatisticsVo.getWeekOfYear().replace(orderReceivedStatisticsVo.getYear(), "")) * 7; cal.set(Calendar.YEAR, Integer.valueOf(orderReceivedStatisticsVo.getYear()));
int betweenDays = days - dayOfYear; cal.set(Calendar.WEEK_OF_YEAR, Integer.valueOf(orderReceivedStatisticsVo.getWeekOfYear().replace("" + orderReceivedStatisticsVo.getYear(), "")));
LocalDate endLocalDate = localDate.withDayOfMonth(betweenDays); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
LocalDate startLocalDate = endLocalDate.minusDays(6); Date startDate = cal.getTime();
String startDateStr = startLocalDate.format(dateTimeFormatter); cal.add(Calendar.DAY_OF_WEEK, 6);
String endDateStr = endLocalDate.format(dateTimeFormatter); Date endDate = cal.getTime();
firstCell.setCellValue(String.format("%s~%s", startDateStr, endDateStr)); firstCell.setCellValue(String.format("%s~%s", DateUtil.format(startDate,"yyyy-MM-dd"), DateUtil.format(endDate,"yyyy-MM-dd")));
} }
if (ReceivedStatisticsEnum.MONTH.getWayCode() == statisticalWay) { if (ReceivedStatisticsEnum.MONTH.getWayCode() == statisticalWay) {
StringBuilder sb = new StringBuilder(orderReceivedStatisticsVo.getMonth()); StringBuilder sb = new StringBuilder(orderReceivedStatisticsVo.getMonth());
......
...@@ -76,7 +76,6 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz, ...@@ -76,7 +76,6 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,
} }
@PostMapping("/export") @PostMapping("/export")
@ResponseBody
public void exportMemberOrders(@RequestBody MemberOrderFindDTO memberOrderFindDTO, HttpServletResponse response){ public void exportMemberOrders(@RequestBody MemberOrderFindDTO memberOrderFindDTO, HttpServletResponse response){
try { try {
String name = DateTimeFormatter.ofPattern("YYYYMMddHHmmss").format(LocalDateTime.now()); String name = DateTimeFormatter.ofPattern("YYYYMMddHHmmss").format(LocalDateTime.now());
......
package com.xxfc.platform.order.rest.background; package com.xxfc.platform.order.rest.background;
import cn.hutool.core.date.DateUtil;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.vo.PageDataVO; import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.biz.CompanyPerformanceBiz; import com.xxfc.platform.order.biz.CompanyPerformanceBiz;
import com.xxfc.platform.order.pojo.dto.CompanyPerformanceFindDTO;
import com.xxfc.platform.order.bo.CompanyPerformanceBo; import com.xxfc.platform.order.bo.CompanyPerformanceBo;
import com.xxfc.platform.order.pojo.dto.CompanyPerformanceFindDTO;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import com.github.wxiaoqi.security.common.exception.BaseException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Date;
/** /**
* @author libin * @author libin
...@@ -27,7 +27,7 @@ import java.time.format.DateTimeFormatter; ...@@ -27,7 +27,7 @@ import java.time.format.DateTimeFormatter;
* @data 2019/11/23 14:32 * @data 2019/11/23 14:32
*/ */
@Slf4j @Slf4j
@RestController @Controller
@RequestMapping("/statistics") @RequestMapping("/statistics")
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class CompanyOrderReceivedStatiscsAdminController { public class CompanyOrderReceivedStatiscsAdminController {
...@@ -35,7 +35,15 @@ public class CompanyOrderReceivedStatiscsAdminController { ...@@ -35,7 +35,15 @@ public class CompanyOrderReceivedStatiscsAdminController {
private final CompanyPerformanceBiz companyPerformanceBiz; private final CompanyPerformanceBiz companyPerformanceBiz;
@PostMapping("/company_performance") @PostMapping("/company_performance")
@ResponseBody
public ObjectRestResponse<PageDataVO<CompanyPerformanceBo>> companyPerformance(@RequestBody CompanyPerformanceFindDTO companyPerformanceFindDTO){ public ObjectRestResponse<PageDataVO<CompanyPerformanceBo>> companyPerformance(@RequestBody CompanyPerformanceFindDTO companyPerformanceFindDTO){
if(companyPerformanceFindDTO.getStartDate() == null && companyPerformanceFindDTO.getEndDate()==null){
Date date = new Date();
Date startDate = DateUtil.beginOfMonth(date).toJdkDate();
Date endDate = DateUtil.endOfMonth(date).toJdkDate();
companyPerformanceFindDTO.setStartDate(startDate);
companyPerformanceFindDTO.setEndDate(endDate);
}
PageDataVO<CompanyPerformanceBo> dataVO = companyPerformanceBiz.selectCompanyPerformancePage(companyPerformanceFindDTO); PageDataVO<CompanyPerformanceBo> dataVO = companyPerformanceBiz.selectCompanyPerformancePage(companyPerformanceFindDTO);
return ObjectRestResponse.succ(dataVO); return ObjectRestResponse.succ(dataVO);
} }
......
package com.xxfc.platform.order.rest.background; package com.xxfc.platform.order.rest.background;
import cn.hutool.core.date.DateUtil;
import com.github.wxiaoqi.security.admin.feign.dto.UserDTO; import com.github.wxiaoqi.security.admin.feign.dto.UserDTO;
import com.github.wxiaoqi.security.common.annotation.BeanValid; import com.github.wxiaoqi.security.common.annotation.BeanValid;
import com.github.wxiaoqi.security.common.annotation.SimpleValid; import com.github.wxiaoqi.security.common.annotation.SimpleValid;
...@@ -13,16 +14,16 @@ import io.swagger.annotations.ApiOperation; ...@@ -13,16 +14,16 @@ import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -34,7 +35,7 @@ import java.util.Map; ...@@ -34,7 +35,7 @@ import java.util.Map;
*/ */
@Slf4j @Slf4j
@Api(tags = "订单统计") @Api(tags = "订单统计")
@RestController @Controller
@RequestMapping("admin/order/received_statistics") @RequestMapping("admin/order/received_statistics")
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class OrderReceivedStatisticsAdminController { public class OrderReceivedStatisticsAdminController {
...@@ -42,14 +43,22 @@ public class OrderReceivedStatisticsAdminController { ...@@ -42,14 +43,22 @@ public class OrderReceivedStatisticsAdminController {
@ApiOperation("订单统计") @ApiOperation("订单统计")
@PostMapping("") @PostMapping("")
@ResponseBody
public ObjectRestResponse<Map<String, List<OrderReceivedStatisticsVo>>> orderReceivedStatistics(@RequestBody @SimpleValid OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO, UserDTO userDTO){ public ObjectRestResponse<Map<String, List<OrderReceivedStatisticsVo>>> orderReceivedStatistics(@RequestBody @SimpleValid OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO, UserDTO userDTO){
orderReceivedStatisticsFindDTO.setCompanyId(Arrays.asList(userDTO.getCompanyId())); orderReceivedStatisticsFindDTO.setCompanyId(Arrays.asList(userDTO.getCompanyId()));
if (orderReceivedStatisticsFindDTO.getStartDate()==null && orderReceivedStatisticsFindDTO.getEndDate()==null){
Date date = new Date();
Date startDate = DateUtil.beginOfMonth(date).toJdkDate();
Date endDate = DateUtil.endOfMonth(date).toJdkDate();
orderReceivedStatisticsFindDTO.setStartDate(startDate);
orderReceivedStatisticsFindDTO.setEndDate(endDate);
}
Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsPageVo = orderReceivedStatisticsBiz.getOrderReceivedStatisticsResult(orderReceivedStatisticsFindDTO); Map<String, List<OrderReceivedStatisticsVo>> orderReceivedStatisticsPageVo = orderReceivedStatisticsBiz.getOrderReceivedStatisticsResult(orderReceivedStatisticsFindDTO);
return ObjectRestResponse.succ(orderReceivedStatisticsPageVo); return ObjectRestResponse.succ(orderReceivedStatisticsPageVo);
} }
@ApiOperation("订单统计excel导出下载") @ApiOperation("订单统计excel导出下载")
@PostMapping(value = "/export", produces = "application/vnd.ms-excel;charset=utf-8") @PostMapping(value = "/export",produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public ObjectRestResponse<Void> exportOrderReceivedStatistics(@RequestBody @BeanValid OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO,UserDTO userDTO, HttpServletResponse response){ public ObjectRestResponse<Void> exportOrderReceivedStatistics(@RequestBody @BeanValid OrderReceivedStatisticsFindDTO orderReceivedStatisticsFindDTO,UserDTO userDTO, HttpServletResponse response){
try { try {
orderReceivedStatisticsFindDTO.setCompanyId(Arrays.asList(userDTO.getCompanyId())); orderReceivedStatisticsFindDTO.setCompanyId(Arrays.asList(userDTO.getCompanyId()));
......
...@@ -8,6 +8,7 @@ import com.xxfc.platform.order.pojo.bo.StaffStatisticsTotalBo; ...@@ -8,6 +8,7 @@ import com.xxfc.platform.order.pojo.bo.StaffStatisticsTotalBo;
import com.xxfc.platform.order.pojo.vo.StaffStatisticsVo; import com.xxfc.platform.order.pojo.vo.StaffStatisticsVo;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
/** /**
...@@ -16,7 +17,7 @@ import org.springframework.web.bind.annotation.*; ...@@ -16,7 +17,7 @@ import org.springframework.web.bind.annotation.*;
* @description * @description
* @data 2019/11/25 12:39 * @data 2019/11/25 12:39
*/ */
@RestController @Controller
@RequestMapping("/admin/staff_statistics") @RequestMapping("/admin/staff_statistics")
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class StaffStatisticsAdminController { public class StaffStatisticsAdminController {
...@@ -24,6 +25,7 @@ public class StaffStatisticsAdminController { ...@@ -24,6 +25,7 @@ public class StaffStatisticsAdminController {
private final StaffStatisticsBiz staffStatisticsBiz; private final StaffStatisticsBiz staffStatisticsBiz;
@PostMapping("/total_statistics") @PostMapping("/total_statistics")
@ResponseBody
public ObjectRestResponse<StaffStatisticsTotalBo> staffStatisticsWithTotal(@RequestBody StaffStatisticsFindDTO staffStatisticsFindDTO) { public ObjectRestResponse<StaffStatisticsTotalBo> staffStatisticsWithTotal(@RequestBody StaffStatisticsFindDTO staffStatisticsFindDTO) {
StaffStatisticsTotalBo staffStatisticsTotalVo = staffStatisticsBiz.staffStatisticsWithTotal(staffStatisticsFindDTO); StaffStatisticsTotalBo staffStatisticsTotalVo = staffStatisticsBiz.staffStatisticsWithTotal(staffStatisticsFindDTO);
return ObjectRestResponse.succ(staffStatisticsTotalVo); return ObjectRestResponse.succ(staffStatisticsTotalVo);
......
...@@ -135,7 +135,10 @@ ...@@ -135,7 +135,10 @@
SUM(`travel_amount`-`travel_refund_amount` ) AS `travelAmount`, SUM(`travel_amount`-`travel_refund_amount` ) AS `travelAmount`,
SUM(`rent_vehicle_amount`-`rent_vehicle_refund_amount`) AS `rentVehilceAmount`, SUM(`rent_vehicle_amount`-`rent_vehicle_refund_amount`) AS `rentVehilceAmount`,
SUM(`no_deductible_amount` - `no_deductible_refund_amount`) as `noDeductibleAmount`, SUM(`no_deductible_amount` - `no_deductible_refund_amount`) as `noDeductibleAmount`,
SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount` SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount`,
SUM(`deposit_refund_amount`) as `depositRefundAmount`,
SUM(`loss_specified_amount`) as `lossSpecifiedAmount`,
SUM(`late_fee_amount`) as `lateFeeAmount`
FROM FROM
`order_received_statistics` WHERE `has_pay`=1 `order_received_statistics` WHERE `has_pay`=1
<if test="companyName!=null and companyName!=''"> <if test="companyName!=null and companyName!=''">
...@@ -163,6 +166,7 @@ ...@@ -163,6 +166,7 @@
`company_id` , `company_id` ,
`year`, `year`,
`date` `date`
order by `company_id`,`date` desc
<if test="page!=null and limit!=null"> <if test="page!=null and limit!=null">
limit #{startIndex},#{endInex} limit #{startIndex},#{endInex}
</if> </if>
...@@ -220,7 +224,10 @@ ...@@ -220,7 +224,10 @@
SUM(`travel_amount`-`travel_refund_amount` ) AS `travelAmount`, SUM(`travel_amount`-`travel_refund_amount` ) AS `travelAmount`,
SUM(`rent_vehicle_amount`-`rent_vehicle_refund_amount`) AS `rentVehilceAmount`, SUM(`rent_vehicle_amount`-`rent_vehicle_refund_amount`) AS `rentVehilceAmount`,
SUM(`no_deductible_amount` - `no_deductible_refund_amount`) as `noDeductibleAmount`, SUM(`no_deductible_amount` - `no_deductible_refund_amount`) as `noDeductibleAmount`,
SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount` SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount`,
SUM(`deposit_refund_amount`) as `depositRefundAmount`,
SUM(`loss_specified_amount`) as `lossSpecifiedAmount`,
SUM(`late_fee_amount`) as `lateFeeAmount`
FROM FROM
`order_received_statistics` WHERE `has_pay`=1 `order_received_statistics` WHERE `has_pay`=1
<if test="companyName!=null and companyName!=''"> <if test="companyName!=null and companyName!=''">
...@@ -248,6 +255,7 @@ ...@@ -248,6 +255,7 @@
company_id, company_id,
`year`, `year`,
`month` `month`
order by `company_id`, `month` desc
<if test="page!=null and limit!=null"> <if test="page!=null and limit!=null">
limit #{startIndex},#{endInex} limit #{startIndex},#{endInex}
</if> </if>
...@@ -304,7 +312,10 @@ ...@@ -304,7 +312,10 @@
SUM(`travel_amount`-`travel_refund_amount` ) AS `travelAmount`, SUM(`travel_amount`-`travel_refund_amount` ) AS `travelAmount`,
SUM(`rent_vehicle_amount`-`rent_vehicle_refund_amount`) AS `rentVehilceAmount`, SUM(`rent_vehicle_amount`-`rent_vehicle_refund_amount`) AS `rentVehilceAmount`,
SUM(`no_deductible_amount` - `no_deductible_refund_amount`) as `noDeductibleAmount`, SUM(`no_deductible_amount` - `no_deductible_refund_amount`) as `noDeductibleAmount`,
SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount` SUM(`deposit_amount` - `deposit_refund_amount`) as `depositAmount`,
SUM(`deposit_refund_amount`) as `depositRefundAmount`,
SUM(`loss_specified_amount`) as `lossSpecifiedAmount`,
SUM(`late_fee_amount`) as `lateFeeAmount`
FROM FROM
`order_received_statistics` WHERE `has_pay`=1 `order_received_statistics` WHERE `has_pay`=1
<if test="companyName!=null and companyName!=''"> <if test="companyName!=null and companyName!=''">
...@@ -332,6 +343,7 @@ ...@@ -332,6 +343,7 @@
company_id, company_id,
`year`, `year`,
`week_of_year` `week_of_year`
order by `company_id`,`week_of_year` desc
<if test="page!=null and limit!=null"> <if test="page!=null and limit!=null">
limit #{startIndex},#{endInex} limit #{startIndex},#{endInex}
</if> </if>
......
...@@ -127,13 +127,13 @@ public class ServiceTest { ...@@ -127,13 +127,13 @@ public class ServiceTest {
public void testOrderReceivedStatisticsJobHandler(){ public void testOrderReceivedStatisticsJobHandler(){
cn.hutool.core.date.DateTime dateTime = DateUtil.parse("2019-11-29", "yyyy-MM-dd"); cn.hutool.core.date.DateTime dateTime = DateUtil.parse("2019-11-29", "yyyy-MM-dd");
// cn.hutool.core.date.DateTime offset = DateUtil.offset(dateTime, DateField.DAY_OF_MONTH, 1); // cn.hutool.core.date.DateTime offset = DateUtil.offset(dateTime, DateField.DAY_OF_MONTH, 1);
orderReceivedStatisticsJobHandler.execute("2019-11-15"); // orderReceivedStatisticsJobHandler.execute("2019-11-15");
/* LocalDate startLocalDate = LocalDate.of(2019, 10, 01); LocalDate startLocalDate = LocalDate.of(2019, 10, 01);
LocalDate endLocalDate = LocalDate.of(2019,12,19); LocalDate endLocalDate = LocalDate.of(2019,12,20);
while (startLocalDate.isBefore(endLocalDate)){ while (startLocalDate.isBefore(endLocalDate)){
String dateStr = startLocalDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); String dateStr = startLocalDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
startLocalDate = startLocalDate.plusDays(1); startLocalDate = startLocalDate.plusDays(1);
orderReceivedStatisticsJobHandler.execute(dateStr); orderReceivedStatisticsJobHandler.execute(dateStr);
}*/ }
} }
} }
...@@ -29,7 +29,6 @@ public class ClickWordCaptcha extends AbstractCaptcha { ...@@ -29,7 +29,6 @@ public class ClickWordCaptcha extends AbstractCaptcha {
private static int HAN_ZI_SIZE_HALF = 60; private static int HAN_ZI_SIZE_HALF = 60;
@Override @Override
public ClickWordCaptchaVO create(CaptchaBaseParam captchaParam) { public ClickWordCaptchaVO create(CaptchaBaseParam captchaParam) {
if (captchaParam == null if (captchaParam == null
...@@ -88,10 +87,10 @@ public class ClickWordCaptcha extends AbstractCaptcha { ...@@ -88,10 +87,10 @@ public class ClickWordCaptcha extends AbstractCaptcha {
} while (!currentWords.contains(word)); } while (!currentWords.contains(word));
//随机字体坐标 //随机字体坐标
Point point = randomWordPoint(width, height, i, wordCount); Point point = randomWordPoint(900, 478, i, wordCount);
//随机字体颜色 //随机字体颜色
if (isFontColorRandom()){ if (true){
backgroundGraphics.setColor(new Color(RandomUtils.getRandomInt(1,255),RandomUtils.getRandomInt(1,255),RandomUtils.getRandomInt(1,255))); backgroundGraphics.setColor(new Color(RandomUtils.getRandomInt(1,255),RandomUtils.getRandomInt(1,255),RandomUtils.getRandomInt(1,255)));
} else { } else {
backgroundGraphics.setColor(Color.BLACK); backgroundGraphics.setColor(Color.BLACK);
......
...@@ -104,9 +104,9 @@ public class VehicleActiveService { ...@@ -104,9 +104,9 @@ public class VehicleActiveService {
vehicleBookRecord = vehicleBookRecordBiz.selectById(departureVo.getBookRecordId()); vehicleBookRecord = vehicleBookRecordBiz.selectById(departureVo.getBookRecordId());
updateBookRecordStatus(vehicleBookRecord, 1); updateBookRecordStatus(vehicleBookRecord, 1);
} }
if (vehicleBookRecord != null) { // if (vehicleBookRecord != null) {
vehicle.setParkBranchCompanyId(vehicleBookRecord.getRetCompany()); // vehicle.setParkBranchCompanyId(vehicleBookRecord.getRetCompany());
} // }
vehicleMapper.updateByPrimaryKeySelective(vehicle); vehicleMapper.updateByPrimaryKeySelective(vehicle);
VehicleDepartureLogVo vehicleDepartureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(departureVo.getBookRecordId()); VehicleDepartureLogVo vehicleDepartureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(departureVo.getBookRecordId());
if (vehicleDepartureLogVo != null) { if (vehicleDepartureLogVo != null) {
......
...@@ -351,7 +351,7 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use ...@@ -351,7 +351,7 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use
oldValue.setRetCompany(vehicleBookRecord.getRetCompany()); oldValue.setRetCompany(vehicleBookRecord.getRetCompany());
BookRecordUpdateLog bookRecordUpdateLog = new BookRecordUpdateLog(); BookRecordUpdateLog bookRecordUpdateLog = new BookRecordUpdateLog();
bookRecordUpdateLog.setBookRecordId(vehicleBookRecord.getId()); bookRecordUpdateLog.setBookRecordId(vehicleBookRecord.getId());
bookRecordUpdateLog.setOldRetCompanyId(vehicleBookRecord.getRetCompany()); bookRecordUpdateLog.setOldRetCompanyId(oldValue.getRetCompany());
bookRecordUpdateLog.setNewRetCompanyId(vehicleBookRecord.getRetCompany()); bookRecordUpdateLog.setNewRetCompanyId(vehicleBookRecord.getRetCompany());
bookRecordUpdateLog.setOperaterId(userDTO.getId()); bookRecordUpdateLog.setOperaterId(userDTO.getId());
bookRecordUpdateLog.setOperaterName(userDTO.getName()); bookRecordUpdateLog.setOperaterName(userDTO.getName());
......
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