分账表格优化
This commit is contained in:
parent
84bb5727e9
commit
c321b41ad7
@ -3,7 +3,7 @@ package com.ycwl.basic.profitsharing.controller;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordReqQuery;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordRespVO;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordTableRespVo;
|
||||
import com.ycwl.basic.profitsharing.service.ProfitSharingRecordService;
|
||||
import com.ycwl.basic.utils.ApiResponse;
|
||||
import io.swagger.annotations.Api;
|
||||
@ -11,8 +11,6 @@ import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/api/profitSharingRecord/v1")
|
||||
@Api(tags = "利润分成记录相关接口")
|
||||
@ -23,11 +21,9 @@ public class ProfitSharingRecordController {
|
||||
|
||||
@ApiOperation("根据景区ID查询利润分成记录,支持分页,按创建时间倒序")
|
||||
@PostMapping("/page")
|
||||
public ApiResponse<PageInfo<ProfitSharingRecordRespVO>> queryPage(@RequestBody ProfitSharingRecordReqQuery req) {
|
||||
PageHelper.startPage(req.getPageNum(), req.getPageSize(), "create_time desc");
|
||||
List<ProfitSharingRecordRespVO> records = profitSharingRecordService.list(req);
|
||||
PageInfo<ProfitSharingRecordRespVO> pageInfo = new PageInfo<>(records);
|
||||
return ApiResponse.success(pageInfo);
|
||||
public ApiResponse<ProfitSharingRecordTableRespVo> queryPage(@RequestBody ProfitSharingRecordReqQuery req) {
|
||||
ProfitSharingRecordTableRespVo records = profitSharingRecordService.list(req);
|
||||
return ApiResponse.success(records);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -0,0 +1,11 @@
|
||||
package com.ycwl.basic.profitsharing.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class ProfitSharingRecordGroupVO {
|
||||
private Long orderId;
|
||||
private Date createTime;
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.ycwl.basic.profitsharing.dto;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class ProfitSharingRecordTableRespVo {
|
||||
private List<String> columns;
|
||||
private List<ProfitSharingTableRecordVO> list;
|
||||
private PageInfo page;
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.ycwl.basic.profitsharing.dto;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
@Data
|
||||
public class ProfitSharingTableRecordVO {
|
||||
|
||||
@ApiModelProperty(value = "景区ID")
|
||||
private Long scenicId;
|
||||
private String scenicName;
|
||||
|
||||
@ApiModelProperty(value = "订单ID")
|
||||
private Long orderId;
|
||||
|
||||
@ApiModelProperty(value = "订单金额")
|
||||
private BigDecimal orderAmount;
|
||||
|
||||
@ApiModelProperty(value = "创建时间")
|
||||
private Date createTime;
|
||||
|
||||
private Map<String, ProfitSharingRecordRespVO> records;
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
package com.ycwl.basic.profitsharing.mapper;
|
||||
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordGroupVO;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordReqQuery;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordRespVO;
|
||||
import com.ycwl.basic.profitsharing.entity.ProfitSharingRecord;
|
||||
@ -13,6 +14,10 @@ import java.util.List;
|
||||
public interface ProfitSharingRecordMapper {
|
||||
List<ProfitSharingRecordRespVO> list(ProfitSharingRecordReqQuery req);
|
||||
|
||||
List<ProfitSharingRecordGroupVO> listGroupByOrderId(ProfitSharingRecordReqQuery req);
|
||||
|
||||
List<ProfitSharingRecordRespVO> listByOrderIds(List<Long> orderIds);
|
||||
|
||||
void batchInsert(List<ProfitSharingRecord> records);
|
||||
|
||||
void deleteByScenicIdAndOrderId(Long scenicId, Long orderId, String reason);
|
||||
|
@ -1,9 +1,8 @@
|
||||
package com.ycwl.basic.profitsharing.service;
|
||||
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordReqQuery;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordRespVO;
|
||||
import java.util.List;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordTableRespVo;
|
||||
|
||||
public interface ProfitSharingRecordService {
|
||||
List<ProfitSharingRecordRespVO> list(ProfitSharingRecordReqQuery req);
|
||||
ProfitSharingRecordTableRespVo list(ProfitSharingRecordReqQuery req);
|
||||
}
|
@ -1,23 +1,83 @@
|
||||
package com.ycwl.basic.profitsharing.service.impl;
|
||||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordGroupVO;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordReqQuery;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordRespVO;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingRecordTableRespVo;
|
||||
import com.ycwl.basic.profitsharing.dto.ProfitSharingTableRecordVO;
|
||||
import com.ycwl.basic.profitsharing.entity.ProfitSharingConfig;
|
||||
import com.ycwl.basic.profitsharing.entity.ProfitSharingUser;
|
||||
import com.ycwl.basic.profitsharing.mapper.ProfitSharingRecordMapper;
|
||||
import com.ycwl.basic.profitsharing.repository.ProfitSharingRepository;
|
||||
import com.ycwl.basic.profitsharing.service.ProfitSharingRecordService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
public class ProfitSharingRecordServiceImpl implements ProfitSharingRecordService {
|
||||
|
||||
@Autowired
|
||||
private ProfitSharingRecordMapper profitSharingRecordMapper;
|
||||
@Autowired
|
||||
private ProfitSharingRepository profitSharingRepository;
|
||||
|
||||
|
||||
@Override
|
||||
public List<ProfitSharingRecordRespVO> list(ProfitSharingRecordReqQuery req) {
|
||||
return profitSharingRecordMapper.list(req);
|
||||
public ProfitSharingRecordTableRespVo list(ProfitSharingRecordReqQuery req) {
|
||||
ProfitSharingRecordTableRespVo respVo = new ProfitSharingRecordTableRespVo();
|
||||
PageHelper.startPage(req.getPageNum(), req.getPageSize(), "create_time desc");
|
||||
List<ProfitSharingRecordGroupVO> list = profitSharingRecordMapper.listGroupByOrderId(req);
|
||||
PageInfo pageInfo = new PageInfo<>(list);
|
||||
respVo.setPage(pageInfo);
|
||||
if (list.isEmpty()) {
|
||||
return respVo;
|
||||
}
|
||||
List<ProfitSharingRecordRespVO> recordList = profitSharingRecordMapper.listByOrderIds(list.stream().map(ProfitSharingRecordGroupVO::getOrderId).collect(Collectors.toList()));
|
||||
List<Long> scenicList = recordList.stream().map(ProfitSharingRecordRespVO::getScenicId).distinct().collect(Collectors.toList());
|
||||
List<ProfitSharingConfig> scenicConfig = scenicList.stream()
|
||||
.map(scenicId -> profitSharingRepository.getScenicConfig(scenicId))
|
||||
.filter(item -> !Objects.isNull(item) && !Objects.isNull(item.getUsers()))
|
||||
.filter(item -> !item.getUsers().isEmpty())
|
||||
.collect(Collectors.toList());
|
||||
List<String> columnName = scenicConfig.stream()
|
||||
.flatMap(item -> item.getUsers().stream())
|
||||
.map(ProfitSharingUser::getName)
|
||||
.distinct().collect(Collectors.toList());
|
||||
respVo.setColumns(columnName);
|
||||
List<ProfitSharingTableRecordVO> data = list.stream()
|
||||
.collect(Collectors.groupingBy(ProfitSharingRecordGroupVO::getOrderId))
|
||||
.keySet()
|
||||
.stream()
|
||||
.map(profitSharingRecordGroupVOS -> {
|
||||
return recordList.stream().filter(item -> item.getOrderId().equals(profitSharingRecordGroupVOS)).collect(Collectors.toList());
|
||||
})
|
||||
.map(value -> {
|
||||
Map<String, ProfitSharingRecordRespVO> map = new HashMap<>();
|
||||
value.forEach(item -> {
|
||||
map.put(item.getUserName(), item);
|
||||
});
|
||||
ProfitSharingTableRecordVO vo = new ProfitSharingTableRecordVO();
|
||||
ProfitSharingRecordRespVO recordRespVO = value.get(0);
|
||||
vo.setOrderId(recordRespVO.getOrderId());
|
||||
vo.setScenicId(recordRespVO.getScenicId());
|
||||
vo.setScenicName(recordRespVO.getScenicName());
|
||||
vo.setCreateTime(recordRespVO.getCreateTime());
|
||||
vo.setOrderAmount(recordRespVO.getOrderAmount());
|
||||
vo.setRecords(map);
|
||||
return vo;
|
||||
})
|
||||
.sorted((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime()))
|
||||
.collect(Collectors.toList());
|
||||
respVo.setList(data);
|
||||
return respVo;
|
||||
}
|
||||
}
|
@ -39,4 +39,39 @@
|
||||
</where>
|
||||
ORDER BY r.create_time desc
|
||||
</select>
|
||||
<select id="listGroupByOrderId" resultType="com.ycwl.basic.profitsharing.dto.ProfitSharingRecordGroupVO">
|
||||
SELECT order_id, min(create_time) as create_time
|
||||
FROM profit_sharing_record r
|
||||
<where>
|
||||
<if test="withDeleted != true">
|
||||
delete_time is null
|
||||
</if>
|
||||
<if test="scenicId != null">
|
||||
AND r.scenic_id = #{scenicId}
|
||||
</if>
|
||||
<if test="status != null">
|
||||
AND r.status = #{status}
|
||||
</if>
|
||||
<if test="rateMode != null">
|
||||
AND r.rate_mode = #{rateMode}
|
||||
</if>
|
||||
<if test="startTime != null">
|
||||
AND r.create_time >= #{startTime}
|
||||
</if>
|
||||
<if test="endTime != null">
|
||||
AND r.create_time <= #{endTime}
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY order_id
|
||||
</select>
|
||||
<select id="listByOrderIds" resultType="com.ycwl.basic.profitsharing.dto.ProfitSharingRecordRespVO">
|
||||
SELECT r.*, s.name as scenic_name
|
||||
FROM profit_sharing_record r
|
||||
LEFT JOIN scenic s ON s.id = r.scenic_id
|
||||
WHERE r.order_id IN
|
||||
<foreach collection="orderIds" item="orderId" open="(" close=")" separator=",">
|
||||
#{orderId}
|
||||
</foreach>
|
||||
ORDER BY r.create_time desc
|
||||
</select>
|
||||
</mapper>
|
Loading…
x
Reference in New Issue
Block a user