|
@@ -2,6 +2,7 @@ package com.xy.service;
|
|
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.xy.annotation.Lock;
|
|
@@ -10,6 +11,7 @@ import com.xy.collections.map.JConcurrentHashMap;
|
|
|
import com.xy.collections.map.JHashMap;
|
|
|
import com.xy.collections.map.JMap;
|
|
|
import com.xy.dto.DeviceDataDto;
|
|
|
+import com.xy.dto.DeviceInfoDto;
|
|
|
import com.xy.entity.DeviceData;
|
|
|
import com.xy.entity.SysDictRedis;
|
|
|
import com.xy.mapper.DeviceDataMapper;
|
|
@@ -19,13 +21,16 @@ import com.xy.utils.enums.DictSonEnum;
|
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
+import org.springframework.context.annotation.Lazy;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.bind.annotation.PostMapping;
|
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
|
|
|
|
+import javax.validation.Valid;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static com.xy.utils.Beans.copy;
|
|
|
import static com.xy.utils.PlusBeans.toIPage;
|
|
@@ -41,10 +46,74 @@ import static com.xy.utils.PlusBeans.toPageBean;
|
|
|
* @since 2023-01-11
|
|
|
*/
|
|
|
@Service
|
|
|
-@AllArgsConstructor
|
|
|
+@AllArgsConstructor(onConstructor_ = @Lazy)
|
|
|
@Api(tags = "设备统计数据")
|
|
|
public class DeviceDataServiceImpl extends ServiceImpl<DeviceDataMapper, DeviceData> implements DeviceDataService {
|
|
|
|
|
|
+ private final DeviceInfoServiceImpl deviceInfoService;
|
|
|
+ @PostMapping("sumPage")
|
|
|
+ @ApiOperation("设备销售统计")
|
|
|
+ public R<PageBean<DeviceDataDto.SumPageVo>> sumPage(@RequestBody @Valid DeviceDataDto.SumPageDto dto) {
|
|
|
+ PageBean pageBean = dto.getPage();
|
|
|
+ String salesCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getSalesCount));
|
|
|
+ String salesMoney = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getSalesMoney));
|
|
|
+ String goodsCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getGoodsCount));
|
|
|
+ String refundMoney = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getRefundMoney));
|
|
|
+ String refundCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getRefundCount));
|
|
|
+ String riskCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getRiskCount));
|
|
|
+ String zeroCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getZeroCount));
|
|
|
+ String deviceId = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getDeviceId));
|
|
|
+
|
|
|
+ LambdaQueryWrapper<DeviceData> lqw = new QueryWrapper<DeviceData>()
|
|
|
+ .select(String.format("%s,sum(%s) %s,sum(%s) %s,sum(%s) %s,sum(%s) %s,sum(%s) %s,sum(%s) %s,sum(%s) %s"
|
|
|
+ , deviceId, salesCount, salesCount, salesMoney, salesMoney, goodsCount, goodsCount
|
|
|
+ ,refundMoney,refundMoney,refundCount,refundCount,riskCount,riskCount,zeroCount,zeroCount
|
|
|
+ ))
|
|
|
+ .orderByAsc("asc".equals(dto.getOrderBy()), dto.getOrderByKey())
|
|
|
+ .orderByDesc("desc".equals(dto.getOrderBy()), dto.getOrderByKey())
|
|
|
+ .lambda()
|
|
|
+ .eq(Emptys.check(dto.getMercId()),DeviceData::getMercId, dto.getMercId())
|
|
|
+ .eq(DeviceData::getType, dto.getType())
|
|
|
+ .ge(Emptys.check(dto.getBeginDate()), DeviceData::getDateValue, dto.getBeginDate())
|
|
|
+ .le(Emptys.check(dto.getEndDate()), DeviceData::getDateValue, dto.getEndDate())
|
|
|
+ .groupBy(DeviceData::getDeviceId);
|
|
|
+ IPage<DeviceData> ipage = page(toIPage(pageBean), lqw);
|
|
|
+ if(Emptys.check(ipage.getRecords())) {
|
|
|
+ List<Long> deviceIdList = ipage.getRecords().stream().map(DeviceData::getDeviceId).collect(Collectors.toList());
|
|
|
+ Map<Long, String> deviceMap = deviceInfoService.getDeviceNameList(new DeviceInfoDto.DeviceIdDto().setDeviceId(deviceIdList)).getData();
|
|
|
+ PageBean<DeviceDataDto.SumPageVo> sumPageVoPageBean = toPageBean(DeviceDataDto.SumPageVo.class, ipage);
|
|
|
+ sumPageVoPageBean.getRecords().forEach(i -> {
|
|
|
+ i.setDeviceName(deviceMap.get(i.getDeviceId()));
|
|
|
+ });
|
|
|
+ return R.ok(sumPageVoPageBean);
|
|
|
+ }
|
|
|
+ return R.ok();
|
|
|
+ }
|
|
|
+
|
|
|
+ @PostMapping("sumCount")
|
|
|
+ @ApiOperation("设备销售统计总计")
|
|
|
+ public R<DeviceDataDto.SumCountVo> sumCount(@RequestBody @Valid DeviceDataDto.SumCountDto dto) {
|
|
|
+ String salesCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getSalesCount));
|
|
|
+ String salesMoney = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getSalesMoney));
|
|
|
+ String goodsCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getGoodsCount));
|
|
|
+ String refundMoney = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getRefundMoney));
|
|
|
+ String refundCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getRefundCount));
|
|
|
+ String riskCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getRiskCount));
|
|
|
+ String zeroCount = StringTools.humpToLine(LambdaUtils.getProperty(DeviceData::getZeroCount));
|
|
|
+ //查询总数
|
|
|
+ LambdaQueryWrapper<DeviceData> lqw = new QueryWrapper<DeviceData>()
|
|
|
+ .select(String.format("sum(%s) %s,sum(%s) %s,sum(%s) %s,sum(%s) %s,sum(%s) %s,sum(%s) %s,sum(%s) %s"
|
|
|
+ , salesCount, salesCount, salesMoney, salesMoney, goodsCount, goodsCount
|
|
|
+ ,refundMoney,refundMoney,refundCount,refundCount,riskCount,riskCount,zeroCount,zeroCount
|
|
|
+ ))
|
|
|
+ .lambda()
|
|
|
+ .eq(Emptys.check(dto.getMercId()),DeviceData::getMercId, dto.getMercId())
|
|
|
+ .eq(DeviceData::getType, dto.getType())
|
|
|
+ .ge(Emptys.check(dto.getBeginDate()), DeviceData::getDateValue, dto.getBeginDate())
|
|
|
+ .le(Emptys.check(dto.getEndDate()), DeviceData::getDateValue, dto.getEndDate());
|
|
|
+ return R.ok(copy(DeviceDataDto.SumCountVo.class,getOne(lqw)));
|
|
|
+ }
|
|
|
+
|
|
|
@PostMapping("obj")
|
|
|
@ApiOperation("对象查询")
|
|
|
public R<DeviceDataDto.Vo> obj(@RequestBody DeviceDataDto.Vo vo) {
|