记得上下班打卡 | git大法好,push需谨慎

Commit bb3821ca authored by GaoHu's avatar GaoHu

优化流程

parent dd79adf7
......@@ -49,4 +49,6 @@ public class UserData {
@ApiModelProperty(value = "打款状态", example = "")
private Integer priceStatus;
}
......@@ -2,6 +2,7 @@ package com.liquidnet.client.admin.zhengzai.smile.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.Page;
......@@ -25,6 +26,7 @@ import com.liquidnet.service.smile.entity.SmileAgent;
import com.liquidnet.service.smile.entity.SmilePrice;
import com.liquidnet.service.smile.entity.SmileSchool;
import com.liquidnet.service.smile.entity.SmileUser;
import com.liquidnet.service.smile.entity.dto.ShowBaseVoDto;
import com.liquidnet.service.smile.mapper.SmileAgentMapper;
import com.liquidnet.service.smile.mapper.SmilePriceMapper;
import com.liquidnet.service.smile.mapper.SmileSchoolMapper;
......@@ -276,7 +278,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
}
saleDataVo.setTitle(kylinPerformanceVo.getTitle());
//map 票提id,票提信息
Map<String, SmileAgent> map = getSmileAgentMap(smileAgents);
Map<String, SmileAgent> tidMap = getSmileAgentMap(smileAgents);
List<String> ticketsIdList = smileAgents.stream().map(SmileAgent::getTicketId).collect(Collectors.toList());
......@@ -284,18 +286,71 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
//根据票提IDs查询票信息
List<TicketAndStatusDao> ticketAndStatusDaoList = kylinTicketsMapper.selectTicketsByIds(ticketsIdList);
for (TicketAndStatusDao ticketAndStatusDao : ticketAndStatusDaoList) {
SmileAgent smileAgent = map.get(ticketAndStatusDao.getTicketsId());
SmileAgent smileAgent = tidMap.get(ticketAndStatusDao.getTicketsId());
ShowAgentVo showAgentVo = getShowAgentVo(performancesId, ticketAndStatusDao, smileAgent);
showAgentVoList.add(showAgentVo);
}
//根据演出id查询出所有代理人的uid
List<SmileUser> smileUsers = smileUserMapper.getAllUidByPerId(performancesId);
List<ShowBaseVoDto> showBaseVoList = smileAgentMapper.selectMapByPerId(performancesId);
Map<String, List<ShowBaseVoDto>> stringListMap = showBaseVoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getAgentId));
List<UserData> userDataList = new ArrayList<>(stringListMap.size());
for (Map.Entry<String, List<ShowBaseVoDto>> showMap : stringListMap.entrySet()) {
UserData userData = new UserData();
List<UserDataAgentVo> userDataAgentVos = new ArrayList<>();
List<ShowBaseVoDto> showBaseVoDtoList = showMap.getValue();
Map<String, List<ShowBaseVoDto>> tidMapByUid = showBaseVoDtoList.stream().collect(Collectors.groupingBy(ShowBaseVoDto::getTid));
for (TicketAndStatusDao smileAgent : ticketAndStatusDaoList){
UserDataAgentVo userDataAgentVo = new UserDataAgentVo();
ShowBaseVoDto showBaseVoDto = tidMapByUid.get(smileAgent.getTicketsId()).get(0);
if (!StringUtils.isEmpty(stringListMap)){
userDataAgentVo.setTicketsId(showBaseVoDto.getTid());
userDataAgentVo.setTicketName(showBaseVoDto.getTitle());
userDataAgentVo.setNumber(showBaseVoDto.getNumber());
userDataAgentVo.setPrice(showBaseVoDto.getPrice());
userDataAgentVo.setAgent(showBaseVoDto.getUse());
userDataAgentVo.setCommission(showBaseVoDto.getTotalPrice().setScale(2, RoundingMode.HALF_UP));
}else {
userDataAgentVo.setTicketsId(smileAgent.getTicketsId());
userDataAgentVo.setTicketName(smileAgent.getTitle());
userDataAgentVo.setNumber(new BigDecimal(0));
userDataAgentVo.setPrice(new BigDecimal(0));
userDataAgentVo.setAgent(showBaseVoDto.getType() == 1 ? tidMap.get(smileAgent.getTicketsId()).getTotalCarry() : tidMap.get(smileAgent.getTicketsId()).getOrdCarry());
userDataAgentVo.setCommission(new BigDecimal("0.00"));
log.debug("saleData:演出id:{},用户id:{},票提id:{}", performancesId, showBaseVoDto.getAgentId(), smileAgent.getTicketsId());
}
//判断是否为总代
if (showBaseVoDto.getType() == 1) {
//是总代 //在原有的数据上新增加该用户下所有普代的提成
Map orgMap = smileAgentMapper.getUserOrgByPerIdAndUidAndAgentMaster(performancesId, showBaseVoDto.getAgentId(), smileAgent.getTicketsId());
if (orgMap != null) {
userDataAgentVo.setCommission((userDataAgentVo.getCommission().add((BigDecimal) orgMap.get("totalPrice"))).setScale(2, RoundingMode.HALF_UP));
} else {
log.debug("saleData:演出id:{},用户id:{},票提id:{}", performancesId, showBaseVoDto.getAgentId(), smileAgent.getTicketsId());
}
}
userDataAgentVos.add(userDataAgentVo);
}
userData.setUid(showBaseVoDtoList.get(0).getAgentId());
userData.setUsername(showBaseVoDtoList.get(0).getName());
userData.setCityName(showBaseVoDtoList.get(0).getCity());
userData.setType(showBaseVoDtoList.get(0).getType());
userData.setDataAgentVos(userDataAgentVos);
//设置打款状态
userData.setPriceStatus(smileRedisUtils.getShowPriceUid(performancesId, showBaseVoDtoList.get(0).getAgentId()));
userDataList.add(userData);
}
/*List<SmileUser> smileUsers = smileUserMapper.getAllUidByPerId(performancesId);
List<UserData> userDataList = new ArrayList<>(smileUsers.size());
for (SmileUser smileUser : smileUsers) {
UserData userData = getUserData(performancesId, smileUser, map, ticketAndStatusDaoList);
UserData userData = getUserData(performancesId, smileUser, tidMap, ticketAndStatusDaoList);
userDataList.add(userData);
}
}*/
saleDataVo.setUserDataList(userDataList);
saleDataVo.setShowAgentVoList(showAgentVoList);
return saleDataVo;
......@@ -339,7 +394,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
return AjaxResult.success(showIds);
}
private UserData getUserData(String performancesId, SmileUser smileUser, Map<String, SmileAgent> map, List<TicketAndStatusDao> smileAgentList) {
private UserData getUserData(String performancesId, SmileUser smileUser, Map<String, SmileAgent> tidMap, List<TicketAndStatusDao> smileAgentList) {
UserData userData = new UserData();
//个人用户的演出数据详情
//便利票种id 查询用户的销售数据信息
......@@ -359,7 +414,7 @@ public class SmileShowServiceImpl extends ServiceImpl<SmileSchoolMapper, SmileSc
userDataAgentVo.setTicketName(smileAgent.getTitle());
userDataAgentVo.setNumber(new BigDecimal(0));
userDataAgentVo.setPrice(new BigDecimal(0));
userDataAgentVo.setAgent(smileUser.getType() == 1 ? map.get(smileAgent.getTicketsId()).getTotalCarry() : map.get(smileAgent.getTicketsId()).getOrdCarry());
userDataAgentVo.setAgent(smileUser.getType() == 1 ? tidMap.get(smileAgent.getTicketsId()).getTotalCarry() : tidMap.get(smileAgent.getTicketsId()).getOrdCarry());
userDataAgentVo.setCommission(new BigDecimal("0.00"));
log.debug("saleData:演出id:{},用户id:{},票提id:{}", performancesId, smileUser.getUid(), smileAgent.getTicketsId());
}
......
package com.liquidnet.service.smile.entity.dto;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* @author TT
*/
@Data
public class ShowBaseVoDto implements Serializable, Cloneable{
/**
* 名字
*/
private String name;
/**
* 城市
*/
private String city;
/**
* agentId
*/
private String agentId;
/**
* 票提id
*/
private String tid;
/**
* 票提名称
*/
private String title;
/**
* 单价
*/
private BigDecimal price;
/**
* 票提
*/
private BigDecimal use;
/**
* 类型
*/
private int type;
/**
* 张数
*/
private BigDecimal number;
/**
*提成
*/
private BigDecimal totalPrice;
private static final ShowBaseVoDto obj = new ShowBaseVoDto();
public static ShowBaseVoDto getNew() {
try {
return (ShowBaseVoDto) obj.clone();
} catch (CloneNotSupportedException e) {
return new ShowBaseVoDto();
}
}
}
......@@ -4,6 +4,7 @@ package com.liquidnet.service.smile.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.liquidnet.service.smile.entity.SmileAgent;
import com.liquidnet.service.smile.entity.dao.SmileAgentDao;
import com.liquidnet.service.smile.entity.dto.ShowBaseVoDto;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
......@@ -33,4 +34,6 @@ public interface SmileAgentMapper extends BaseMapper<SmileAgent> {
List<SmileAgent> selectAgentCarryGtZeroByPerId(@Param("performancesId")String performancesId);
int selectCountPerId();
List<ShowBaseVoDto> selectMapByPerId(@Param("performancesId") String performancesId);
}
......@@ -121,4 +121,63 @@
SELECT COUNT(sa.id) FROM (SELECT id FROM smile_agent WHERE del_tag = 0 GROUP BY performance_id) sa;
</select>
<select id="selectMapByPerId" resultType="com.liquidnet.service.smile.entity.dto.ShowBaseVoDto">
SELECT kk.name,
kk.city,
kk.agentId,
kk.tid,
kk.title,
kk.price,
kk.USE,
kk.type,
SUM(kk.number - kk.refund_number) number,
SUM(
kk.price * kk.`use` * (kk.number - kk.refund_number)) totalPrice
FROM (
SELECT kote.mid,
kote.order_id,
kote.ticket_id tid,
kt.title,
kote.user_id,
kote.is_payment,
kote.STATUS,
kot.number,
kot.refund_number,
kot.price,
kotr.agent_id agentId,
kotr.agent_id_master,
kotr.agent_distributions `use`,
kotr.agent_distributions_master,
su.type,
su.name,
su.city
FROM kylin_order_ticket_entities kote
LEFT JOIN kylin_order_tickets kot ON kote.order_id = kot.order_tickets_id
LEFT JOIN kylin_order_ticket_relations kotr ON kotr.order_id = kot.order_tickets_id
LEFT JOIN kylin_order_ticket_status kots ON kots.order_id = kotr.order_id
LEFT JOIN smile_user su ON su.uid = kotr.agent_id
LEFT JOIN kylin_tickets kt ON kote.ticket_id = kt.tickets_id
WHERE kote.performance_id = #{performancesId}
AND kote.ticket_id IN (SELECT sa.ticket_id
FROM smile_agent sa
WHERE sa.del_tag = 0 AND sa.performance_id = #{performancesId})
AND kotr.agent_id IN (
SELECT su.uid
FROM smile_user AS su
INNER JOIN (SELECT mid, agent_id, agent_id_master
FROM kylin_order_ticket_relations
WHERE performance_id = #{performancesId}
AND agent_id != 0
GROUP BY agent_id) u ON u.agent_id = su.uid
OR u.agent_id_master = su.uid
GROUP BY su.uid
)
AND kotr.agent_status = 1
AND kots.pay_status = 1
GROUP BY kote.order_id
) kk
GROUP BY agentId,
tid
</select>
</mapper>
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