diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/biz/controller/BizAuditConfigController.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/biz/controller/BizAuditConfigController.java index c5b3e41..5cacea4 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/biz/controller/BizAuditConfigController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/biz/controller/BizAuditConfigController.java @@ -67,6 +67,15 @@ public class BizAuditConfigController { } + /** + * 列表查询 + */ + @GetMapping("/list_all") + public R> listAll() { + return R.success(bizAuditConfigService.listAll()); + } + + /** * 复制文件 */ diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/biz/service/BizAuditConfigService.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/biz/service/BizAuditConfigService.java index 2aa2225..241a2f1 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/biz/service/BizAuditConfigService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/biz/service/BizAuditConfigService.java @@ -20,6 +20,8 @@ import com.njzscloud.common.core.ex.Exceptions; import com.njzscloud.common.core.tuple.Tuple2; import com.njzscloud.common.mp.support.PageParam; import com.njzscloud.common.mp.support.PageResult; +import com.njzscloud.common.security.support.UserDetail; +import com.njzscloud.common.security.util.SecurityUtil; import com.njzscloud.supervisory.biz.mapper.BizAuditConfigMapper; import com.njzscloud.supervisory.biz.pojo.entity.BizAuditConfigEntity; import com.njzscloud.supervisory.biz.pojo.result.SearchAuditConfigResult; @@ -35,6 +37,9 @@ import java.util.*; import java.util.concurrent.*; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; +import java.util.stream.Stream; + +import static com.njzscloud.supervisory.constant.Constant.ROLE_JG; /** * 审核配置 @@ -304,4 +309,26 @@ public class BizAuditConfigService extends ServiceImpl listAll() { + UserDetail userDetail = SecurityUtil.loginUser(); + Set roles = userDetail.getRoles(); + Assert.isTrue(CollUtil.isNotEmpty(roles) && roles.contains(ROLE_JG), () -> Exceptions.clierr("非监管角色,不能查看")); + List all; + if (SecurityUtil.isAdmin()) { + all = new ArrayList<>(); + List list = list(); + for (BizAuditConfigEntity bizAuditConfigEntity : list) { + if (all.stream().anyMatch(item -> item.getArea().equals(bizAuditConfigEntity.getArea()))) continue; + all.add(bizAuditConfigEntity); + } + } else { + List areaList = list(Wrappers.lambdaQuery().in(BizAuditConfigEntity::getAreaRole, roles)); + List cityList = list(Wrappers.lambdaQuery().in(BizAuditConfigEntity::getCityRole, roles) + .notIn(BizAuditConfigEntity::getArea, areaList.stream().map(BizAuditConfigEntity::getArea).collect(Collectors.toList()))); + all = Stream.of(areaList, cityList) + .flatMap(Collection::stream) + .collect(Collectors.toList()); + } + return all; + } } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/controller/OrderInfoController.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/controller/OrderInfoController.java index b4ee617..ff3c6dc 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/controller/OrderInfoController.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/controller/OrderInfoController.java @@ -298,4 +298,20 @@ public class OrderInfoController { return R.success(orderInfoService.pushProvincial(orderSns)); } + /** + * 订单统计 + */ + @GetMapping("/statistics") + public R statistics(OrderStatisticsParam param) { + return R.success(orderInfoService.statistics(param)); + } + + /** + * 订单统计详情 + */ + @GetMapping("/statistics/detail") + public R statisticsDetail(PageParam pageParam, OrderPagingSearchParam param) { + return R.success(orderInfoService.statisticsDetail(pageParam, param)); + } + } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/mapper/OrderInfoMapper.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/mapper/OrderInfoMapper.java index 73c6b06..57d285d 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/mapper/OrderInfoMapper.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/mapper/OrderInfoMapper.java @@ -15,6 +15,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; /** * 订单信息 @@ -49,4 +50,10 @@ public interface OrderInfoMapper extends BaseMapper { DeviceLocalizerEntity gpsLastOnlineTime(@Param("gpsId") String gpsId); List getRoute(@Param("id") Long id); + + @SuppressWarnings("MybatisXMapperMethodInspection") + List> statisticsByArea(@Param("ew") QueryWrapper ew); + + @SuppressWarnings("MybatisXMapperMethodInspection") + List> statisticsByAreaGoods(@Param("ew") QueryWrapper ew); } diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/param/OrderPagingSearchParam.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/param/OrderPagingSearchParam.java index f97c0f8..105ce6b 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/param/OrderPagingSearchParam.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/param/OrderPagingSearchParam.java @@ -66,6 +66,10 @@ public class OrderPagingSearchParam { * 昵称 */ private String nickname; + /** + * 公司名称 + */ + private String companyName; /** * 手机号 @@ -77,6 +81,8 @@ public class OrderPagingSearchParam { private LocalDateTime startPayTime; private LocalDateTime endPayTime; + private LocalDateTime startOutTime; + private LocalDateTime endOutTime; private Boolean isCertificatePaging = Boolean.FALSE; diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/param/OrderStatisticsParam.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/param/OrderStatisticsParam.java new file mode 100644 index 0000000..0d0e5e0 --- /dev/null +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/pojo/param/OrderStatisticsParam.java @@ -0,0 +1,31 @@ +package com.njzscloud.supervisory.order.pojo.param; + +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; +import lombok.experimental.Accessors; + +import java.util.List; + +@Getter +@Setter +@ToString +@Accessors(chain = true) +public class OrderStatisticsParam { + /** + * 区域编码 + */ + private List areaCode; + /** + * 产品 Id + */ + private Long goodsId; + /** + * 年份 + */ + private Integer year; + /** + * 月份 + */ + private Integer month; +} diff --git a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java index cabeac3..3f81be5 100644 --- a/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java +++ b/njzscloud-svr/src/main/java/com/njzscloud/supervisory/order/service/OrderInfoService.java @@ -242,6 +242,8 @@ public class OrderInfoService extends ServiceImpl ew = Wrappers.query() .eq(stationId != null && stationId > 0, "a.station_id", stationId) .like(StrUtil.isNotBlank(sn), "a.sn", sn) @@ -252,6 +254,8 @@ public class OrderInfoService extends ServiceImpl it + .in("a.order_status", OrderStatus.YiJieDan, OrderStatus.QingYunZhong, OrderStatus.YiJinChang, OrderStatus.YiChuChang, OrderStatus.YiWanCheng) + .or(it1 -> it1.eq("a.audit_status", AuditStatus.BoHui).eq("a.order_status", OrderStatus.YiQuXiao)) + ) .and(it -> it.or(CollUtil.isNotEmpty(areaList), it0 -> it0.in("b.area", areaList).eq("a.audit_status", AuditStatus.BoHui)) .or(CollUtil.isNotEmpty(cityList), it1 -> it1.in("b.area", cityList).eq("a.audit_status", AuditStatus.BoHui)) @@ -556,7 +563,8 @@ public class OrderInfoService extends ServiceImpl待审核 if ("1".equals(auditType)) { - ew.eq("a.order_status", OrderStatus.YiJieDan) + ew + .eq("a.order_status", OrderStatus.YiJieDan) .and(it -> it.or(CollUtil.isNotEmpty(areaList), it0 -> it0.in("b.area", areaList).in("a.audit_status", AuditStatus.QuDaiShenHe, AuditStatus.ShiDaiShenHe)) .or(CollUtil.isNotEmpty(cityList), it1 -> it1.in("b.area", cityList).eq("a.audit_status", AuditStatus.ShiDaiShenHe)) @@ -564,7 +572,9 @@ public class OrderInfoService extends ServiceImpl已审核 ew - .in("a.order_status", OrderStatus.YiJieDan, OrderStatus.QingYunZhong, OrderStatus.YiJinChang, OrderStatus.YiChuChang, OrderStatus.YiWanCheng) + .and(it -> it.in("a.order_status", OrderStatus.YiJieDan, OrderStatus.QingYunZhong, OrderStatus.YiJinChang, OrderStatus.YiChuChang, OrderStatus.YiWanCheng) + .or(it1 -> it1.eq("a.audit_status", AuditStatus.BoHui).eq("a.order_status", OrderStatus.YiQuXiao)) + ) .and(it -> it.or(CollUtil.isNotEmpty(areaList), it0 -> it0.in("b.area", areaList).in("a.audit_status", AuditStatus.ShiDaiShenHe, AuditStatus.TongGuo)) .or(CollUtil.isNotEmpty(cityList), it1 -> it1.in("b.area", cityList).in("a.audit_status", AuditStatus.TongGuo, AuditStatus.BoHui)) @@ -572,7 +582,10 @@ public class OrderInfoService extends ServiceImpl it + .in("a.order_status", OrderStatus.YiJieDan, OrderStatus.QingYunZhong, OrderStatus.YiJinChang, OrderStatus.YiChuChang, OrderStatus.YiWanCheng) + .or(it1 -> it1.eq("a.audit_status", AuditStatus.BoHui).eq("a.order_status", OrderStatus.YiQuXiao)) + ) .and(it -> it.or(CollUtil.isNotEmpty(areaList), it0 -> it0.in("b.area", areaList)) .or(CollUtil.isNotEmpty(cityList), it1 -> it1.in("b.area", cityList)) @@ -670,6 +683,7 @@ public class OrderInfoService extends ServiceImpl statistics(OrderStatisticsParam param) { + List areaCode = param.getAreaCode(); + Long goodsId = param.getGoodsId(); + Integer year = param.getYear(); + Integer month = param.getMonth(); + LocalDateTime start = null; + LocalDateTime end = null; + if (year != null) { + if (month == null) { + start = LocalDateTime.of(year, 1, 1, 0, 0, 0); + end = LocalDateTime.of(year, 12, 31, 23, 59, 59); + } else { + start = LocalDateTime.of(year, month, 1, 0, 0, 0); + end = start.plusMonths(1).minusSeconds(1); + } + } + + List> statisticsByArea = baseMapper.statisticsByArea(Wrappers.query() + .in(CollUtil.isNotEmpty(areaCode), "b.area", areaCode) + .eq("a.deleted", 0) + .in("a.order_status", OrderStatus.YiWanCheng, OrderStatus.YiChuChang) + .groupBy("b.area") + ); + List> statisticsByAreaGoods = baseMapper.statisticsByAreaGoods(Wrappers.query() + .in(CollUtil.isNotEmpty(areaCode), "b.area", areaCode) + .eq("a.deleted", 0) + .between(start != null, "a.create_time", start, end) + .eq(goodsId != null, "d.origin_goods_id", goodsId) + .in("a.order_status", OrderStatus.YiWanCheng, OrderStatus.YiChuChang) + .groupBy("b.area", "d.origin_goods_id") + ); + return MapUtil.builder() + .put("statisticsByArea", statisticsByArea) + .put("statisticsByAreaGoods", statisticsByAreaGoods) + .build(); + } + + public PageResult statisticsDetail(PageParam pageParam, OrderPagingSearchParam orderPagingSearchParam) { + String area = orderPagingSearchParam.getArea(); + Long goodsId = orderPagingSearchParam.getGoodsId(); + String sn = orderPagingSearchParam.getSn(); + // 客户名称 + String nickname = orderPagingSearchParam.getNickname(); + // 产废单位 + String companyName = orderPagingSearchParam.getCompanyName(); + String transCompanyName = orderPagingSearchParam.getTransCompanyName(); + String licensePlate = orderPagingSearchParam.getLicensePlate(); + + LocalDateTime startTime = orderPagingSearchParam.getStartTime(); + LocalDateTime endTime = orderPagingSearchParam.getEndTime(); + + LocalDateTime startOutTime = orderPagingSearchParam.getStartOutTime(); + LocalDateTime endOutTime = orderPagingSearchParam.getEndOutTime(); + + Page page = pageParam.toPage(); + + QueryWrapper ew = Wrappers.query() + .eq("a.deleted", 0) + .eq("b.area", area) + .eq("c.origin_goods_id", goodsId) + .like(StrUtil.isNotBlank(sn), "a.sn", sn) + .like(StrUtil.isNotBlank(nickname), "a.contacts", nickname) + .like(StrUtil.isNotBlank(companyName), "j.company_name", companyName) + .like(StrUtil.isNotBlank(transCompanyName), "g.company_name", transCompanyName) + .like(StrUtil.isNotBlank(licensePlate), "e.license_plate", licensePlate) + .ge(startTime != null, "a.create_time", startTime) + .le(endTime != null, "a.create_time", endTime) + .ge(startOutTime != null, "d.out_time", startOutTime) + .le(endOutTime != null, "d.out_time", endOutTime); + return PageResult.of(baseMapper.paging(page, ew)); + } } diff --git a/njzscloud-svr/src/main/resources/mapper/order/OrderInfoMapper.xml b/njzscloud-svr/src/main/resources/mapper/order/OrderInfoMapper.xml index a04f6bf..fe5b0fc 100644 --- a/njzscloud-svr/src/main/resources/mapper/order/OrderInfoMapper.xml +++ b/njzscloud-svr/src/main/resources/mapper/order/OrderInfoMapper.xml @@ -373,4 +373,31 @@ AND a.deleted = 0 ORDER BY b.sort, b.create_time, b.id + +