package com.stylefeng.guns.modular.system.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; import com.stylefeng.guns.modular.system.dao.InvoiceMapper; import com.stylefeng.guns.modular.system.model.Invoice; import com.stylefeng.guns.modular.system.service.IInvoiceService; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @Service public class InvoiceServiceImpl extends ServiceImpl implements IInvoiceService { @Resource private InvoiceMapper invoiceMapper; @Autowired private IOrderTaxiService orderTaxiService; @Autowired private IOrderPrivateCarService orderPrivateCarService; /** * 申请开票操作 * @param invoice * @param order * @throws Exception */ @Override public void invoicing(Invoice invoice, String order, Integer uid) throws Exception { JSONArray jsonArray = JSON.parseArray(order); BigDecimal sum = new BigDecimal(0); for(int i = 0; i < jsonArray.size(); i++){ JSONObject jsonObject = jsonArray.getJSONObject(i); Integer orderType = jsonObject.getIntValue("type"); Integer orderId = jsonObject.getIntValue("id"); switch (orderType){ case 1://专车 OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); sum=sum.add(new BigDecimal(orderPrivateCar.getPayMoney())); break; case 2://快车 OrderTaxi orderTaxi = orderTaxiService.selectById(orderId); sum.add(new BigDecimal(orderTaxi.getPayMoney())); break; case 3://机场专线 break; case 4://同城小件物流 break; case 5://跨城小件物流 break; } } invoice.setOrderNum(jsonArray.size()); invoice.setMoney(sum.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); invoice.setUserId(uid); invoice.setInsertTime(new Date()); invoice.setState(1); this.insert(invoice); // TODO: 2020/6/9 调用开发票第三方SDK for(int i = 0; i < jsonArray.size(); i++){ JSONObject jsonObject = jsonArray.getJSONObject(i); Integer orderType = jsonObject.getIntValue("type"); Integer orderId = jsonObject.getIntValue("id"); switch (orderType){ case 1://专车 OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); orderPrivateCar.setInvoiceId(invoice.getId()); orderPrivateCarService.updateById(orderPrivateCar); break; case 2://快车 OrderTaxi orderTaxi = orderTaxiService.selectById(orderId); orderTaxi.setInvoiceId(invoice.getId()); orderTaxiService.updateById(orderTaxi); break; case 3://机场专线 break; case 4://同城小件物流 break; case 5://跨城小件物流 break; } } } /** * 获取发票历史记录 * @param pageNum * @param size * @param uid * @return * @throws Exception */ @Override public List> queryMyInvoice(Integer pageNum, Integer size, Integer uid) throws Exception { pageNum = (pageNum - 1) * size; return invoiceMapper.queryMyInvoice(pageNum, size, uid); } }