From 92480c7fd17a6bf89205ffcf4b78eef17988f0d5 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 01 八月 2025 19:22:11 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TInvoiceController.java | 8 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java | 8 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITInvoiceService.java | 3 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js | 17 + ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TInvoiceMapper.xml | 1 ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tPromotionOrder.html | 122 ++++++++++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TPromotionOrderCarController.java | 12 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TInvoiceMapper.java | 3 ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tPromotionOrder.js | 271 ++++++++++++++++++++++ ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TInvoiceServiceImpl.java | 4 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml | 24 + ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TDriverPromotionActivityController.java | 17 + ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java | 4 ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java | 4 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/InvoiceServiceImpl.java | 159 ++++++++---- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java | 14 UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Invoice.java | 11 17 files changed, 593 insertions(+), 89 deletions(-) diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TInvoiceController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TInvoiceController.java index 3d6c786..70dba3c 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TInvoiceController.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/general/TInvoiceController.java @@ -7,6 +7,7 @@ import com.stylefeng.guns.core.log.LogObjectHolder; import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.modular.system.model.TInvoice; +import com.stylefeng.guns.modular.system.service.ITCompanyService; import com.stylefeng.guns.modular.system.service.ITInvoiceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @@ -36,6 +37,9 @@ @Autowired private ShiroExtUtil shiroExtUtil; + + @Autowired + private ITCompanyService tCompanyService; /** * 跳转到开发票列表首页 @@ -88,6 +92,8 @@ String name, Integer type, Integer state) { + //获取当前用户的公司id + Integer companyId = tCompanyService.selectById(shiroExtUtil.getUser().getObjectId()).getId(); String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)) { @@ -99,7 +105,7 @@ if (shiroExtUtil.getUser().getRoleType() != 1) { page.setRecords(null); } else { - page.setRecords(tInvoiceService.getInvoiceList(page, beginTime, endTime, email, name, type, state)); + page.setRecords(tInvoiceService.getInvoiceList(page, beginTime, endTime, email, name, type, state,companyId)); } return super.packForBT(page); } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TDriverPromotionActivityController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TDriverPromotionActivityController.java index cc921d3..008dfda 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TDriverPromotionActivityController.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TDriverPromotionActivityController.java @@ -8,8 +8,11 @@ import com.stylefeng.guns.core.util.SinataUtil; import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.system.model.DriverRankVo; +import com.stylefeng.guns.modular.system.model.TOrderPrivateCar; import com.stylefeng.guns.modular.system.model.TRegion; +import com.stylefeng.guns.modular.system.service.ITOrderPrivateCarService; import com.stylefeng.guns.modular.system.service.ITRegionService; +import com.stylefeng.guns.modular.system.service.TAbnormalPayOrderService; import com.stylefeng.guns.modular.system.util.ExcelExportUtil; import lombok.SneakyThrows; import org.springframework.stereotype.Controller; @@ -49,6 +52,9 @@ @Autowired private ShiroExtUtil shiroExtUtil; + + @Autowired + private ITOrderPrivateCarService tOrderPrivateCarService; /** * 跳转到首页 */ @@ -108,6 +114,17 @@ model.addAttribute("driverId",id); return PREFIX + "tDriverPromotionActivityUser.html"; } + @RequestMapping("/tDriverPromotionActivity_viewMoney/{id}") + public String tDriverPromotionActivityViewMoney(@PathVariable Integer id, Model model) { + List<Map<String, Object>> list=new ArrayList<>(); + list = tOrderPrivateCarService.promotionInfoExport(null, null, null, null, null, null, null, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(),id); + BigDecimal reduce = list.stream().map(e -> new BigDecimal(e.get("promotionMoney").toString())).reduce(BigDecimal.ZERO, BigDecimal::add); + model.addAttribute("money",reduce); + model.addAttribute("size",list.size()); + + model.addAttribute("driverId",id); + return PREFIX + "tPromotionOrder.html"; + } /** * 跳转到修改 */ diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TPromotionOrderCarController.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TPromotionOrderCarController.java index 67e223b..af7f7a6 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TPromotionOrderCarController.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/controller/specialTrain/TPromotionOrderCarController.java @@ -54,7 +54,7 @@ @RequestMapping("") public String index(Model model) { List<Map<String, Object>> list=new ArrayList<>(); - list = tOrderPrivateCarService.promotionInfoExport(null, null, null, null, null, null, null, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId()); + list = tOrderPrivateCarService.promotionInfoExport(null, null, null, null, null, null, null, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(),null); BigDecimal reduce = list.stream().map(e -> new BigDecimal(e.get("promotionMoney").toString())).reduce(BigDecimal.ZERO, BigDecimal::add); model.addAttribute("money",reduce); model.addAttribute("size",list.size()); @@ -72,7 +72,7 @@ String orderNum, String userName, String name, - String driverName){ + String driverName,Integer driverId){ String beginTime = null; String endTime = null; if (SinataUtil.isNotEmpty(insertTime)) { @@ -81,7 +81,7 @@ endTime = timeArray[1]; } Page<Map<String, Object>> page = new PageFactory<Map<String, Object>>().defaultPage(); - page.setRecords(tOrderPrivateCarService.promotionInfo(page, beginTime, endTime, orderNum, userName, name, driverName, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId())); + page.setRecords(tOrderPrivateCarService.promotionInfo(page, beginTime, endTime, orderNum, userName, name, driverName, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(),driverId)); return super.packForBT(page); } @@ -93,7 +93,7 @@ String orderNum, String userName, String name, - String driverName, HttpServletRequest request, HttpServletResponse response) { + String driverName,Integer driverId, HttpServletRequest request, HttpServletResponse response) { try { String beginTime = null; String endTime = null; @@ -103,7 +103,7 @@ endTime = timeArray[1]; } List<Map<String, Object>> list=new ArrayList<>(); - list = tOrderPrivateCarService.promotionInfoExport(null, beginTime, endTime, orderNum, userName, name, driverName, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId()); + list = tOrderPrivateCarService.promotionInfoExport(null, beginTime, endTime, orderNum, userName, name, driverName, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(),driverId); // 表格数据【封装】 @@ -196,7 +196,7 @@ endTime = timeArray[1]; } List<Map<String, Object>> list=new ArrayList<>(); - list = tOrderPrivateCarService.promotionInfoExport(null, beginTime, endTime, orderNum, userName, name, driverName, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId()); + list = tOrderPrivateCarService.promotionInfoExport(null, beginTime, endTime, orderNum, userName, name, driverName, shiroExtUtil.getUser().getRoleType(), shiroExtUtil.getUser().getObjectId(),null); HashMap<String, Object> map = new HashMap<>(); BigDecimal reduce = list.stream().map(e -> new BigDecimal(e.get("promotionMoney").toString())).reduce(BigDecimal.ZERO, BigDecimal::add); map.put("money", reduce); diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TInvoiceMapper.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TInvoiceMapper.java index 56d2a37..b751fc1 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TInvoiceMapper.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TInvoiceMapper.java @@ -28,5 +28,6 @@ @Param("email") String email, @Param("name") String name, @Param("type") Integer type, - @Param("state") Integer state); + @Param("state") Integer state, + @Param("companyId") Integer companyId); } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java index ef8edfb..de96020 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/TOrderPrivateCarMapper.java @@ -71,7 +71,7 @@ List<Map<String,Object>> getSurcharge(@Param("id") Object id,@Param("orderType") Integer orderType); - List<Map<String, Object>> promotionInfo(@Param("page") Page<Map<String, Object>> page, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("orderNum") String orderNum, @Param("userName") String userName, @Param("name") String name, @Param("driverName") String driverName, @Param("roleType") Integer roleType, @Param("objectId") Integer objectId); + List<Map<String, Object>> promotionInfo(@Param("page") Page<Map<String, Object>> page, @Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("orderNum") String orderNum, @Param("userName") String userName, @Param("name") String name, @Param("driverName") String driverName, @Param("roleType") Integer roleType, @Param("objectId") Integer objectId, @Param("driverId") Integer driverId); - List<Map<String, Object>> promotionInfoExport(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("orderNum") String orderNum, @Param("userName") String userName, @Param("name") String name, @Param("driverName") String driverName, @Param("roleType") Integer roleType, @Param("objectId") Integer objectId); + List<Map<String, Object>> promotionInfoExport(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("orderNum") String orderNum, @Param("userName") String userName, @Param("name") String name, @Param("driverName") String driverName, @Param("roleType") Integer roleType, @Param("objectId") Integer objectId, @Param("driverId") Integer driverId); } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TInvoiceMapper.xml b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TInvoiceMapper.xml index dbf4efd..a2ffc1c 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TInvoiceMapper.xml +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TInvoiceMapper.xml @@ -45,6 +45,7 @@ <if test="state != null and state != ''"> and o.state = #{state} </if> + and o.companyId = #{companyId} </where> order by o.id desc </select> diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml index 27d4230..c593fd3 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/dao/mapping/TOrderPrivateCarMapper.xml @@ -264,7 +264,7 @@ <select id="promotionInfo" resultType="java.util.Map"> select * from ( - select t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName + select 1 as type,t1.id orderId,t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName from t_order_private_car t1 LEFT JOIN t_driver_promotion_activity t2 ON t1.promotionActivityId = t2.id LEFT JOIN t_driver t3 ON t1.promotionDriverId = t3.id @@ -288,9 +288,12 @@ <if test="roleType != null and roleType != '' and roleType != 1"> and t1.companyId = #{objectId} </if> + <if test="driverId != null "> + and t1.promotionDriverId =#{driverId} + </if> union all - select t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName + select 2 as type,t1.id orderId,t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName from t_order_taxi t1 LEFT JOIN t_driver_promotion_activity t2 ON t1.promotionActivityId = t2.id LEFT JOIN t_driver t3 ON t1.promotionDriverId = t3.id @@ -314,10 +317,13 @@ <if test="roleType != null and roleType != '' and roleType != 1"> and t1.companyId = #{objectId} </if> + <if test="driverId != null "> + and t1.promotionDriverId =#{driverId} + </if> union all - select t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName + select 3 as type,t1.id orderId,t1.orderNum,t1.promotionMoney,t1.successTime,t1.payMoney money,t2.activityTitle name,t3.name driverName,t4.nickName userName from t_order_cross_city t1 LEFT JOIN t_driver_promotion_activity t2 ON t1.promotionActivityId = t2.id LEFT JOIN t_driver t3 ON t1.promotionDriverId = t3.id @@ -340,6 +346,9 @@ </if> <if test="roleType != null and roleType != '' and roleType != 1"> and t1.companyId = #{objectId} + </if> + <if test="driverId != null "> + and t1.promotionDriverId =#{driverId} </if> ) as t5 order by t5.successTime desc @@ -367,6 +376,9 @@ <if test="driverName != null and driverName != ''"> and t3.name like CONCAT('%',#{driverName},'%') </if> + <if test="driverId != null "> + and t1.promotionDriverId =#{driverId} + </if> <if test="roleType != null and roleType != '' and roleType != 1"> and t1.companyId = #{objectId} </if> @@ -392,6 +404,9 @@ </if> <if test="driverName != null and driverName != ''"> and t3.name like CONCAT('%',#{driverName},'%') + </if> + <if test="driverId != null "> + and t1.promotionDriverId =#{driverId} </if> <if test="roleType != null and roleType != '' and roleType != 1"> and t1.companyId = #{objectId} @@ -420,6 +435,9 @@ <if test="driverName != null and driverName != ''"> and t3.name like CONCAT('%',#{driverName},'%') </if> + <if test="driverId != null "> + and t1.promotionDriverId =#{driverId} + </if> <if test="roleType != null and roleType != '' and roleType != 1"> and t1.companyId = #{objectId} </if> diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITInvoiceService.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITInvoiceService.java index 34df7a0..b5cf603 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITInvoiceService.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITInvoiceService.java @@ -28,5 +28,6 @@ @Param("email") String email, @Param("name") String name, @Param("type") Integer type, - @Param("state") Integer state); + @Param("state") Integer state, + @Param("companyId") Integer companyId); } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java index 7b1da0c..afaab8d 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/ITOrderPrivateCarService.java @@ -71,8 +71,8 @@ List<Map<String,Object>> getSurcharge(Object id,Integer orderType); - List<Map<String, Object>> promotionInfo(Page<Map<String, Object>> page, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId); + List<Map<String, Object>> promotionInfo(Page<Map<String, Object>> page, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId,Integer driverId); - List<Map<String, Object>> promotionInfoExport(Object o, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId); + List<Map<String, Object>> promotionInfoExport(Object o, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId,Integer driverId); } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TInvoiceServiceImpl.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TInvoiceServiceImpl.java index d3aca8e..4d58fff 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TInvoiceServiceImpl.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TInvoiceServiceImpl.java @@ -22,7 +22,7 @@ public class TInvoiceServiceImpl extends ServiceImpl<TInvoiceMapper, TInvoice> implements ITInvoiceService { @Override - public List<Map<String, Object>> getInvoiceList(Page<Map<String, Object>> page, String beginTime, String endTime, String email, String name, Integer type, Integer state) { - return this.baseMapper.getInvoiceList(page, beginTime, endTime, email, name, type, state); + public List<Map<String, Object>> getInvoiceList(Page<Map<String, Object>> page, String beginTime, String endTime, String email, String name, Integer type, Integer state,Integer companyId) { + return this.baseMapper.getInvoiceList(page, beginTime, endTime, email, name, type, state, companyId); } } diff --git a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java index 6373e9d..cb73f5a 100644 --- a/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java +++ b/ManagementQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TOrderPrivateCarServiceImpl.java @@ -115,12 +115,12 @@ } @Override - public List<Map<String, Object>> promotionInfo(Page<Map<String, Object>> page, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId) { - return this.baseMapper.promotionInfo(page, beginTime, endTime, orderNum, userName, name, driverName, roleType, objectId); + public List<Map<String, Object>> promotionInfo(Page<Map<String, Object>> page, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId,Integer driverId) { + return this.baseMapper.promotionInfo(page, beginTime, endTime, orderNum, userName, name, driverName, roleType, objectId,driverId); } @Override - public List<Map<String, Object>> promotionInfoExport(Object o, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId) { - return this.baseMapper.promotionInfoExport(beginTime, endTime, orderNum, userName, name, driverName, roleType, objectId); + public List<Map<String, Object>> promotionInfoExport(Object o, String beginTime, String endTime, String orderNum, String userName, String name, String driverName, Integer roleType, Integer objectId,Integer driverId) { + return this.baseMapper.promotionInfoExport(beginTime, endTime, orderNum, userName, name, driverName, roleType, objectId,driverId); } } diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tPromotionOrder.html b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tPromotionOrder.html new file mode 100644 index 0000000..43bad65 --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/WEB-INF/view/system/tDriverPromotionActivity/tPromotionOrder.html @@ -0,0 +1,122 @@ +@layout("/common/_container.html"){ +<div class="row"> + <div class="col-sm-12"> + <div class="ibox float-e-margins"> + <div class="ibox-title"> + <h5>推广收益明细</h5> + </div> + <div class="ibox-content"> + <input type="hidden" id="driverId" value="${driverId}"> + <div class="row row-lg"> + <div class="col-sm-12"> + <div class="row"> + <div class="col-sm-3"> + <#TimeCon id="insertTime" name="收益时间" isTime="false"/> + </div> + <div class="col-sm-3"> + <#NameCon id="name" name="活动名称" /> + </div> + <div class="col-sm-3"> + <#NameCon id="driverName" name="司机名称" /> + </div> + <div class="col-sm-3"> + <#NameCon id="userName" name="用户名称" /> + </div> + <div class="col-sm-3"> + <#NameCon id="orderNum" name="订单编号" /> + </div> + + <div class="col-sm-3"> + <#button name="搜索" icon="fa-search" clickFun="search()"/> + <#button name="重置" icon="fa-trash" clickFun="resetSearch()" space="true"/> + </div> + </div> + + <div class="form-group"> + <div class="row"> + <div class="col-sm-6"> + <div class="stat-card" style=" border: none; padding: 20px; border-radius: 10px; margin-bottom: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.1);"> + <div class="stat-content"> + <div class="stat-number" style="font-size: 28px; font-weight: bold; margin-bottom: 5px;" id="money"> + ${money} + </div> + <div class="stat-label" style="font-size: 14px; opacity: 0.9;"> + 合计推广收益金额 + </div> + </div> + <div style="clear: both;"></div> + </div> + </div> + <div class="col-sm-6"> + <div class="stat-card" style=" border: none; padding: 20px; border-radius: 10px; margin-bottom: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.1);"> + <div class="stat-content"> + <div class="stat-number" style="font-size: 28px; font-weight: bold; margin-bottom: 5px;" id="size"> + ${size} + </div> + <div class="stat-label" style="font-size: 14px; opacity: 0.9;"> + 合计推广收益笔数 + </div> + </div> + <div style="clear: both;"></div> + </div> + </div> + </div> + </div> + + <div class="hidden-xs" id="TOrderPrivateCarTableToolbar" role="group"> + <#button name="导出Excel" icon="" clickFun="TAbnormalOrder.exportExcel()" space="true"/> + </div> + <#table id="TOrderPrivateCarTable"/> + </div> + </div> + </div> + </div> + </div> +</div> +<script src="${ctxPath}/static/modular/system/tDriverPromotionActivity/tPromotionOrder.js"></script> +<script> + laydate.render({ + elem: '#insertTime' + ,range: true + }); + + function search() { + + let insertTime = $('#insertTime').val(); + let name = $('#name').val(); + let driverName = $('#driverName').val(); + let userName = $('#userName').val(); + let orderNum = $('#orderNum').val(); + + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/promotionInfo/list1", function(data){ + console.log(data) + $("#money").text(data.money) + $("#size").text(data.size) + },function(data){ + }); + ajax.set("insertTime",insertTime); + ajax.set("name",name); + ajax.set("driverName",driverName); + ajax.set("userName",userName); + ajax.set("orderNum",orderNum); + ajax.start(); + TAbnormalOrder.search() + } + + + function resetSearch() { + + //提交信息 + var ajax = new $ax(Feng.ctxPath + "/promotionInfo/list1", function(data){ + console.log(data) + $("#money").text(data.money) + $("#size").text(data.size) + },function(data){ + }); + ajax.start(); + TAbnormalOrder.resetSearch() + } +</script> +@} diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js index d8dd13b..6879c44 100644 --- a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tDriverPromotionActivity1.js @@ -30,7 +30,7 @@ formatter: function (value, row) { var btn = []; btn += '<a href="javascript:void(0);" onclick="TDriverPromotionActivity.viewUser(' + row.driverId + ')" style="color: #0e9aef">查看下级用户</a> '; - btn += '<a href="javascript:void(0);" onclick="TDriverPromotionActivity.info(' + row.id + ')" style="color: #0e9aef">查看收益明细</a> '; + btn += '<a href="javascript:void(0);" onclick="TDriverPromotionActivity.viewMoney(' + row.driverId + ')" style="color: #0e9aef">查看收益明细</a> '; return btn; } @@ -80,6 +80,20 @@ fix: false, //不固定 maxmin: true, content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_viewUser/' + e + }); + this.layerIndex = index; +}; +/** + * 打开查看详情 + */ +TDriverPromotionActivity.viewMoney = function (e) { + var index = layer.open({ + type: 2, + title: '推广收益明细', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tDriverPromotionActivity/tDriverPromotionActivity_viewMoney/' + e }); this.layerIndex = index; }; @@ -193,4 +207,5 @@ var table = new BSTable(TDriverPromotionActivity.id, "/tDriverPromotionActivity/list1", defaultColunms); table.setPaginationType("client"); TDriverPromotionActivity.table = table.init(); + TDriverPromotionActivity.search() }); diff --git a/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tPromotionOrder.js b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tPromotionOrder.js new file mode 100644 index 0000000..d777a1b --- /dev/null +++ b/ManagementQYTTravel/guns-admin/src/main/webapp/static/modular/system/tDriverPromotionActivity/tPromotionOrder.js @@ -0,0 +1,271 @@ +/** + * 快车订单管理初始化 + */ +var TAbnormalOrder = { + id: "TOrderPrivateCarTable", //表格id + seItem: null, //选中的条目 + table: null, + layerIndex: -1 +}; + +/** + * 初始化表格的列 + */ +TAbnormalOrder.initColumn = function () { + return [ + {field: 'selectItem', radio: true}, + {title: '主键id', field: 'id', visible: false, align: 'center', valign: 'middle'}, + {title: '活动名称', field: 'name', visible: true, align: 'center', valign: 'middle',width:'8%', + }, + {title: '司机名称', field: 'driverName', visible: true, align: 'center', valign: 'middle', + }, + {title: '下级用户', field: 'userName', visible: true, align: 'center', valign: 'middle', + }, + {title: '订单编号', field: 'orderNum', visible: true, align: 'center', valign: 'middle', + }, + {title: '订单金额', field: 'money', visible: false, align: 'center', valign: 'middle'}, + {title: '司机推广收益', field: 'promotionMoney', visible: true, align: 'center', valign: 'middle', + }, + {title: '收益时间', field: 'successTime', visible: true, align: 'center', valign: 'middle', + }, + { + title: '操作', field: 'opt', visible: true, align: 'left', valign: 'middle', width: "10%", + formatter: function (value, row) { + var btn = []; + btn += '<a href="javascript:void(0);" onclick="TAbnormalOrder.info(' + row.orderId +","+row.type+ ')" style="color: #0e9aef">详情</a> '; + return btn; + } + + } + ]; +}; + +/** + * 检查是否选中 + */ +TAbnormalOrder.check = function () { + var selected = $('#' + this.id).bootstrapTable('getSelections'); + if(selected.length == 0){ + Feng.info("请先选中表格中的某一记录!"); + return false; + }else{ + TAbnormalOrder.seItem = selected[0]; + return true; + } +}; + +/** + * 添加快车订单 + */ +TAbnormalOrder.addOrder =function(){ + var index = layer.open({ + type: 2, + title: '添加快车订单', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_addOrder' + }); + this.layerIndex = index; + +}; +TAbnormalOrder.info =function(orderId,type){ + console.log(orderId,type) + if(type==1){ + var index = layer.open({ + type: 2, + title: '快车订单详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_orderDetail/' +orderId + }); + this.layerIndex = index; + } + if(type==3){ + var index = layer.open({ + type: 2, + title: '跨城出行订单详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderCrossCity/tOrderCrossCity_detail/' + orderId + }); + this.layerIndex = index; + } + if(type==2){ + var index = layer.open({ + type: 2, + title: '出租车订单详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderTaxi/tOrderTaxi_update/' + orderId + }); + this.layerIndex = index; + } + + +}; + +/** + * 打开查看快车订单详情 + */ +TAbnormalOrder.orderDetail = function () { + if (this.check()) { + var index = layer.open({ + type: 2, + title: '异常订单详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/abnormal/tOrderPrivateCar_orderDetail?tOrderPrivateCarId=' + TAbnormalOrder.seItem.id+'&type='+$("#type").val() + }); + this.layerIndex = index; + } +}; +TAbnormalOrder.orderDetail1 = function () { + if (this.check()) { + let abnormalStatus = TAbnormalOrder.seItem.abnormalStatus + if(abnormalStatus==2){ + Feng.info("此异常订单已处理") + return; + } + console.log(abnormalStatus) + var index = layer.open({ + type: 2, + title: '异常订单详情', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/abnormal/tOrderPrivateCar_orderDetail1?tOrderPrivateCarId=' + TAbnormalOrder.seItem.id+'&type='+$("#type").val() + }); + this.layerIndex = index; + } +}; + + +/** + * 订单轨迹 + */ +TAbnormalOrder.trajectory = function(){ + if (this.check()) { + var index = layer.open({ + type: 2, + title: '快车订单轨迹', + area: ['100%', '100%'], //宽高 + fix: false, //不固定 + maxmin: true, + content: Feng.ctxPath + '/tOrderPrivateCar/tOrderPrivateCar_trajectory/' + TAbnormalOrder.seItem.id + }); + this.layerIndex = index; + } +} + + +/** + * 删除快车订单 + */ +TAbnormalOrder.deleteOrder = function () { + if (this.check()) { + var orderNum = TAbnormalOrder.seItem.orderNum; + if (orderNum == "" || orderNum == null || orderNum == undefined) { + orderNum = "该订单"; + } else { + orderNum = "【" + orderNum + "】"; + } + if (TAbnormalOrder.seItem.state != 10) { + swal("删除失败", "【已取消】状态下才能执行此操作", "warning"); + return; + } + swal({ + title: "您是否确认删除" + orderNum + "?", + text: "请谨慎操作,删除后数据无法恢复!", + type: "warning", + showCancelButton: true, + confirmButtonColor: "#DD6B55", + confirmButtonText: "删除", + closeOnConfirm: false + }, function () { + var ajax = new $ax(Feng.ctxPath + "/tOrderPrivateCar/delete", function (data) { + swal("删除成功", "您已经删除了" + orderNum + "。", "success"); + TAbnormalOrder.table.refresh(); + }, function (data) { + swal("删除失败", data.responseJSON.message + "!", "warning"); + }); + ajax.set("tOrderPrivateCarId", TAbnormalOrder.seItem.id); + ajax.start(); + }); + } +}; + + + + + +/** + * 查询快车订单列表 + */ +TAbnormalOrder.search = function () { + var queryData = {}; + queryData['insertTime'] = $("#insertTime").val(); + queryData['name'] = $("#name").val(); + queryData['driverName'] = $("#driverName").val(); + queryData['userName'] = $("#userName").val(); + queryData['orderNum'] = $("#orderNum").val(); + queryData['driverId'] = $("#driverId").val(); + TAbnormalOrder.table.refresh({query: queryData}); +}; + +TAbnormalOrder.exportExcel=function (){ + let p = ""; + let insertTime = $('#insertTime').val(); + let name = $('#name').val(); + let driverName = $('#driverName').val(); + let userName = $('#userName').val(); + let orderNum = $('#orderNum').val(); + let driverId = $('#driverId').val(); + if(null != insertTime && '' != insertTime){ + p += "insertTime=" + insertTime + "&"; + } + if(null != name && '' != name){ + p += "name=" + name + "&"; + } + if(null != driverName && '' != driverName){ + p += "driverName=" + driverName + "&"; + } + if(null != userName && '' != userName){ + p += "userName=" + userName + "&" ; + } + if(null != orderNum && '' != orderNum){ + p += "orderNum=" + orderNum + "&" ; + } + if(null != driverId && '' != driverId){ + p += "driverId=" + driverId + "&" ; + } + if('' != p){ + p = "?" + p.substring(0, p.length - 1); + } + console.log('p['+p+']') + window.location.href = Feng.ctxPath + '/promotionInfo/export' + p; +} + + + +TAbnormalOrder.resetSearch = function () { + $("#insertTime").val(""); + $("#name").val(""); + $("#driverName").val(""); + $("#userName").val(""); + $("#orderNum").val(""); + TAbnormalOrder.search(); +}; + + + +$(function () { + var defaultColunms = TAbnormalOrder.initColumn(); + var table = new BSTable(TAbnormalOrder.id, "/promotionInfo/list?driverId="+$('#driverId').val(), defaultColunms); + table.setPaginationType("server"); + TAbnormalOrder.table = table.init(); +}); diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java index 9d43a39..f52a9fe 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java @@ -1416,7 +1416,11 @@ case 2: return orderTaxiService.payTaxiOrder1(payType, orderId, objectId, objectType, type, path, ip); case 3: - return orderCrossCityService.payCrossCityOrder1(payType, orderId, objectId, objectType, type); + ResultUtil resultUtil = orderCrossCityService.payCrossCityOrder1(payType, orderId, objectId, objectType, type); + + orderCrossCityService.promotion(orderId); + + return resultUtil; case 4: return orderLogisticsService.payLogisticsOrder1(payType, orderId, objectId, objectType, type); case 5: @@ -2158,11 +2162,13 @@ if(orderNo.contains("PR")){ orderNo = orderNo.substring(2); orderPrivateCarService.payOrderPrivateCarCallback(Integer.valueOf(orderNo), payId, 1); + orderPrivateCarService.promotion(Integer.valueOf(orderNo)); } //出租车 if(orderNo.contains("TA")){ orderNo = orderNo.substring(2); orderTaxiService.payOrderTaxiCallback(Integer.valueOf(orderNo), payId, 1, 0); + orderTaxiService.promotion(Integer.valueOf(orderNo)); } }catch (Exception e){ e.printStackTrace(); @@ -2180,12 +2186,6 @@ */ private void promotion(Integer orderType, Integer orderId) { switch (orderType) { - case 1: - orderPrivateCarService.promotion(orderId); - break; - case 2: - orderTaxiService.promotion(orderId); - break; case 3: orderCrossCityService.promotion(orderId); break; diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Invoice.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Invoice.java index e1a689b..7dca049 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Invoice.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/model/Invoice.java @@ -84,6 +84,9 @@ @TableField("insertTime") private Date insertTime; + @TableField("companyId") + private Integer companyId; + public Integer getId() { return id; } @@ -196,6 +199,13 @@ this.insertTime = insertTime; } + public Integer getCompanyId() { + return companyId; + } + public void setCompanyId(Integer companyId) { + this.companyId = companyId; + } + @Override public String toString() { return "Invoice{" + @@ -213,6 +223,7 @@ ", userId=" + userId + ", state=" + state + ", insertTime=" + insertTime + + ", companyId=" + companyId + '}'; } } diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/InvoiceServiceImpl.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/InvoiceServiceImpl.java index e0b0e66..4855d4b 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/InvoiceServiceImpl.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/InvoiceServiceImpl.java @@ -15,14 +15,13 @@ 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.BeanUtils; 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; +import java.util.*; @Service @@ -54,74 +53,116 @@ @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++){ + // 1. 按companyId分组存放订单(key: companyId, value: 该公司的所有订单) + Map<Integer, List<JSONObject>> companyOrdersMap = new HashMap<>(); + 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())); + Integer companyId = null; + + // 2. 获取每个订单的companyId + switch (orderType) { + case 1: // 专车 + OrderPrivateCar privateCar = orderPrivateCarService.selectById(orderId); + companyId = privateCar.getCompanyId(); break; - case 2://出租车 - OrderTaxi orderTaxi = orderTaxiService.selectById(orderId); - sum=sum.add(new BigDecimal(orderTaxi.getPayMoney())); + case 2: // 出租车 + OrderTaxi taxi = orderTaxiService.selectById(orderId); + companyId = taxi.getCompanyId(); break; - case 3://跨城出行 - OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId); - sum=sum.add(new BigDecimal(orderCrossCity.getPayMoney())); + case 3: // 跨城出行 + OrderCrossCity crossCity = orderCrossCityService.selectById(orderId); + companyId = crossCity.getCompanyId(); break; - case 4://同城小件物流 - OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId); - sum=sum.add(new BigDecimal(orderLogistics.getPayMoney())); - break; - case 5://跨城小件物流 - OrderLogistics orderLogistics1 = orderLogisticsService.selectById(orderId); - sum=sum.add(new BigDecimal(orderLogistics1.getPayMoney())); + case 4: // 同城小件物流 + case 5: // 跨城小件物流 + OrderLogistics logistics = orderLogisticsService.selectById(orderId); + companyId = logistics.getCompanyId(); break; } + + // 3. 将订单按companyId分组 + if (companyId == null) { + throw new Exception("订单ID=" + orderId + "未找到关联公司"); + } + companyOrdersMap.computeIfAbsent(companyId, k -> new ArrayList<>()).add(jsonObject); } + // 4. 为每个公司单独创建发票 + for (Map.Entry<Integer, List<JSONObject>> entry : companyOrdersMap.entrySet()) { + Integer companyId = entry.getKey(); + List<JSONObject> companyOrders = entry.getValue(); - 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 + // 计算该公司订单的总金额 + BigDecimal sum = new BigDecimal(0); + for (JSONObject orderJson : companyOrders) { + Integer orderType = orderJson.getIntValue("type"); + Integer orderId = orderJson.getIntValue("id"); + switch (orderType) { + case 1: + OrderPrivateCar privateCar = orderPrivateCarService.selectById(orderId); + sum = sum.add(new BigDecimal(privateCar.getPayMoney())); + break; + case 2: + OrderTaxi taxi = orderTaxiService.selectById(orderId); + sum = sum.add(new BigDecimal(taxi.getPayMoney())); + break; + case 3: + OrderCrossCity crossCity = orderCrossCityService.selectById(orderId); + sum = sum.add(new BigDecimal(crossCity.getPayMoney())); + break; + case 4: + case 5: + OrderLogistics logistics = orderLogisticsService.selectById(orderId); + sum = sum.add(new BigDecimal(logistics.getPayMoney())); + break; + } + } - 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://跨城出行 - OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId); - orderCrossCity.setInvoiceId(invoice.getId()); - orderCrossCityService.updateById(orderCrossCity); - break; - case 4://同城小件物流 - OrderLogistics orderLogistics = orderLogisticsService.selectById(orderId); - orderLogistics.setInvoiceId(invoice.getId()); - orderLogisticsService.updateById(orderLogistics); - break; - case 5://跨城小件物流 - OrderLogistics orderLogistics1 = orderLogisticsService.selectById(orderId); - orderLogistics1.setInvoiceId(invoice.getId()); - orderLogisticsService.updateById(orderLogistics1); - break; + // 创建该公司的发票(复制原invoice的基础信息,覆盖companyId和金额) + Invoice companyInvoice = new Invoice(); + // 复制原发票的非金额相关字段(如发票类型、抬头等) + BeanUtils.copyProperties(invoice, companyInvoice, "id", "money", "orderNum", "insertTime", "state", "companyId"); + companyInvoice.setCompanyId(companyId); // 关联公司ID + companyInvoice.setOrderNum(companyOrders.size()); // 该公司的订单数量 + companyInvoice.setMoney(sum.setScale(2, BigDecimal.ROUND_HALF_EVEN).doubleValue()); // 该公司的总金额 + companyInvoice.setUserId(uid); + companyInvoice.setInsertTime(new Date()); + companyInvoice.setState(1); + this.insert(companyInvoice); // 保存发票 + + // 调用第三方开票SDK(按公司发票单独开票) + // TODO: 调用开发票第三方SDK,传入companyInvoice参数 + + // 5. 将该公司的订单关联到对应的发票ID + for (JSONObject orderJson : companyOrders) { + Integer orderType = orderJson.getIntValue("type"); + Integer orderId = orderJson.getIntValue("id"); + + switch (orderType) { + case 1: + OrderPrivateCar privateCar = orderPrivateCarService.selectById(orderId); + privateCar.setInvoiceId(companyInvoice.getId()); + orderPrivateCarService.updateById(privateCar); + break; + case 2: + OrderTaxi taxi = orderTaxiService.selectById(orderId); + taxi.setInvoiceId(companyInvoice.getId()); + orderTaxiService.updateById(taxi); + break; + case 3: + OrderCrossCity crossCity = orderCrossCityService.selectById(orderId); + crossCity.setInvoiceId(companyInvoice.getId()); + orderCrossCityService.updateById(crossCity); + break; + case 4: + case 5: + OrderLogistics logistics = orderLogisticsService.selectById(orderId); + logistics.setInvoiceId(companyInvoice.getId()); + orderLogisticsService.updateById(logistics); + break; + } } } -- Gitblit v1.7.1