Commit 76c7b2a3 authored by jiaorz's avatar jiaorz

Merge branch 'master-invoice-modular' into dev

parents 06d38134 3e0be9e0
......@@ -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
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