package com.stylefeng.guns.modular.system.service.impl;
|
|
import com.baomidou.mybatisplus.mapper.EntityWrapper;
|
import com.stylefeng.guns.core.base.tips.SuccessTip;
|
import com.stylefeng.guns.core.shiro.ShiroKit;
|
import com.stylefeng.guns.modular.system.controller.resp.TBranchOfficeResp;
|
import com.stylefeng.guns.modular.system.dao.*;
|
import com.stylefeng.guns.modular.system.enums.StatusEnum;
|
import com.stylefeng.guns.modular.system.model.*;
|
import com.stylefeng.guns.modular.system.service.ITBranchOfficeService;
|
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
|
import com.stylefeng.guns.modular.system.service.ITRegionService;
|
import org.apache.poi.hdf.extractor.TC;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.ui.Model;
|
import org.springframework.util.CollectionUtils;
|
import org.springframework.util.StringUtils;
|
|
import java.math.BigDecimal;
|
import java.text.SimpleDateFormat;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
import java.util.Objects;
|
import java.util.stream.Collectors;
|
import java.util.stream.Stream;
|
|
/**
|
* <p>
|
* 分公司 服务实现类
|
* </p>
|
*
|
* @author stylefeng
|
* @since 2023-02-21
|
*/
|
@Service
|
public class TBranchOfficeServiceImpl extends ServiceImpl<TBranchOfficeMapper, TBranchOffice> implements ITBranchOfficeService {
|
|
@Autowired
|
private TBranchOfficeMapper tBranchOfficeMapper;
|
|
@Autowired
|
private TCouponMapper tCouponMapper;
|
@Autowired
|
private TUserToCouponMapper tUserToCouponMapper;
|
|
@Autowired
|
private TOrderMapper tOrderMapper;
|
@Autowired
|
private TDriverMapper tDriverMapper;
|
@Autowired
|
private ITRegionService tRegionService;
|
@Autowired
|
private TAgentMapper tAgentMapper;
|
|
@Override
|
public void tBranchOfficeDetail(Integer tBranchOfficeId, Model model) {
|
// 分公司信息
|
TBranchOffice tBranchOffice = tBranchOfficeMapper.selectById(tBranchOfficeId);
|
model.addAttribute("principal",tBranchOffice.getPrincipal());
|
model.addAttribute("createTime",new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(tBranchOffice.getCreateTime()));
|
model.addAttribute("email",tBranchOffice.getEmail());
|
model.addAttribute("area",tBranchOffice.getProvinceName()+tBranchOffice.getCityName()+tBranchOffice.getDistrictName());
|
|
// 统计时间
|
model.addAttribute("startToEndTime",new SimpleDateFormat("yyyy.MM.dd").format(tBranchOffice.getCreateTime())+"-"+
|
new SimpleDateFormat("yyyy.MM.dd").format(new Date()));
|
|
// 订单数据
|
List<TOrder> orders = tOrderMapper.selectList(new EntityWrapper<TOrder>().eq("branchOfficeId", tBranchOfficeId));
|
model.addAttribute("orderCount",orders.size());// 订单数量
|
List<TOrder> effectiveOrder = orders.stream().filter(order -> order.getPayMoney().compareTo(new BigDecimal("15")) > 0).collect(Collectors.toList());
|
model.addAttribute("effectiveOrderCount",effectiveOrder.size());// 有效订单
|
|
// 优惠券数据,,,通过订单找到该区域的下单人,找出优惠券信息
|
List<Integer> userIds = orders.stream().map(TOrder::getUserId).collect(Collectors.toList());
|
List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().eq("objectId", tBranchOfficeId)
|
.eq("roleType",2));
|
// 优惠券有效数量
|
int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
|
// 过期数量
|
int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();
|
// 总数量
|
int totalCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
|
// 已使用优惠券;总数量减去有效数量
|
model.addAttribute("usedCount",totalCount-validCount-expireCount);
|
|
// 已发放优惠券
|
model.addAttribute("totalCount",totalCount);
|
|
BigDecimal orderPriceCount = new BigDecimal("0");
|
|
// 累计优惠券金额
|
for (TUserToCoupon tUserToCoupon : tUserToCoupons) {
|
TCoupon tCoupon = tCouponMapper.selectById(tUserToCoupon.getCouponId());
|
BigDecimal price = tCoupon.getCouponPreferentialAmount().multiply(new BigDecimal(tUserToCoupon.getCouponTotal()));
|
orderPriceCount = orderPriceCount.add(price);
|
}
|
model.addAttribute("orderPriceCount",orderPriceCount);
|
// 司机数量
|
Integer driverCount = tDriverMapper.selectCount(new EntityWrapper<TDriver>().eq("branchOfficeId", tBranchOfficeId));
|
model.addAttribute("driverCount",driverCount);
|
}
|
|
@Override
|
public List<TBranchOfficeResp> getPageList(String branchOfficeName, String principal, String principalPhone, Integer operatingBusiness, Integer status) {
|
EntityWrapper<TBranchOffice> wrapper = new EntityWrapper<>();
|
// 分公司名称
|
if(StringUtils.hasLength(branchOfficeName)){
|
wrapper.like("branchOfficeName",branchOfficeName);
|
}
|
// 负责人
|
if(StringUtils.hasLength(principal)){
|
wrapper.like("principal",principal);
|
}
|
// 负责人电话
|
if(StringUtils.hasLength(principalPhone)){
|
wrapper.like("principalPhone",principalPhone);
|
}
|
// 经营业务
|
if(Objects.nonNull(operatingBusiness)){
|
wrapper.eq("operatingBusiness",operatingBusiness);
|
}
|
// 状态
|
if(Objects.nonNull(status)){
|
wrapper.eq("status",status);
|
}
|
wrapper.ne("status", StatusEnum.DELETE.getCode());
|
wrapper.orderBy("createTime",false);
|
// 判断代理商 分公司
|
Integer roleType = Objects.requireNonNull(ShiroKit.getUser()).getRoleType();
|
Integer objectId = Objects.requireNonNull(ShiroKit.getUser()).getObjectId();
|
if(2 == roleType){
|
// 分公司
|
wrapper.eq("id",objectId);
|
}
|
if(3 == roleType){
|
// 代理商
|
wrapper.eq("agentId",objectId);
|
}
|
List<TBranchOffice> tBranchOffices = tBranchOfficeMapper.selectList(wrapper);
|
List<TBranchOfficeResp> tBranchOfficeRespList = new ArrayList<>(tBranchOffices.size());
|
for (TBranchOffice tBranchOffice : tBranchOffices) {
|
TBranchOfficeResp tBranchOfficeResp = new TBranchOfficeResp();
|
BeanUtils.copyProperties(tBranchOffice,tBranchOfficeResp);
|
tBranchOfficeRespList.add(tBranchOfficeResp);
|
}
|
return tBranchOfficeRespList;
|
}
|
|
@Override
|
public void queryOtherInfo(List<TBranchOfficeResp> tBranchOfficeRespList) {
|
List<TOrder> orders = tOrderMapper.selectList(new EntityWrapper<TOrder>());
|
|
|
for (TBranchOfficeResp tBranchOfficeResp : tBranchOfficeRespList) {
|
|
List<TOrder> orderList = orders.stream().filter(t -> tBranchOfficeResp.getId().equals(t.getBranchOfficeId())).collect(Collectors.toList());
|
|
List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().eq("objectId", tBranchOfficeResp.getId())
|
.eq("roleType",2));
|
|
if(!CollectionUtils.isEmpty(orderList)){
|
|
// 订单数据
|
tBranchOfficeResp.setOrderCount(orderList.size());// 订单数量
|
List<TOrder> effectiveOrder = orderList.stream().filter(order -> Objects.nonNull(order.getPayMoney()) && order.getPayMoney().compareTo(new BigDecimal("15")) > 0).collect(Collectors.toList());
|
tBranchOfficeResp.setEffectiveOrderCount(effectiveOrder.size());// 有效订单
|
|
// 优惠券数据,,,通过订单找到该区域的下单人,找出优惠券信息
|
List<Integer> userIds = orderList.stream().map(TOrder::getUserId).collect(Collectors.toList());
|
}
|
|
// 优惠券有效数量
|
int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();
|
// 过期数量
|
int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();
|
// 总数量
|
int totalCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum();
|
// 已使用优惠券;总数量减去有效数量
|
tBranchOfficeResp.setUsedCount(totalCount-validCount-expireCount);
|
|
// 已发放优惠券
|
tBranchOfficeResp.setTotalCount(totalCount);
|
|
BigDecimal orderPriceCount = new BigDecimal("0");
|
// 累计优惠券金额
|
for (TUserToCoupon tUserToCoupon : tUserToCoupons) {
|
TCoupon tCoupon = tCouponMapper.selectById(tUserToCoupon.getCouponId());
|
BigDecimal price = tCoupon.getCouponPreferentialAmount().multiply(new BigDecimal(tUserToCoupon.getCouponTotal()));
|
orderPriceCount = orderPriceCount.add(price);
|
}
|
tBranchOfficeResp.setOrderPriceCount(orderPriceCount);
|
|
// 司机数量
|
Integer driverCount = tDriverMapper.selectCount(new EntityWrapper<TDriver>().eq("branchOfficeId", tBranchOfficeResp.getId()));
|
tBranchOfficeResp.setDriverCount(driverCount);
|
}
|
|
}
|
|
@Override
|
public Object addOrUpdate(TBranchOffice tBranchOffice) {
|
// 对省市区做处理
|
String[] split = tBranchOffice.getAreaId().split("/");
|
// 查询省市
|
// 黑龙江省/大兴安岭地区
|
// 702/852
|
TRegion province = tRegionService.selectById(split[0]);
|
tBranchOffice.setProvinceName(province.getName());
|
tBranchOffice.setProvinceCode(province.getCode());
|
|
TRegion city = tRegionService.selectById(split[1]);
|
if(Objects.isNull(city)){
|
city = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("name",split[1]));
|
}
|
tBranchOffice.setCityName(city.getName());
|
tBranchOffice.setCityCode(city.getCode());
|
|
if(split.length>2){
|
TRegion area = tRegionService.selectById(split[2]);
|
if(Objects.isNull(area)){
|
area = tRegionService.selectOne(new EntityWrapper<TRegion>().eq("name",split[2]));
|
}
|
tBranchOffice.setDistrictName(area.getName());
|
tBranchOffice.setDistrictCode(area.getCode());
|
}else {
|
tBranchOffice.setDistrictName("");
|
tBranchOffice.setDistrictCode("");
|
}
|
|
// 通过省市查询代理商
|
List<TAgent> tAgent = tAgentMapper.selectList(new EntityWrapper<TAgent>().eq("provinceCode", province.getCode())
|
.eq("cityCode", city.getCode())
|
.eq("status", 1)
|
.last("LIMIT 1"));
|
if(!CollectionUtils.isEmpty(tAgent)){
|
tBranchOffice.setAgentId(tAgent.get(0).getId());
|
}else {
|
return new SuccessTip(500, "该区域代理商被冻结或不存在");
|
}
|
return null;
|
}
|
}
|