Merge remote-tracking branch 'origin/master'
# Conflicts:
# UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/api/OrderController.java
| | |
| | | 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; |
| | |
| | | |
| | | @Autowired |
| | | private ShiroExtUtil shiroExtUtil; |
| | | |
| | | @Autowired |
| | | private ITCompanyService tCompanyService; |
| | | |
| | | /** |
| | | * 跳转到开发票列表首页 |
| | |
| | | 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)) { |
| | |
| | | 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); |
| | | } |
| | |
| | | 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; |
| | |
| | | @Autowired |
| | | private ShiroExtUtil shiroExtUtil; |
| | | |
| | | |
| | | @Autowired |
| | | private ITOrderPrivateCarService tOrderPrivateCarService; |
| | | /** |
| | | * 跳转到首页 |
| | | */ |
| | |
| | | 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"; |
| | | } |
| | | /** |
| | | * 跳转到修改 |
| | | */ |
| | |
| | | @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()); |
| | |
| | | String orderNum, |
| | | String userName, |
| | | String name, |
| | | String driverName){ |
| | | String driverName,Integer driverId){ |
| | | String beginTime = null; |
| | | String endTime = null; |
| | | if (SinataUtil.isNotEmpty(insertTime)) { |
| | |
| | | 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); |
| | | } |
| | | |
| | |
| | | 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; |
| | |
| | | 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); |
| | | |
| | | |
| | | // 表格数据【封装】 |
| | |
| | | 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); |
| | |
| | | @Param("email") String email, |
| | | @Param("name") String name, |
| | | @Param("type") Integer type, |
| | | @Param("state") Integer state); |
| | | @Param("state") Integer state, |
| | | @Param("companyId") Integer companyId); |
| | | } |
| | |
| | | |
| | | 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); |
| | | } |
| | |
| | | <if test="state != null and state != ''"> |
| | | and o.state = #{state} |
| | | </if> |
| | | and o.companyId = #{companyId} |
| | | </where> |
| | | order by o.id desc |
| | | </select> |
| | |
| | | |
| | | <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 |
| | |
| | | <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 |
| | |
| | | <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 |
| | |
| | | </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 |
| | | |
| | |
| | | <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> |
| | |
| | | </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} |
| | |
| | | <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> |
| | |
| | | @Param("email") String email, |
| | | @Param("name") String name, |
| | | @Param("type") Integer type, |
| | | @Param("state") Integer state); |
| | | @Param("state") Integer state, |
| | | @Param("companyId") Integer companyId); |
| | | } |
| | |
| | | |
| | | 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); |
| | | } |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | @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); |
| | | } |
| | | } |
New file |
| | |
| | | @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> |
| | | @} |
| | |
| | | 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; |
| | | } |
| | | |
| | |
| | | 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; |
| | | }; |
| | |
| | | var table = new BSTable(TDriverPromotionActivity.id, "/tDriverPromotionActivity/list1", defaultColunms); |
| | | table.setPaginationType("client"); |
| | | TDriverPromotionActivity.table = table.init(); |
| | | TDriverPromotionActivity.search() |
| | | }); |
New file |
| | |
| | | /** |
| | | * 快车订单管理初始化 |
| | | */ |
| | | 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(); |
| | | }); |
| | |
| | | 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: |
| | |
| | | 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(); |
| | |
| | | */ |
| | | 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; |
| | |
| | | @TableField("insertTime") |
| | | private Date insertTime; |
| | | |
| | | @TableField("companyId") |
| | | private Integer companyId; |
| | | |
| | | public Integer getId() { |
| | | return id; |
| | | } |
| | |
| | | this.insertTime = insertTime; |
| | | } |
| | | |
| | | public Integer getCompanyId() { |
| | | return companyId; |
| | | } |
| | | public void setCompanyId(Integer companyId) { |
| | | this.companyId = companyId; |
| | | } |
| | | |
| | | @Override |
| | | public String toString() { |
| | | return "Invoice{" + |
| | |
| | | ", userId=" + userId + |
| | | ", state=" + state + |
| | | ", insertTime=" + insertTime + |
| | | ", companyId=" + companyId + |
| | | '}'; |
| | | } |
| | | } |
| | |
| | | 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 |
| | |
| | | @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; |
| | | } |
| | | } |
| | | } |
| | | |