Commit ade38432 authored by jiaorz's avatar jiaorz

Merge branch 'master-change-arrival-company' into dev

# Conflicts:
#	ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserSellingWaterBiz.java
#	ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rest/AppUserController.java
#	xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/inner/OrderCancelBiz.java
#	xx-vehicle/xx-vehicle-server/src/main/resources/mapper/VehicleMapper.xml
parents a96897d9 7b070d13
......@@ -60,6 +60,11 @@ public class AppUserManageDTO {
*/
private Set<Integer> citySet;
/**
* 用户id
*/
private Integer userId;
// /**
// * 接收前台时间范围
// */
......
......@@ -63,6 +63,9 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
@Autowired
private AppUserRelationBiz appUserRelationBiz;
@Autowired
private AppUserSellingWaterBiz appUserSellingWaterBiz;
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
@Override
public void insertSelective(AppUserLogin entity) {
......@@ -417,11 +420,10 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
leaderId = appUserLogins.get(0).getId();
//2.根据leader userId查询下级 userid
if (Objects.nonNull(leaderId)) {
List<AppUserRelation> appUserRelationList = appUserRelationBiz.findMemberPageByLeaderId(leaderId);
if(CollectionUtils.isEmpty(appUserRelationList)){
memberIds = appUserSellingWaterBiz.findMemberIdByLeaderIdAndOrdreType(leaderId,3);
if(CollectionUtils.isEmpty(memberIds)){
return Collections.EMPTY_LIST;
}
memberIds = appUserRelationList.stream().map(AppUserRelation::getUserId).collect(Collectors.toList());
}
}
List<Integer> userIds = mapper.findAppUser(phone, name, memberIds);
......
......@@ -184,4 +184,14 @@ public class AppUserManageBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
}
}
public AppUserManageVo findUserInfoById(Integer userId) {
AppUserManageVo appUserManageVo = new AppUserManageVo();
AppUserManageDTO appUserManageDTO = new AppUserManageDTO();
appUserManageDTO.setUserId(userId);
List<AppUserManageVo> appUserManageVos = mapper.selectAppUserManage(appUserManageDTO);
if (CollectionUtils.isEmpty(appUserManageVos)){
return appUserManageVo;
}
return appUserManageVos.get(0);
}
}
......@@ -19,7 +19,6 @@ import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.msg.TableResultResponse;
import com.github.wxiaoqi.security.common.rest.CommonBaseController;
import com.github.wxiaoqi.security.common.util.Query;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.feign.OrderFeign;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
......@@ -75,9 +74,6 @@ public class AppUserController extends CommonBaseController{
@Autowired
private AppUserAlipayBiz appUserAlipayBiz;
@Autowired
private AppUserRelationBiz relationBiz;
@GetMapping("page")
......@@ -149,7 +145,7 @@ public class AppUserController extends CommonBaseController{
throw new Exception();
}
Integer id= userVo.getId();
Integer positionId=userVo.getPositionId();
Integer positionId=userVo.getPositionId();
BeanUtils.copyProperties(userDTO,userVo);
if(userVo.getIsMember()!=null&&userVo.getIsMember()>0){
//获取用户会员信息
......@@ -163,6 +159,7 @@ public class AppUserController extends CommonBaseController{
String icon=memberLevel.getIcon();
userDTO.setIcon(icon);
userDTO.setBigIcon(memberLevel.getBigIcon());
userDTO.setItemImg(memberLevel.getItemImg());
}
}
}
......@@ -170,20 +167,7 @@ public class AppUserController extends CommonBaseController{
if (userPosition!=null&&userPosition.getLevel()>0){
userDTO.setPositionName(userPosition.getName());
}
AppUserRelation relation=relationBiz.getRelationByIdUserIdAndTime(userid);
Integer parentId=0;
if (relation!=null){
parentId=relation.getParentId();
}
userDTO.setParentId(parentId);
List<AppUserAlipay> appUserAlipays = appUserAlipayBiz.getByUserId(request);
long count = appUserAlipays.stream().filter(appUserAlipay -> appUserAlipay.getType() == 1).count();
userDTO.setIsBindAliPay(count>0);
userDTO.setId(id);
userDTO.setAliPayNickName(userDTO.getIsBindAliPay()?appUserAlipays.get(0).getNickname():"");
AppUserLogin appUserLogin = appUserLoginBiz.selectById(userid);
userDTO.setIsBindWx(StringUtils.isNotEmpty(appUserLogin.getWxOpenid()));
userDTO.setIsBindQQ(StringUtils.isNotEmpty(appUserLogin.getOpenid()));
return ObjectRestResponse.succ(userDTO);
}
......@@ -233,7 +217,7 @@ public class AppUserController extends CommonBaseController{
appUserLogin.setOpenid(userVo.getOpenid());
appUserLogin.setId(userid);
appUserLogin.setUsername(userVo.getUsername());
appUserLoginBiz.bindOpenid(appUserLogin);
appUserLoginBiz.updateAppuserLogin(appUserLogin);
//支付宝绑定
if (StringUtils.isNotEmpty(userVo.getAliCode()) && userVo.getAliCode().trim().length()>0){
appUserAlipayBiz.getUserInfo(userVo.getAliCode(),request);
......@@ -316,7 +300,7 @@ public class AppUserController extends CommonBaseController{
}
@GetMapping("/findusersByIds")
public Map<Integer,AppUserLogin> findAppUsersByUserIds(@RequestParam(value = "userIds") List<Integer> userIds){
return appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(userIds);
return appUserLoginBiz.findUserIdAndUserLoginMapByMemberIds(userIds);
}
@GetMapping("/finduserIdsByphones")
......@@ -328,8 +312,8 @@ public class AppUserController extends CommonBaseController{
@IgnoreUserToken
@IgnoreClientToken
public ObjectRestResponse<AppUserInfoVo> findUserInfoByCode(@PathVariable("code") String code){
AppUserInfoVo appUserInfoVo = userDetailBiz.findUserInfoByCode(code);
return ObjectRestResponse.succ(appUserInfoVo);
AppUserInfoVo appUserInfoVo = userDetailBiz.findUserInfoByCode(code);
return ObjectRestResponse.succ(appUserInfoVo);
}
@GetMapping("/app/unauth/getUserIdByUsername")
......@@ -347,8 +331,6 @@ public class AppUserController extends CommonBaseController{
return appUserLoginBiz.test();
}
@PostMapping("/bind")
private ObjectRestResponse accountBinding(@RequestBody AccountBindDTO accountBindDTO, HttpServletRequest request){
try {
......
......@@ -19,7 +19,6 @@ import com.xxfc.platform.vehicle.feign.VehicleFeign;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Set;
/**
......@@ -66,6 +65,12 @@ public class AppUsersManageController extends BaseController<AppUserManageBiz,Ap
appUserManageDTO.setCitySet(cityList);
return ObjectRestResponse.succ(baseBiz.findAllByQueryAndCity(appUserManageDTO));
}
@GetMapping("/user_info/{id}")
public ObjectRestResponse<AppUserManageVo> findUserInfo(@PathVariable(value = "id") Integer userId){
AppUserManageVo appUserManageVo = baseBiz.findUserInfoById(userId);
return ObjectRestResponse.succ(appUserManageVo);
}
/**
* 查询一条
* @param id
......
......@@ -165,6 +165,9 @@
<if test="source !=null ">
and d.source = #{source}
</if>
<if test="userId!=null">
and l.id=#{userId}
</if>
<if test="citySet != null ">
and d.city_code in
<foreach collection="citySet" item="item" index="index" open="(" separator="," close=")" >
......
......@@ -156,6 +156,9 @@ public class OrderAccountBiz extends BaseBiz<OrderAccountMapper,OrderAccount> {
if(null != orderViolateCoverAmount) {
depositDeductAmount = orderViolateCoverAmount;
}
if (null != depositViolateCoverAmount) {
depositDeductAmount = depositViolateCoverAmount;
}
if(topAmount.compareTo(depositDeductAmount) > 0) {
totalDeductAmount = totalDeductAmount.add(depositDeductAmount);
topAmount = topAmount.subtract(depositDeductAmount);
......
......@@ -3,7 +3,6 @@ package com.xxfc.platform.order.biz.inner;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
......@@ -17,7 +16,6 @@ import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.order.pojo.calculate.InProgressVO;
import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import com.xxfc.platform.order.pojo.order.VehicleItemDTO;
import com.xxfc.platform.order.pojo.price.CancelNoStartVO;
import com.xxfc.platform.order.pojo.price.CancelStartedVO;
import com.xxfc.platform.order.pojo.price.CostDetailExtend;
......@@ -32,7 +30,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
......@@ -139,10 +136,10 @@ public class OrderCancelBiz {
setOrderId(baseOrder.getId());
}});
VehicleItemDTO vehicleItemDTO = BeanUtil.toBean(orderItemBiz.selectOne(new OrderItem(){{
OrderItem orderItem = orderItemBiz.selectOne(new OrderItem(){{
setType(ItemTypeEnum.VEHICLE_MODEL.getCode());
setOrderId(baseOrder.getId());
}}), VehicleItemDTO.class);
}});
//如果超过出发时间,不能取消订单
//根据时间处理goodsAmount
......@@ -150,7 +147,7 @@ public class OrderCancelBiz {
Long timeLag = orvd.getStartTime() - System.currentTimeMillis();
if(timeLag < 0 ) {
Integer useDays = orderCalculateBiz.getIncludeDays(orvd.getStartTime(), System.currentTimeMillis());
inProgressVO = orderCalculateBiz.calculateOrderComplete(baseOrder, orvd, oad, vehicleItemDTO, useDays, Boolean.TRUE);
inProgressVO = orderCalculateBiz.calculateOrderComplete(baseOrder, orvd, oad, orderItem, useDays, Boolean.TRUE);
//判断是否修改违约金
if(null != changeViolateAmount) {
......@@ -166,7 +163,7 @@ public class OrderCancelBiz {
CancelStartedVO csv = new CancelStartedVO();
csv.setType(CostDetailExtend.CANCEL_STARTED);
csv.setConsumeAmount(inProgressVO.getConsumeAmount());
csv.setModelAmount(vehicleItemDTO.getUnitPrice());
csv.setModelAmount(orderItem.getUnitPrice());
csv.setUsedAmount(inProgressVO.getUsedAmount());
csv.setUsedDayNum(inProgressVO.getUsedDays());
csv.setUsedfreeDayNum(inProgressVO.getUsedfreeDays());
......@@ -174,7 +171,6 @@ public class OrderCancelBiz {
csv.setHadConpon((StrUtil.isNotBlank(baseOrder.getCouponTickerNos())? Boolean.TRUE: Boolean.FALSE));
csv.setViolateAmount(BigDecimal.ZERO);
csv.setViolateDesc("");
csv.setUseAmountList(inProgressVO.getUseAmountList());
//如果有扣款项,则生成额外的费用明细
if(oad.getDeductions().size() > 0) {
......@@ -195,11 +191,18 @@ public class OrderCancelBiz {
orvd.handelCostDetailExtend(csv);
orderRentVehicleBiz.updateSelectiveByIdRe(orvd);
}else {
// //没到出车时间
// //没到出车时间
// //判断是否使用免费天数,并且进行扣款
//违约金封顶 租车身份价 * 2天
BigDecimal topAmount = orderItem.getUnitPrice().multiply(new BigDecimal(2+ ""));
//判断是否修改违约金
if(null != changeViolateAmount) {
oad.changeCancelViolate(changeViolateAmount);
}
//退款流程
//违约金封顶 租车身份价 * 2天
orderAccountBiz.rentRefundProcessCancel(baseOrder, BigDecimal.ZERO, timeLag, APP_ORDER+ "_"+ RENT_REFUND, orvd.getDeposit(), vehicleItemDTO.getBuyAmount(), oad, vehicleItemDTO.getTopAmount(0), null, changeViolateAmount);
orderAccountBiz.rentRefundProcessCancel(baseOrder, BigDecimal.ZERO, timeLag, APP_ORDER+ "_"+ RENT_REFUND, orvd.getDeposit(), orderItem.getBuyAmount(), oad, topAmount, null, changeViolateAmount);
//设置订单数据
//baseOrder.setDamagesAmount(csv.getDamagesAmount());
......
......@@ -12,7 +12,7 @@ import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/**
/**;
*
*
* @author zjw
......
......@@ -3,7 +3,9 @@ package com.xxfc.platform.order.rest;
import cn.hutool.core.bean.BeanUtil;
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;
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.rest.BaseController;
import com.xxfc.platform.order.biz.OrderMemberDetailBiz;
......@@ -20,7 +22,12 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Base64;
@Controller
@RequestMapping("orderMember")
......@@ -69,6 +76,16 @@ public class OrderMemberController extends BaseController<OrderMemberDetailBiz,
@PostMapping("/export")
@ResponseBody
public void exportMemberOrders(@RequestBody MemberOrderFindDTO memberOrderFindDTO, HttpServletResponse response){
// orderMemberService.exportMemberOrderData(memberOrderFindDTO);
try {
String name = DateTimeFormatter.ofPattern("YYYYMMddHHmmss").format(LocalDateTime.now());
response.setContentType("application/vnd.ms-excel;charset=utf-8");
String filename = String.format("%s-MemberOrder.xlsx",name);
response.setHeader("Content-Disposition","attachment;filename="+ new String(filename.getBytes(), "iso8859-1"));
ServletOutputStream outputStream = response.getOutputStream();
orderMemberService.exportMemberOrderData(memberOrderFindDTO, name, outputStream);
response.setCharacterEncoding("UTF-8");
}catch (Exception ex){
throw new BaseException("导出数据失败");
}
}
}
\ No newline at end of file
......@@ -169,7 +169,7 @@ public class OrderRefundController extends BaseController<OrderRefundBiz,OrderRe
@ResponseBody
@IgnoreClientToken
public ObjectRestResponse<BigDecimal> getViolatePrice(@PathVariable(value = "no") String no) {
checkAppUser();
checkAdminUser();
OrderPageVO orderPageVO = baseOrderBiz.pageByParm(new Query(new PageParam(){{
setLimit(1);
setPage(1);
......
package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.github.wxiaoqi.security.admin.bo.UserBo;
import com.github.wxiaoqi.security.admin.entity.BaseUserMemberLevel;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.rest.UserRestInterface;
import com.github.wxiaoqi.security.auth.client.config.UserAuthConfig;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.excel.ExcelExport;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.activity.feign.ActivityFeign;
......@@ -20,7 +17,6 @@ import com.xxfc.platform.order.biz.OrderTemplateBiz;
import com.xxfc.platform.order.contant.enumerate.ItemTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderItem;
import com.xxfc.platform.order.pojo.dto.MemberOrderBo;
import com.xxfc.platform.order.pojo.dto.MemberOrderFindDTO;
......@@ -37,19 +33,20 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletRequest;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.text.SimpleDateFormat;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
......@@ -96,6 +93,10 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
@Autowired
public HttpServletRequest request;
private SimpleDateFormat simleFormatter = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss");
private DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYYMMddHHmmss");
@PostConstruct
public void init() {
this.orderTypeEnum = OrderTypeEnum.MEMBER;
......@@ -197,56 +198,95 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
* 导出数据
* @param memberOrderFindDTO
*/
public void exportMemberOrderData(MemberOrderFindDTO memberOrderFindDTO) throws Exception{
public void exportMemberOrderData(MemberOrderFindDTO memberOrderFindDTO,String name,OutputStream outputStream) throws Exception{
MemberOrderPageVo memberOrderPageVo = listMemberOrderPage(memberOrderFindDTO);
List<MemberOrderBo> memberOrderBoList = memberOrderPageVo.getMemberOrderPage().getData();
MemberOrderStatisticsBo memberOrderStatisticsBo = memberOrderPageVo.getMemberOrderStatisticsBo();
FileOutputStream fileOutputStream = new FileOutputStream("ts.xlsx");
ExcelExport excelExport = new ExcelExport();
Workbook workbook = excelExport.getWorkbook();
Sheet sheet = workbook.createSheet();
CellStyle cellStyleHeader01 = workbook.createCellStyle();
cellStyleHeader01.setAlignment(HorizontalAlignment.CENTER);
sheet.autoSizeColumn(9);
XSSFWorkbook hssfWorkbook = new XSSFWorkbook();
XSSFSheet sheet = hssfWorkbook.createSheet(name+"会员订单列表");
CellStyle headerCellStyle = createHeaderCellStyle(hssfWorkbook);
CellStyle generalCellStyle = createGeneralCellStyle(hssfWorkbook);
Row row1 = sheet.createRow(0);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("YYYYMMddHHmmss");
createHeader(row1,0,new String[]{dateTimeFormatter.format(LocalDateTime.now())+"会员订单列表"},cellStyleHeader01);
createHeader(row1,0,new String[]{name+"会员订单列表"},headerCellStyle);
CellRangeAddress cellRangeAddress = new CellRangeAddress(0,0,0,11);
sheet.addMergedRegion(cellRangeAddress);
Row row2 = sheet.createRow(1);
Cell row2_cell1 = row2.createCell(0);
row2_cell1.setCellValue("统计");
row2_cell1.setCellStyle(cellStyleHeader01);
row2_cell1.setCellStyle(headerCellStyle);
CellRangeAddress cellRangeAddress2 = new CellRangeAddress(1,2,0,0);
sheet.addMergedRegion(cellRangeAddress2);
String[] header2 = new String[]{"会员订单总数(单)","会员订单总额(元)","钻石会员订单(单)","钻石会员订单总额(元)","黄金会员订单(单)","黄金会员订单总额(元)","普通会员订单(单)","普通会员订单总额(元)"};
createHeader(row2,1,header2,cellStyleHeader01);
createHeader(row2,1,header2,headerCellStyle);
String[] countData = getData(memberOrderStatisticsBo);
Row row4 = sheet.createRow(2);
createCellCount(row4,1,countData,cellStyleHeader01);
createCellCount(row4,1,countData,generalCellStyle);
Row row5 = sheet.createRow(4);
String[] header3 = new String[]{"订单号","创建时间","订单状态","名称","用户姓名","手机号","上级姓名/手机号","促成人姓名/手机号","订单价格(元)","优惠金额(元)","实付金额(元)","支付时间"};
CellRangeAddress cellRangeAddress3 = new CellRangeAddress(3,3,0,header3.length);
sheet.addMergedRegion(cellRangeAddress3);
createHeader(row5,0,header3,cellStyleHeader01);
createHeader(row5,0,header3,headerCellStyle);
workbook.write(fileOutputStream);
fileOutputStream.close();
workbook.close();
for(int i=0;i<header3.length;i++){
sheet.setColumnWidth(i,24*256);
}
List<String[]> orderDataList = getMemberOrderDataList(memberOrderBoList, 12);
createMemberOrderCellData(sheet,5,generalCellStyle,orderDataList);
hssfWorkbook.write(outputStream);
hssfWorkbook.close();
}
private List<String[]> getMemberOrderDataList(List<MemberOrderBo> memberOrderBoList,Integer size){
List<String[]> memerOrderData = new ArrayList<>();
String[] data = null;
String[] data;
for (MemberOrderBo memberOrderBo : memberOrderBoList) {
data = new String[size];
data[0]=memberOrderBo.getOrderNo();
data[1]=simleFormatter.format(memberOrderBo.getCreatTime());
data[2]=memberOrderBo.getStatus()==2?"取消":memberOrderBo.getStatus()==3?"待支付":memberOrderBo.getStatus()==6?"已完成":"";
data[3]=memberOrderBo.getName();
data[4]=memberOrderBo.getUserName();
data[5]=memberOrderBo.getPhone()==null?"":memberOrderBo.getPhone();
data[6]=String.format("%s/%s",memberOrderBo.getLeaderName()==null?"":memberOrderBo.getLeaderName(),memberOrderBo.getLeaderPhone()==null?"":memberOrderBo.getLeaderPhone());
data[7]=String.format("%s/%s",memberOrderBo.getFacilitateName()==null?"":memberOrderBo.getFacilitateName(),memberOrderBo.getFacilitatePhone()==null?"":memberOrderBo.getFacilitatePhone());
data[8]=memberOrderBo.getOrderAmount().toString();
data[9]=memberOrderBo.getCouponAmount().toString();
data[10]=memberOrderBo.getRealAmount().toString();
data[11]=memberOrderBo.getPayTime()==null?"":simleFormatter.format(new Date(memberOrderBo.getPayTime()));
memerOrderData.add(data);
}
return null;
return memerOrderData;
}
private CellStyle createGeneralCellStyle(XSSFWorkbook hssfWorkbook){
CellStyle cellStyleGeneral = createHeaderCellStyle(hssfWorkbook);
cellStyleGeneral.setWrapText(true);
XSSFFont generalFont = createFont(hssfWorkbook);
generalFont.setBold(false);
cellStyleGeneral.setFont(generalFont);
return cellStyleGeneral;
}
private CellStyle createHeaderCellStyle(XSSFWorkbook hssfWorkbook){
XSSFCellStyle cellStyleHeader = hssfWorkbook.createCellStyle();
cellStyleHeader.setAlignment(HorizontalAlignment.CENTER);
cellStyleHeader.setVerticalAlignment(VerticalAlignment.CENTER);
cellStyleHeader.setLocked(false);
XSSFFont headerFont = createFont(hssfWorkbook);
cellStyleHeader.setFont(headerFont);
return cellStyleHeader;
}
private XSSFFont createFont(XSSFWorkbook hssfWorkbook){
XSSFFont font = hssfWorkbook.createFont();
font.setFontName("黑体");
font.setBold(true);
return font;
}
private String[] getData(MemberOrderStatisticsBo memberOrderStatisticsBo){
......@@ -270,11 +310,18 @@ public class OrderMemberService extends AbstractOrderHandle<OrderMemberDetailBiz
}
}
private void createMemberOrderCellData(Sheet sheet,int startRowIndex,CellStyle cellStyle,List<String[]> memberOrderList){
for (String[] data : memberOrderList) {
Row row = sheet.createRow(startRowIndex++);
createCellCount(row,0,data,cellStyle);
}
}
private void createCellCount(Row row,int CellStartIndex,String[] data,CellStyle cellStyle){
for(int i=CellStartIndex,y=0;y<data.length;i++,y++){
Cell cell = row.createCell(i);
cell.setCellValue(Objects.toString(data[y]));
cell.setCellStyle(cellStyle);
cell.setCellValue(data[y]);
}
}
......
package com.xxfc.platform.universal.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 解析出的身份证信息
* @author Administrator
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class IDCardInformation {
/**
* 住址
*/
private String address;
/**
* 出生年月日(yyyyMMdd格式)
*/
private String birthday;
/**
* 姓名
*/
private String name;
/**
* 证件号
*/
private String code;
/**
* 性别
*/
private String sex;
/**
* 民族
*/
private String nation;
/**
* 证件签发机构
*/
private String issue;
/**
* 签发时间
*/
private String issueDate;
/**
*失效时间
*/
private String expiryDate;
}
package com.xxfc.platform.universal.service.PictureParsing;
import com.xxfc.platform.universal.entity.IDCardInformation;
/**
* @author Administrator
*/
public interface UserPictureParsing {
IDCardInformation analysis(String front ,String back);
}
package com.xxfc.platform.universal.service.PictureParsing.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.map.MapUtil;
import com.alibaba.fastjson.JSONObject;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.xxfc.platform.universal.entity.IDCardInformation;
import com.xxfc.platform.universal.service.PictureParsing.UserPictureParsing;
import com.xxfc.platform.universal.utils.CertifHttpUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.util.EntityUtils;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
* 调用四川涪擎图片解析接口
*
* @author Administrator
*/
@Service
@Slf4j
public class XCFQPictureParsingImpl implements UserPictureParsing {
// private String appcode = "acea1c8811f748b3a65815f11db357c4";
private String appcode2 = "ee7710ce92054cae9f6c040f6864e6a7";
/**
* 认证相关的数据
*/
private String host = "https://ocridcards.market.alicloudapi.com";
private String path = "/idimages";
private String method = "POST";
private String dataNam = "result";
/**
* 照片解析
*
* @param frontImage 正面照片
* @param backImage 反面照片
* @return
*/
@Override
public IDCardInformation analysis(String frontImage, String backImage) {
Map<String,String> front = judgeAccordingToAnalyticalData(frontImage, "front");
if (MapUtils.isEmpty(front)) {
log.error("正面解析失败,请重新上传");
throw new BaseException("正面解析失败,请重新上传");
}
Map<String,String> back = judgeAccordingToAnalyticalData(backImage, "back");
if (MapUtils.isEmpty(back)) {
log.error("反面解析失败,请重新上传");
throw new BaseException("反面解析失败,请重新上传");
}
return new IDCardInformation(
front.get("address"),
front.get("birthday"),
front.get("name"),
front.get("code"),
front.get("sex"),
front.get("nation"),
back.get("issue"),
back.get("issueDate"),
back.get("expiryDate"));
}
private Map<String,String> judgeAccordingToAnalyticalData(String imageUrl, String type) {
String json = imageParse(imageUrl);
log.info("json:" + json);
if (StringUtils.isBlank(json)) {
return null;
}
Map reuslt = (Map) JSONObject.parse(json);
//判断是否调用图片解析的接口是否异常,若果两个次认证都没结果
if ("front".equals(type)) {
if (MapUtil.isEmpty(reuslt)
|| !(reuslt.get("code").equals("1"))
) {
return null;
}
}
if ("back".equals(type)) {
if (MapUtil.isEmpty(reuslt)
|| !(reuslt.get("code").equals("2"))
) {
return null;
}
}
Map<String,String> map = (Map) reuslt.get(dataNam);
log.info("map:" + map);
if (MapUtils.isNotEmpty(map)) {
return map;
}
return null;
}
//身份证照片解析
private String imageParse(String imageUrl) {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + appcode2);
Map<String, String> querys = new HashMap<String, String>();
Map<String, String> bodys = new HashMap<String, String>();
bodys.put("image", imageUrl);
try {
return callExternalRequest(headers,querys,bodys,1);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private String callExternalRequest(Map<String, String> headers,
Map<String, String> querys,
Map<String, String> bodys,
int type) throws Exception {
HttpResponse response = CertifHttpUtils.doPost(host, path, method, headers, querys, bodys);
log.info("response:"+response);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
/**
* 状态码: 200 正常;400 URL无效;401 appCode错误; 403 次数用完; 500 API网管错误
*/
log.info("外部接口响应状态码:"+statusCode);
//获取response的body
if (statusCode == 200) {
return EntityUtils.toString(response.getEntity());
}
if (403==statusCode){
log.error("验证次数已用完");
}
return null;
}
}
......@@ -27,16 +27,17 @@ import java.util.Map;
@Primary
public class XCFQAuthentication implements UserAuthentication {
private String cAppcode="acea1c8811f748b3a65815f11db357c4";
// private String appcode="acea1c8811f748b3a65815f11db357c4";
private String appcode2 = "ee7710ce92054cae9f6c040f6864e6a7";
/**
* 认证相关的数据
*/
private String cHost = "https://idcert.market.alicloudapi.com";
private String hsot = "https://idcert.market.alicloudapi.com";
private String cPath = "/idcard";
private String path = "/idcard";
private String cMethod = "GET";
private String method = "GET";
//响应:认证错误码字段名
private String certifRet = "status";
......@@ -52,37 +53,51 @@ public class XCFQAuthentication implements UserAuthentication {
@Override
public boolean certificate(UserMessage message) {
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + appcode2);
try {
return callExternalRequest(message, headers, 1);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
private boolean callExternalRequest(UserMessage message, Map<String, String> headers, int type) throws Exception {
//map携带身份证和姓名进行认证
Map<String, String> querys = new HashMap<>();
querys.put(idCardName, message.getIdNumber());
querys.put(cName, message.getName());
Map<String, String> headers = new HashMap<String, String>();
headers.put("Authorization", "APPCODE " + cAppcode);
try {
log.info("----querys=========" + querys);
HttpResponse response = HttpUtils.doGet(cHost, cPath, cMethod, headers, querys);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
/**
* 状态码: 200 正常;400 URL无效;401 appCode错误; 403 次数用完; 500 API网管错误
*/
log.info("外部接口响应状态码:"+statusCode);
//获取response的body
if (statusCode == 200) {
String result = EntityUtils.toString(response.getEntity());
log.info("----认证结果result=========" + result);
//认证返回的参数是否为空
if (!StringUtils.isBlank(result)) {
Map<String, Object> map = (Map<String, Object>) JSONObject.parse(result);
log.info("----certifRet=========" + certifRet);
if (MapUtil.isNotEmpty(map) || certifResultCode.equals(map.get(certifRet))) {
return true;
}
log.info("----querys=========" + querys);
HttpResponse response = HttpUtils.doGet(hsot, path, method, headers, querys);
StatusLine statusLine = response.getStatusLine();
int statusCode = statusLine.getStatusCode();
/**
* 状态码: 200 正常;400 URL无效;401 appCode错误; 403 次数用完; 500 API网管错误
*/
log.info("外部接口响应状态码:" + statusCode);
//获取response的body
if (statusCode == 200) {
String result = EntityUtils.toString(response.getEntity());
log.info("----认证结果result=========" + result);
//认证返回的参数是否为空
if (!StringUtils.isBlank(result)) {
Map<String,String> map = (Map<String, String>) JSONObject.parse(result);
log.info("----响应数据=========" + map);
if (MapUtil.isNotEmpty(map) && certifResultCode.equals(map.get("status"))) {
log.info("认证成功");
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
if (403 == statusCode) {
log.error("验证次数已用完");
}
return false;
}
}
......@@ -85,8 +85,12 @@ public class VehicleActiveService {
// 写入车辆公里数,预计目的地
vehicle.setMileageLastUpdate(MileageLift1);
// 修改车辆状态,确认是空闲状态
int result = vehicleMapper.updateStatusByIdAndStatus(departureVo.getVehicleId(), VehicleStatus.DEPARTURE.getCode(),
VehicleStatus.NORMAL.getCode());
if (vehicle.getStatus().equals(VehicleStatus.NORMAL.getCode())) {
vehicle.setStatus(VehicleStatus.DEPARTURE.getCode());
}
vehicleMapper.updateByPrimaryKeySelective(vehicle);
//修改预约记录状态
VehicleBookRecord vehicleBookRecord = null;
......@@ -211,7 +215,6 @@ public class VehicleActiveService {
}
// 写入车辆公里数,还车分公司id
vehicle.setMileageLastUpdate(MileageRest1);
vehicleMapper.updateByPrimaryKeySelective(vehicle);
// 出车记录
VehicleDepartureLogVo departureLogVo = vehicleDepartureLogMapper.selectByBookRecordId(arrivalVo.getBookRecordId());
......@@ -230,13 +233,13 @@ public class VehicleActiveService {
}
}
if (flag) { //如果此条记录后面还有未收车记录,就不修改车辆状态
int result = vehicleMapper.updateStatus(arrivalVo.getVehicleId(), VehicleStatus.NORMAL.getCode());
// if (result == 0) {
vehicle.setStatus(VehicleStatus.NORMAL.getCode());
// if (result == 0) {
// throw new BaseException(ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getDesc(),
// ResCode.VEHICLE_DEPARTURE_VEHICLE_UNDEPARTURE.getCode());
// }
}
vehicleMapper.updateByPrimaryKeySelective(vehicle);
DateTime arrivalDate = new DateTime(vehicleBookRecord.getBookEndDate());
DateTime actualArrivalDate = new DateTime(new Date());
//提前还车处理
......
......@@ -83,6 +83,9 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
@Autowired
VehicleActiveService vehicleActiveService;
@Autowired
VehicleBiz vehicleBiz;
@Override
public UserFeign getUserFeign() {
return userFeign;
......@@ -248,10 +251,15 @@ public class VehicleBookRecordBiz extends BaseBiz<VehicleBookRecordMapper, Vehic
if(vehicleBookRecord != null) {
vehicleBookRecord.setRetCompany(bookRecordUpdateLog.getNewRetCompanyId());
int a = updateSelectiveByIdRe(vehicleBookRecord);
log.info(vehicleBookRecord.toString());
log.info("修改停靠分公司后预定记录: {}" + vehicleBookRecord.toString());
if(a <= 0) {
return ObjectRestResponse.createDefaultFail();
}
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());
......
......@@ -335,6 +335,11 @@ public class VehicleController extends BaseController<VehicleBiz> implements Use
bookRecordUpdateLog.setOperaterId(userDTO.getId());
bookRecordUpdateLog.setOperaterName(userDTO.getName());
bookRecordUpdateLog.setCreateTime(new Date());
Vehicle vehicle = vehicleBiz.selectById(oldValue.getVehicleId());
if (vehicle != null) {
vehicle.setParkBranchCompanyId(oldValue.getRetCompany());
vehicleBiz.updateSelectiveByIdRe(vehicle);
}
vehicleBookRecordBiz.updateSelectiveByIdRe(vehicleBookRecord);
return bookRecordUpdateLogBiz.save(bookRecordUpdateLog);
} else {
......
......@@ -487,7 +487,7 @@
and (v3.number_plate like concat('%', #{keywords}, '%') or v3.code like concat('%', #{keywords}, '%'))
</if>
<if test="zoneId != null">
and bc3.zone_id = #{zoneId}
and bc1.zone_id = #{zoneId}
</if>
<if test="companyIds != null and companyIds.size > 0">
and (v1.lift_company in
......
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