Commit cf59d299 authored by zuoyh's avatar zuoyh

Merge remote-tracking branch 'origin/dev' into dev

parents 63f350f9 76c7b2a3
......@@ -330,4 +330,16 @@ public class BaseOrder implements Serializable {
@ApiModelProperty(value = "上级公司员工id")
@Column(name = "parent_position_id")
private Integer parentPositionId;
/**
* 是否开票
*/
@Column(name = "invoice_status")
private Integer invoiceStatus;
/**
* 开票记录Id
*/
@Column(name = "invoice_id")
private Integer invoiceId;
}
package com.xxfc.platform.order.entity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.math.BigDecimal;
@Table(name = "order_e_invoice")
@Data
public class OrderInvoice {
/**
* 主键
*/
@Id
private Integer id;
/**
* 发票类型:1--租房车;2--房车游;3--会员
*/
private Integer type;
/**
* 订单ids,逗号分隔
*/
@Column(name = "order_ids")
private String orderIds;
/**
* 发票抬头类型:1--企业单位;2--个人/非企业单位
*/
@Column(name = "title_type")
private Integer titleType;
/**
* 抬头名称
*/
@Column(name = "title_name")
private String titleName;
/**
* 税号
*/
@Column(name = "tax_code")
private String taxCode;
/**
* 发票内容-备注说明
*/
@Column(name = "content_remark")
private String contentRemark;
/**
* 发票内容-地址和电话
*/
@Column(name = "content_contact")
private String contentContact;
/**
* 发票内容-开户行和账号
*/
@Column(name = "content_account")
private String contentAccount;
/**
* 发票方
*/
private String drawer;
/**
* 金额
*/
private BigDecimal amount;
/**
* 接收方式:1--邮件
*/
@Column(name = "receive_type")
private Integer receiveType;
/**
* 接收方式内容
*/
@Column(name = "receive_content")
private String receiveContent;
/**
* 创建时间
*/
@Column(name = "crt_time")
private Long crtTime;
/**
* 更新时间
*/
@Column(name = "upd_time")
private Long updTime;
/**
* 创建者id
*/
@Column(name = "crt_user")
private Integer crtUser;
/**
* 更新者id
*/
@Column(name = "upd_user")
private Integer updUser;
/**
* 更多内容
*/
private String extend;
}
\ No newline at end of file
......@@ -799,6 +799,20 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> implements
sendQueue(orderMQDTO, sign);
}
public ObjectRestResponse updateBaseOrder(BaseOrder baseOrder) {
if(baseOrder.getId() == null) {
return ObjectRestResponse.paramIsEmpty();
}
BaseOrder oldValue = mapper.selectByPrimaryKey(baseOrder.getId());
if (oldValue == null) {
return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc());
}
BeanUtil.copyProperties(baseOrder, oldValue, CopyOptions.create().setIgnoreNullValue(true).setIgnoreError(true));
updateSelectiveByIdReT(oldValue);
return ObjectRestResponse.succ();
}
@Override
public void updateSelectiveById(BaseOrder entity) {
super.updateSelectiveById(entity);
......
package com.xxfc.platform.order.biz;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.biz.BaseBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.entity.BaseOrder;
import com.xxfc.platform.order.entity.OrderInvoice;
import com.xxfc.platform.order.mapper.OrderInvoiceMapper;
import com.xxfc.platform.vehicle.constant.ResCode.ResCode;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import tk.mybatis.mapper.entity.Example;
import javax.servlet.http.HttpServletRequest;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 订单发票记录
*/
@Service
@Slf4j
public class OrderInvoiceBiz extends BaseBiz<OrderInvoiceMapper, OrderInvoice> {
@Autowired
BaseOrderBiz baseOrderBiz;
@Autowired
UserFeign userFeign;
@Autowired
HttpServletRequest request;
/**
* 添加发票记录
* @return
*/
public ObjectRestResponse add(OrderInvoice orderInvoice) {
AppUserDTO appUserDTO = userFeign.userDetailByToken(request.getHeader("Authorization")).getData();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
if (orderInvoice == null || StringUtils.isBlank(orderInvoice.getOrderIds())) {
return ObjectRestResponse.paramIsEmpty();
}
String[] orderIdArray = orderInvoice.getOrderIds().split(",");
if (orderIdArray.length > 0) {
for (int a = 0; a <= orderIdArray.length; a ++) {
String orderId = StringUtils.isBlank(orderIdArray[a])? "0" : orderIdArray[a];
BaseOrder baseOrder = baseOrderBiz.selectById(Integer.parseInt(orderId));
if (baseOrder == null) {
return ObjectRestResponse.createFailedResult(ResCode.ORDER_IS_NOT_EXIST.getCode(), ResCode.ORDER_IS_NOT_EXIST.getDesc() + ", 订单Id = " + orderId);
}
//查询是否已开票
OrderInvoice oldValue = selectByUserIdAndOrderId(appUserDTO.getUserid(), Integer.parseInt(orderId)).getData();
if (oldValue == null) { //不存在就添加
orderInvoice.setCrtUser(appUserDTO.getUserid());
insertSelectiveRe(orderInvoice);
log.info("添加发票记录成功: {}", orderInvoice);
OrderInvoice newValue = selectByUserIdAndOrderId(appUserDTO.getUserid(), Integer.parseInt(orderId)).getData();
if(newValue != null) {
baseOrder.setInvoiceStatus(1);
baseOrder.setInvoiceId(newValue.getId());
baseOrderBiz.updateBaseOrder(baseOrder);
} else {
return ObjectRestResponse.createFailedResult(ResultCode.DB_OPERATION_FAIL_CODE, ResultCode.getMsg(ResultCode.DB_OPERATION_FAIL_CODE));
}
} else {//已开票
log.info("该订单已经开票, {}", orderId);
}
}
}
return ObjectRestResponse.succ();
}
/**
* 根据orderIds字符串查询对应的发票记录
* @param orderIds
* @return
*/
public ObjectRestResponse<List<OrderInvoice>> selectByIds(String orderIds) {
AppUserDTO appUserDTO = userFeign.userDetailByToken(request.getHeader("Authorization")).getData();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
if (StringUtils.isBlank(orderIds)) {
return ObjectRestResponse.paramIsEmpty();
}
Set<OrderInvoice> set = new HashSet<>();
String[] orderIdArray = orderIds.split(",");
if (orderIdArray.length > 0) {
for (int a = 0; a <= orderIdArray.length; a++) {
Example example = new Example(OrderInvoice.class);
example.createCriteria().andEqualTo("crtUser", appUserDTO.getUserid()).andLike("orderIds", "%" + orderIdArray[a] + "%");
OrderInvoice orderInvoice = mapper.selectOneByExample(example);
set.add(orderInvoice);
}
}
return ObjectRestResponse.succ(set);
}
/**
* 获取用户的发票记录列表
* @return
*/
public ObjectRestResponse<List<OrderInvoice>> selectByToken(Integer type) {
AppUserDTO appUserDTO = userFeign.userDetailByToken(request.getHeader("Authorization")).getData();
if (appUserDTO == null) {
return ObjectRestResponse.createFailedResult(ResultCode.RSTOKEN_EXPIRED_CODE, ResultCode.getMsg(ResultCode.RSTOKEN_EXPIRED_CODE));
}
Example example = new Example(OrderInvoice.class);
example.createCriteria().andEqualTo("crtUser", appUserDTO.getUserid());
if (type != null) {
example.createCriteria().andEqualTo("type", type);
}
return ObjectRestResponse.succ(mapper.selectByExample(example));
}
/**
* 根据用户Id获取用户发票记录
* @param userId
* @return
*/
public ObjectRestResponse<List<OrderInvoice>> selectByUserId(Integer userId, Integer type) {
Example example = new Example(OrderInvoice.class);
example.createCriteria().andEqualTo("crtUser", userId);
if (type != null) {
example.createCriteria().andEqualTo("type", type);
}
return ObjectRestResponse.succ(mapper.selectByExample(example));
}
public ObjectRestResponse<OrderInvoice> selectByUserIdAndOrderId(Integer userId, Integer orderId) {
Example example = new Example(OrderInvoice.class);
example.createCriteria().andEqualTo("crtUser", userId).andLike("orderIds", "%" + orderId + "%");
return ObjectRestResponse.succ(mapper.selectOneByExample(example));
}
}
package com.xxfc.platform.order.mapper;
import com.xxfc.platform.order.entity.OrderInvoice;
import tk.mybatis.mapper.common.Mapper;
public interface OrderInvoiceMapper extends Mapper<OrderInvoice> {
}
\ No newline at end of file
......@@ -19,11 +19,11 @@ import com.github.wxiaoqi.security.common.vo.PageDataVO;
import com.xxfc.platform.order.biz.*;
import com.xxfc.platform.order.biz.inner.OrderCancelBiz;
import com.xxfc.platform.order.biz.inner.OrderMsgBiz;
import com.xxfc.platform.order.contant.enumerate.*;
import com.xxfc.platform.order.contant.enumerate.CrosstownTypeEnum;
import com.xxfc.platform.order.contant.enumerate.OrderStatusEnum;
import com.xxfc.platform.order.contant.enumerate.OrderTypeEnum;
import com.xxfc.platform.order.entity.*;
import com.xxfc.platform.order.mqhandler.RabbitProduct;
import com.xxfc.platform.order.pojo.account.OrderAccountDeduction;
import com.xxfc.platform.order.pojo.account.OrderAccountDetail;
import com.xxfc.platform.order.pojo.dto.OrderDTO;
import com.xxfc.platform.order.pojo.mq.OrderMQDTO;
import com.xxfc.platform.order.pojo.order.CancelOrderDTO;
......@@ -58,7 +58,6 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_FALSE;
import static com.github.wxiaoqi.security.common.constant.CommonConstants.SYS_TRUE;
import static com.xxfc.platform.universal.constant.DictionaryKey.APP_ORDER;
......@@ -482,4 +481,10 @@ public class BaseOrderController extends CommonBaseController implements UserRes
return ObjectRestResponse.succ();
//ObjectRestResponse.succ(baseOrderBiz.selectBaeOrderByOrderIds(orderIds));
}
@RequestMapping(value = "/updateOrder", method = RequestMethod.POST)
public ObjectRestResponse updateOrder(@RequestBody BaseOrder baseOrder) {
return baseOrderBiz.updateBaseOrder(baseOrder);
}
}
package com.xxfc.platform.order.rest;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.rest.BaseController;
import com.xxfc.platform.order.biz.OrderInvoiceBiz;
import com.xxfc.platform.order.entity.OrderInvoice;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 发票记录
*/
@RestController
@RequestMapping(value = "/order/invoice")
public class OrderInvoiceController extends BaseController<OrderInvoiceBiz, OrderInvoice> {
@PostMapping(value = "/add")
public ObjectRestResponse add(@RequestBody OrderInvoice orderInvoice) {
return baseBiz.add(orderInvoice);
}
@GetMapping(value = "selectByOrderIds")
public ObjectRestResponse<List<OrderInvoice>> selectByOrderIds(String orderIds) {
return baseBiz.selectByIds(orderIds);
}
@GetMapping(value = "selectByType")
public ObjectRestResponse<List<OrderInvoice>> selectByToken(Integer type) {
return baseBiz.selectByToken(type);
}
@GetMapping(value = "getByUser")
public ObjectRestResponse<List<OrderInvoice>> selectByUserId(Integer userId, Integer type) {
return baseBiz.selectByUserId(userId, type);
}
}
......@@ -37,6 +37,6 @@
<!-- </table>-->
<!-- <table tableName="branch_company_stock_info" domainObjectName="BranchCompanyStockInfo"></table>-->
<!-- <table tableName="branch_company_stock_apply_info" domainObjectName="BranchCompanyStockApplyInfo"></table>-->
<table tableName="deposit_refund_record" domainObjectName="DepositRefundRecord"></table>
<table tableName="order_e_invoice" domainObjectName="OrderInvoice"></table>
</context>
</generatorConfiguration>
\ No newline at end of file
......@@ -3,28 +3,6 @@
<mapper namespace="com.xxfc.platform.order.mapper.BaseOrderMapper">
<!-- 可根据自己的需求,是否要使用 -->
<resultMap type="com.xxfc.platform.order.entity.BaseOrder" id="baseOrderMap">
<result property="id" column="id"/>
<result property="no" column="no"/>
<result property="type" column="type"/>
<result property="detailId" column="detail_id"/>
<result property="status" column="status"/>
<result property="productAmount" column="product_amount"/>
<result property="orderAmount" column="order_amount"/>
<result property="detailJson" column="detail_json"/>
<result property="thirdType" column="third_type"/>
<result property="outTradeNo" column="out_trade_no"/>
<result property="crtTime" column="crt_time"/>
<result property="crtUser" column="crt_user"/>
<result property="crtName" column="crt_name"/>
<result property="crtHost" column="crt_host"/>
<result property="updTime" column="upd_time"/>
<result property="updUser" column="upd_user"/>
<result property="updName" column="upd_name"/>
<result property="updHost" column="upd_host"/>
</resultMap>
<resultMap type="com.xxfc.platform.order.pojo.order.OrderPageVO" id="orderPageMap">
<result javaType="Integer" column="type" property="type"></result>
<discriminator javaType="Integer" column="type">
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xxfc.platform.order.mapper.OrderInvoiceMapper" >
</mapper>
\ No newline at end of file
......@@ -5,7 +5,7 @@ import lombok.Data;
import java.util.Date;
@Data
public class ResultVehicleVo {
public class ResultVehicleVo {
/**
* 主键(uuid)
*/
......
package com.xxfc.platform.vehicle.pojo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.HashMap;
import java.util.Map;
@Data
public class VehicleExcelVo {
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class VehicleExcelVo {
private static Map<Integer, String> map = new HashMap();
static {
map.put(1, "正常运行");
map.put(3, "报废");
map.put(4, "出车");
map.put(6, "维修");
map.put(7, "保养");
map.put(8, "上牌");
}
/**
* 车牌号,空字符串-没有
......@@ -34,7 +51,21 @@ public class VehicleExcelVo {
/**
* 停靠分支机构(名)
*/
private String parkBranchCompanyName;
/**
* 车辆状态: 1-正常运行 2-维修 3-报废
*/
private Integer status;
/**
* 所属人 名称
*/
private String belongToName;
public String getStatus() {
return map.get(status);
}
}
package com.xxfc.platform.vehicle.pojo;
import com.sun.org.apache.xpath.internal.operations.Bool;
import lombok.Data;
import java.util.Date;
......@@ -138,6 +139,9 @@ public class VehiclePageQueryVo {
*/
private Integer modelId;
/**
* 判断是否需要下载
*/
private boolean download;
}
......@@ -67,8 +67,8 @@ public class VehicleInformationDownloadBiz extends BaseBiz<VehicleMapper, Vehicl
try {
if (StringUtils.isNotBlank(vehiclePageQueryVoJson)){
vehiclePageQueryVo = JSON.parseObject(vehiclePageQueryVoJson, VehiclePageQueryVo.class);
vehiclePageQueryVo.setDownload(true);
}
if (userDTO.getDataAll() == 2) {
List<Integer> companyList = vehicleBiz.dataCompany(userDTO.getDataZone(), userDTO.getDataCompany());
return getByPageNotAllData(vehiclePageQueryVo, companyList);
......@@ -85,11 +85,18 @@ public class VehicleInformationDownloadBiz extends BaseBiz<VehicleMapper, Vehicl
public List<VehicleExcelVo> getList(String vehiclePageQueryVoJson, UserDTO userDTO) throws Exception {
List<ResultVehicleVo> resultVehicleVoList = getResultVehicleVoList(vehiclePageQueryVoJson, userDTO);
ArrayList<VehicleExcelVo> arrayList = Lists.newArrayList();
resultVehicleVoList.parallelStream().forEach(result->{
resultVehicleVoList.stream().forEach(result->{
try {
VehicleExcelVo vehicleExcelVo = new VehicleExcelVo();
BeanUtilsBean.getInstance().copyProperties(vehicleExcelVo,result);
arrayList.add(vehicleExcelVo);
VehicleExcelVo build = VehicleExcelVo.builder()
.code(result.getCode())
.numberPlate(result.getNumberPlate())
.parkBranchCompanyName(result.getParkBranchCompanyId()==1?"欣新房车有限公司":result.getParkBranchCompanyName())
.status(result.getStatus())
.useTypeName(result.getUseTypeName())
.vehicleType(result.getVehicleType())
.belongToName(result.getBelongToName())
.build();
arrayList.add(build);
} catch (Exception e) {
log.error(e.getMessage());
log.error(e.getMessage(), e);
......
......@@ -50,13 +50,18 @@ public class VehicleInformationDownloadController extends BaseController<Vehicle
if (userDTO == null) {
throw new BaseException("token已失效");
}
List<VehicleExcelVo> rows = baseBiz.getList(vehiclePageQueryVoJson, userDTO);
ExcelWriter writer = ExcelUtil.getWriter(true);
writer.addHeaderAlias("numberPlate", "车牌号");
writer.addHeaderAlias("code", "车辆编码");
writer.addHeaderAlias("vehicleType", "车型");
writer.addHeaderAlias("useTypeName", "用途");
writer.addHeaderAlias("numberPlate", "车牌号");
writer.addHeaderAlias("status", "车辆状态");
writer.addHeaderAlias("vehicleType", "车辆品牌");
writer.addHeaderAlias("parkBranchCompanyName", "停靠分公司");
writer.addHeaderAlias("useTypeName", "用途");
writer.addHeaderAlias("belongToName", "托管人");
// 一次性写出内容,使用默认样式,强制输出标题
writer.write(rows, true);
//response为HttpServletResponse对象
......
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