# Conflicts:
#	njzscloud-svr/src/main/java/com/njzscloud/supervisory/biz/service/BizCompanyService.java
localizer
ljw 2025-09-16 00:59:21 +08:00
commit ed7d647e91
56 changed files with 1691 additions and 211 deletions

View File

@ -71,6 +71,11 @@
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.5.3</version>
</dependency>
</dependencies>

View File

@ -11,14 +11,21 @@ import lombok.RequiredArgsConstructor;
@Getter
@RequiredArgsConstructor
public enum BizObj implements DictStr {
ShiGongDanWei("ShiGongDanWei", "施工单位"),
DanWei("DanWei", "单位"),
GeRen("GeRen", "个人"),
WuYe("WuYe", "物业"),
QingYunGongSi("QingYunGongSi", "清运公司"),
ShiGongDanWei("ShiGongDanWei", "施工单位"),
ChaiQian("ChaiQian", "拆迁公司"),
SheQu("SheQu", "社区/村/街道"),
QiYe("QiYe", "企业"),
GeTi("GeTi", "个体工商户"),
SiJi("SiJi", "司机"),
JianGuan("JianGuan", "监管"),
SiBang("SiBang", "司磅"),
ChanFeiDanWei("ChanFeiDanWei", "产废单位"),
QingYunGongSi("QingYunGongSi", "清运公司"),
XiaoNaCang("XiaoNaCang", "消纳场"),
ZhengFuBuMen("ZhengFuBuMen", "政府部门");

View File

@ -13,6 +13,8 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
*
*/
@ -81,4 +83,12 @@ public class BizCompanyController {
public R<PageResult<BizCompanyEntity>> paging(PageParam pageParam, SearchCompanyParam searchCompanyParam) {
return R.success(bizCompanyService.paging(pageParam, searchCompanyParam));
}
/**
*
*/
@GetMapping("/station")
public R<List<BizCompanyEntity>> station() {
return R.success(bizCompanyService.station());
}
}

View File

@ -3,7 +3,9 @@ package com.njzscloud.supervisory.biz.controller;
import com.njzscloud.common.core.utils.R;
import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.common.security.util.SecurityUtil;
import com.njzscloud.supervisory.biz.pojo.entity.BizProjectEntity;
import com.njzscloud.supervisory.biz.pojo.result.SearchBizProjectResult;
import com.njzscloud.supervisory.biz.service.BizProjectService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -27,7 +29,8 @@ public class BizProjectController {
*/
@PostMapping("/add")
public R<?> add(@RequestBody BizProjectEntity bizProjectEntity) {
bizProjectService.add(bizProjectEntity);
Long userId = SecurityUtil.currentUserId();
bizProjectService.add(bizProjectEntity.setUserId(userId));
return R.success();
}
@ -61,7 +64,7 @@ public class BizProjectController {
*
*/
@GetMapping("/paging")
public R<PageResult<BizProjectEntity>> paging(PageParam pageParam, BizProjectEntity bizProjectEntity) {
public R<PageResult<SearchBizProjectResult>> paging(PageParam pageParam, BizProjectEntity bizProjectEntity) {
return R.success(bizProjectService.paging(pageParam, bizProjectEntity));
}

View File

@ -1,12 +1,17 @@
package com.njzscloud.supervisory.biz.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njzscloud.supervisory.biz.pojo.entity.BizCompanyEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
*
*/
@Mapper
public interface BizCompanyMapper extends BaseMapper<BizCompanyEntity> {
IPage<BizCompanyEntity> paging(Page<Object> page, @Param("ew") QueryWrapper<Object> ew);
}

View File

@ -1,8 +1,13 @@
package com.njzscloud.supervisory.biz.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njzscloud.supervisory.biz.pojo.entity.BizProjectEntity;
import com.njzscloud.supervisory.biz.pojo.result.SearchBizProjectResult;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
*
@ -10,4 +15,5 @@ import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface BizProjectMapper extends BaseMapper<BizProjectEntity> {
IPage<SearchBizProjectResult> paging(Page<Object> page, @Param("ew") QueryWrapper<BizProjectEntity> ew);
}

View File

@ -1,12 +1,14 @@
package com.njzscloud.supervisory.biz.pojo.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.common.mp.support.handler.j.JsonTypeHandler;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.List;
/**
*
@ -15,7 +17,7 @@ import java.time.LocalDateTime;
@Setter
@ToString
@Accessors(chain = true)
@TableName("biz_project")
@TableName(value = "biz_project", autoResultMap = true)
public class BizProjectEntity {
/**
@ -47,7 +49,8 @@ public class BizProjectEntity {
/**
* ; json
*/
private String contract;
@TableField(typeHandler = JsonTypeHandler.class)
private List<String> contract;
/**
* ;

View File

@ -1,14 +1,12 @@
package com.njzscloud.supervisory.biz.pojo.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.njzscloud.common.mp.support.handler.j.JsonTypeHandler;
import com.njzscloud.supervisory.biz.contant.AuditStatus;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.List;
/**
*
@ -26,12 +24,7 @@ public class BizTruckEntity {
private Long id;
/**
* Id; sys_user.id
*/
private Long userId;
/**
* / Id; biz_company.id
* Id
*/
private Long companyId;
@ -41,7 +34,7 @@ public class BizTruckEntity {
private String licensePlate;
/**
* ;
*
*/
private String truckLicense;
@ -51,44 +44,22 @@ public class BizTruckEntity {
private String vnCode;
/**
* ;
*
*/
private String qualification;
/**
* ; []
*/
@TableField(value = "truck_license_date", typeHandler = JsonTypeHandler.class)
private List<String> truckLicenseDate;
/**
* ; []
*/
@TableField(value = "qualification_date", typeHandler = JsonTypeHandler.class)
private List<String> qualificationDate;
/**
* ; []
*/
@TableField(value = "certification_date", typeHandler = JsonTypeHandler.class)
private List<String> certificationDate;
/**
* ;
*/
private String carryingCapacity;
/**
* GPS
* ;
*/
private String gps;
/**
* ; 0-->1-->
*/
private Boolean busy;
private Integer carryingCapacity;
/**
* ; 0-->1-->
* ;
*/
private Boolean disabled;
private Integer tareWeight;
/**
* ; audit_status
*
*/
private AuditStatus auditStatus;
@ -96,6 +67,7 @@ public class BizTruckEntity {
*
*/
private String auditMemo;
/**
* Id; sys_user.id
*/

View File

@ -0,0 +1,131 @@
package com.njzscloud.supervisory.biz.pojo.result;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.List;
/**
*
*/
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class SearchBizProjectResult {
/**
* Id
*/
@TableId(type = IdType.ASSIGN_ID)
private Long id;
/**
* Id
*/
private Long userId;
private Long companyId;
private String companyName;
/**
* Id
*/
private Long otherUserId;
/**
* Id
*/
private Long otherCompanyId;
private String otherCompanyName;
/**
*
*/
private String projectName;
/**
* ; json
*/
private List<String> contract;
/**
* ;
*/
private String province;
/**
* ;
*/
private String city;
/**
* ;
*/
private String area;
/**
* ;
*/
private String town;
/**
* ;
*/
private String provinceName;
/**
* ;
*/
private String cityName;
/**
* ;
*/
private String areaName;
/**
* ;
*/
private String townName;
/**
*
*/
private String address;
/**
*
*/
private Double lng;
/**
*
*/
private Double lat;
/**
* Id; sys_user.id
*/
private Long creatorId;
/**
* Id; sys_user.id
*/
private Long modifierId;
/**
*
*/
private LocalDateTime createTime;
/**
*
*/
private LocalDateTime modifyTime;
}

View File

@ -5,9 +5,6 @@ import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
import java.util.List;
/**
*
*/
@ -15,31 +12,16 @@ import java.util.List;
@Setter
@Accessors(chain = true)
public class SearchTruckResult {
/**
* Id
*/
private Long id;
/**
* Id; sys_user.id
*/
private Long userId;
/**
* / Id; biz_company.id
*/
private Long companyId;
/**
* /; biz_company.name
*/
private String companyName;
private Long id;
/**
* ; biz_company.uscc
* Id
*/
private String uscc;
private Long companyId;
/**
*
@ -47,7 +29,7 @@ public class SearchTruckResult {
private String licensePlate;
/**
* ;
*
*/
private String truckLicense;
@ -57,40 +39,22 @@ public class SearchTruckResult {
private String vnCode;
/**
* ;
*
*/
private String qualification;
/**
* ;
* ;
*/
private String carryingCapacity;
private Integer carryingCapacity;
/**
* GPS
* ;
*/
private String gps;
private LocalDateTime createTime;
/**
* ; []
*/
private List<String> truckLicenseDate;
/**
* ; []
*/
private List<String> qualificationDate;
/**
* ; []
*/
private List<String> certificationDate;
private Integer tareWeight;
/**
* ; 0-->1-->
*/
private Boolean disabled;
/**
* ; audit_status
*
*/
private AuditStatus auditStatus;
@ -98,4 +62,5 @@ public class SearchTruckResult {
*
*/
private String auditMemo;
}

View File

@ -1,6 +1,7 @@
package com.njzscloud.supervisory.biz.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -26,6 +27,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
/**
*
*/
@ -35,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
public class BizCompanyService extends ServiceImpl<BizCompanyMapper, BizCompanyEntity> implements IService<BizCompanyEntity> {
private final AppProperties appProperties;
/**
*
*
@ -140,16 +145,31 @@ public class BizCompanyService extends ServiceImpl<BizCompanyMapper, BizCompanyE
*/
public PageResult<BizCompanyEntity> paging(PageParam pageParam, SearchCompanyParam searchCompanyParam) {
BizObj bizObj = searchCompanyParam.getBizObj();
List<String> bizObjList = null;
if (bizObj == BizObj.ChanFeiDanWei) {
bizObjList = Arrays.asList(BizObj.GeRen.getVal(),
BizObj.WuYe.getVal(),
BizObj.ShiGongDanWei.getVal(),
BizObj.ChaiQian.getVal(),
BizObj.SheQu.getVal());
} else if (bizObj == BizObj.QingYunGongSi) {
bizObjList = Arrays.asList(
BizObj.QiYe.getVal(),
BizObj.GeTi.getVal());
}
String uscc = searchCompanyParam.getUscc();
AuditStatus auditStatus = searchCompanyParam.getAuditStatus();
String companyName = searchCompanyParam.getCompanyName();
String legalRepresentative = searchCompanyParam.getLegalRepresentative();
return PageResult.of(this.page(pageParam.toPage(), Wrappers.<BizCompanyEntity>lambdaQuery()
.eq(auditStatus != null, BizCompanyEntity::getAuditStatus, auditStatus)
.eq(StrUtil.isNotBlank(searchCompanyParam.getStation()), BizCompanyEntity::getStation, searchCompanyParam.getStation())
.like(StrUtil.isNotBlank(companyName), BizCompanyEntity::getCompanyName, companyName)
.like(StrUtil.isNotBlank(legalRepresentative), BizCompanyEntity::getLegalRepresentative, legalRepresentative)
.like(StrUtil.isNotBlank(uscc), BizCompanyEntity::getUscc, uscc)
return PageResult.of(baseMapper.paging(pageParam.toPage(), Wrappers.query()
.eq(auditStatus != null, "a.audit_status", auditStatus)
.eq(StrUtil.isNotBlank(searchCompanyParam.getStation()), "a.station", searchCompanyParam.getStation())
.in(CollUtil.isNotEmpty(bizObjList), "b.biz_obj", bizObjList)
.like(StrUtil.isNotBlank(companyName), "a.company_name", companyName)
.like(StrUtil.isNotBlank(legalRepresentative), "a.legal_representative", legalRepresentative)
.like(StrUtil.isNotBlank(uscc), "a.uscc", uscc)
));
}
@ -172,4 +192,8 @@ public class BizCompanyService extends ServiceImpl<BizCompanyMapper, BizCompanyE
throw Exceptions.exception("数据状态已改变,无法审核");
}
}
public List<BizCompanyEntity> station() {
return this.list(Wrappers.<BizCompanyEntity>lambdaQuery().eq(BizCompanyEntity::getStation, Boolean.TRUE));
}
}

View File

@ -7,6 +7,7 @@ import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.supervisory.biz.mapper.BizProjectMapper;
import com.njzscloud.supervisory.biz.pojo.entity.BizProjectEntity;
import com.njzscloud.supervisory.biz.pojo.result.SearchBizProjectResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -52,8 +53,8 @@ public class BizProjectService extends ServiceImpl<BizProjectMapper, BizProjectE
/**
*
*/
public PageResult<BizProjectEntity> paging(PageParam pageParam, BizProjectEntity bizProjectEntity) {
return PageResult.of(this.page(pageParam.toPage(), Wrappers.<BizProjectEntity>query(bizProjectEntity)));
public PageResult<SearchBizProjectResult> paging(PageParam pageParam, BizProjectEntity bizProjectEntity) {
return PageResult.of(baseMapper.paging(pageParam.toPage(), Wrappers.<BizProjectEntity>query(bizProjectEntity)));
}
}

View File

@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njzscloud.common.core.ex.Exceptions;
import com.njzscloud.common.core.fastjson.Fastjson;
import com.njzscloud.common.mp.support.PageParam;
import com.njzscloud.common.mp.support.PageResult;
import com.njzscloud.common.security.support.UserDetail;
@ -37,11 +36,7 @@ public class BizTruckService extends ServiceImpl<BizTruckMapper, BizTruckEntity>
* @param bizTruckEntity
*/
public void add(BizTruckEntity bizTruckEntity) {
UserDetail userDetail = SecurityUtil.loginUser();
bizTruckEntity.setUserId(userDetail.getUserId());
SearchCompanyResult searchCompanyResult = baseMapper.selectCompanyByUserId(userDetail.getUserId());
bizTruckEntity.setCompanyId(searchCompanyResult.getId())
.setAuditStatus(AuditStatus.DaiShenHe)
bizTruckEntity.setAuditStatus(AuditStatus.DaiShenHe)
;
this.save(bizTruckEntity);
}
@ -97,8 +92,6 @@ public class BizTruckService extends ServiceImpl<BizTruckMapper, BizTruckEntity>
@Transactional(rollbackFor = Exception.class)
public void busy(List<Long> id, Boolean busy) {
update(Wrappers.<BizTruckEntity>update()
.lambda().in(BizTruckEntity::getId, id).set(BizTruckEntity::getBusy, busy));
}
public PageResult<BizTruckEntity> dispensabilityList(PageParam pageParam, String keywords) {
@ -106,7 +99,6 @@ public class BizTruckService extends ServiceImpl<BizTruckMapper, BizTruckEntity>
SearchCompanyResult searchCompanyResult = baseMapper.selectCompanyByUserId(userDetail.getUserId());
return PageResult.of(this.page(pageParam.toPage(), Wrappers.<BizTruckEntity>lambdaQuery()
// .eq(BizTruckEntity::getBusy, false)
.eq(BizTruckEntity::getDisabled, false)
.eq(BizTruckEntity::getAuditStatus, AuditStatus.TongGuo)
.eq(BizTruckEntity::getCompanyId, searchCompanyResult.getId())
.and(StrUtil.isNotBlank(keywords), it ->
@ -129,7 +121,6 @@ public class BizTruckService extends ServiceImpl<BizTruckMapper, BizTruckEntity>
boolean updated = update(Wrappers.<BizTruckEntity>lambdaUpdate()
.set(BizTruckEntity::getAuditStatus, auditStatus)
.set(BizTruckEntity::getAuditMemo, auditStatus == AuditStatus.TongGuo ? "" : auditMemo)
.set(BizTruckEntity::getCertificationDate, Fastjson.toJsonStr(certificationDate))
.eq(BizTruckEntity::getId, id)
.eq(BizTruckEntity::getAuditStatus, AuditStatus.DaiShenHe));
if (!updated) {

View File

@ -0,0 +1,46 @@
package com.njzscloud.supervisory.bs.controller;
import com.njzscloud.common.core.utils.R;
import com.njzscloud.supervisory.bs.service.StatisticsService;
import com.njzscloud.supervisory.bs.service.SupervisionStatisticsService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@Slf4j
@CrossOrigin
@RestController
@RequestMapping("/statistics")
@RequiredArgsConstructor
public class StatisticsController {
private final StatisticsService statisticsService;
private final SupervisionStatisticsService supervisionStatisticsService;
@GetMapping("/obtain_data")
public R<?> obtainData() throws Exception {
long l = System.currentTimeMillis();
Map<String, Object> data = statisticsService.obtainData();
System.out.println("耗时: " + (System.currentTimeMillis() - l));
return R.success(data);
}
@GetMapping("/obtain_order")
public R<?> obtainOrder(Long userId) {
return R.success(statisticsService.obtainOrder(userId));
}
@GetMapping("/supervision/obtain_data")
public R<?> obtainData1() {
long l = System.currentTimeMillis();
Map<String, Object> data = supervisionStatisticsService.obtainData();
System.out.println("耗时: " + (System.currentTimeMillis() - l));
return R.success(data);
}
}

View File

@ -0,0 +1,31 @@
package com.njzscloud.supervisory.bs.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.njzscloud.supervisory.bs.pojo.result.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface ShouJuStatisticsMapper {
List<CarTrends> getCarTrends();
UserSummary getUserSummary();
List<GarbageDisposeSummary> getGarbageDisposeSummary();
List<GarbageDisposeSummary> getCurrentMonthGarbageDisposeSummary();
List<String> getGoodsNames(@Param("ew") Wrapper<Object> ew, @Param("count") int count);
List<OrderSummary> getOrderSummary();
TodayOrderSummary getTodayOrderSummary();
List<OrderInfo> obtainOrder(@Param("userId") Long userId);
Double disposeWeight(@Param("startTime") Long startTime, @Param("endTime") Long endTime);
List<OrderAmountSummary> getOrderAmountSummary(@Param("startTime") Long startTime, @Param("endTime") Long endTime);
}

View File

@ -0,0 +1,30 @@
package com.njzscloud.supervisory.bs.mapper;
import com.njzscloud.supervisory.bs.pojo.result.*;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface SupervisionStatisticsMapper {
DispatchSummary getDispatchSummary();
YuYueSummary getYuYueSummary();
Integer getDisposeTotalWeight();
CarSummary getCarSummary();
Integer getTodayCarCount();
List<RegionSummary> getRegionSummary();
List<CompanySummary> getCompanySummary();
List<StationInfo> getStationInfo();
List<Order> getOrders();
List<Project> getProjects();
}

View File

@ -0,0 +1,15 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class CarSummary {
private Integer yunShuZhong;
private Integer carCount;
}

View File

@ -0,0 +1,18 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class CarTrends {
private String carNumber;
private String weight;
private String orderStatus;
private String stationId;
private String stationName;
}

View File

@ -0,0 +1,15 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class CompanySummary {
private String company;
private Integer totalWeight;
}

View File

@ -0,0 +1,17 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class DispatchSummary {
private Integer daiPaiChe;
private Integer weiJieDan;
private Integer yunShuZhong;
private Integer yiWanCheng;
}

View File

@ -0,0 +1,19 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class GarbageDisposeSummary {
private String garbageName;
private Double weight;
private Integer depotType;
private String depotName;
private String icon;
private Double percentage;
}

View File

@ -0,0 +1,31 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class Order {
private String orderNo;
private String realname;
private String mobile;
private String goodsCategoryName;
private String createTime;
private String orderStatus;
private String carNumber;
private String driverName;
private String goodsName;
private String company;
private String address;
private String lon;
private String lat;
private String km;
private Integer finish;
private Integer carStatus;
private Integer status;
}

View File

@ -0,0 +1,18 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.util.Date;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class OrderAmountSummary {
private Integer amount;
private Date outTime;
private Integer cd;
}

View File

@ -0,0 +1,21 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class OrderInfo {
private String carNumber;
private String goodsName;
private String orderStatus;
private Double weight;
private LocalDateTime inTime;
private LocalDateTime outTime;
}

View File

@ -0,0 +1,21 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class OrderSummary {
private Boolean finish;
private Long userId;
private Long quantity;
private String company;
private Long groupId;
private String groupName;
private Long finishCount;
private Long unFinishCount;
}

View File

@ -0,0 +1,22 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class Project {
private String projectName;
private String area;
private String street;
private String address;
private String km;
private String realname;
private String mobile;
private Integer estimate;
private String projectStatus;
}

View File

@ -0,0 +1,15 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class RegionSummary {
private String address;
private Integer totalWeight;
}

View File

@ -0,0 +1,16 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class StationInfo {
private String name;
private Double longitude;
private Double latitude;
}

View File

@ -0,0 +1,17 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class TodayOrderSummary {
private Integer total;
private Integer completed;
private Integer cancelled;
private Integer waiting;
}

View File

@ -0,0 +1,20 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class UserSummary {
private Integer sanHu;
private Integer qingYun;
private Integer wuYe;
public Integer getDaKeHu() {
return (qingYun == null ? 0 : qingYun) + (wuYe == null ? 0 : wuYe);
}
}

View File

@ -0,0 +1,16 @@
package com.njzscloud.supervisory.bs.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class YuYueSummary {
private Integer zuoTian;
private Integer jinTian;
private Double zengZhangLv;
}

View File

@ -0,0 +1,323 @@
package com.njzscloud.supervisory.bs.service;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.Week;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.njzscloud.common.core.tuple.Tuple2;
import com.njzscloud.common.core.tuple.Tuple3;
import com.njzscloud.common.core.utils.GroupUtil;
import com.njzscloud.supervisory.bs.mapper.ShouJuStatisticsMapper;
import com.njzscloud.supervisory.bs.pojo.result.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.stream.Collectors;
@Slf4j
@Service
@RequiredArgsConstructor
public class ShouJuStatisticsService implements StatisticsService {
private final ShouJuStatisticsMapper statisticsMapper;
private final String[] weeks = {"周一", "周二", "周三", "周四", "周五", "周六", "周日"};
private final String[] weeks_ = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
private final String[] months = {"1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"};
public Map<String, Object> obtainData() throws Exception {
CompletableFuture<List<CarTrends>> carTrends = CompletableFuture.supplyAsync(statisticsMapper::getCarTrends)
.exceptionally(ex -> {
log.error("车辆动态数据获取失败", ex);
return Collections.emptyList();
});
CompletableFuture<UserSummary> userSummary = CompletableFuture.supplyAsync(statisticsMapper::getUserSummary)
.exceptionally(ex -> {
log.error("用户动态数据获取失败", ex);
return null;
});
CompletableFuture<List<GarbageDisposeSummary>> garbageDisposeSummary = CompletableFuture.supplyAsync(statisticsMapper::getGarbageDisposeSummary)
.thenApply(list -> {
Double garbageDisposeSummary_totalWeight_1 = list.stream()
.filter(it -> it.getDepotType() == 1)
.map(GarbageDisposeSummary::getWeight)
.reduce(Double::sum).orElse(0D);
Double garbageDisposeSummary_totalWeight_2 = list.stream()
.filter(it -> it.getDepotType() == 2)
.map(GarbageDisposeSummary::getWeight)
.reduce(Double::sum).orElse(0D);
for (GarbageDisposeSummary disposeSummary : list) {
disposeSummary.setPercentage(disposeSummary.getDepotType() == 1 ?
garbageDisposeSummary_totalWeight_1 == 0 ? 0 : disposeSummary.getWeight() / garbageDisposeSummary_totalWeight_1 * 100 :
garbageDisposeSummary_totalWeight_2 == 0 ? 0 : disposeSummary.getWeight() / garbageDisposeSummary_totalWeight_2 * 100);
}
return list;
})
.exceptionally(ex -> {
log.error("垃圾处置动态数据获取失败", ex);
return Collections.emptyList();
});
CompletableFuture<List<GarbageDisposeSummary>> currentMonthGarbageDisposeSummary = CompletableFuture.supplyAsync(statisticsMapper::getCurrentMonthGarbageDisposeSummary)
.thenApply(list -> {
if (list.size() < 6) {
List<String> goodsNames = statisticsMapper.getGoodsNames(Wrappers.query().eq("depot_type", 2)
.notLike("name", "青石")
.notLike("name", "矿石")
, 6 - list.size());
for (String goodsName : goodsNames) {
list.add(new GarbageDisposeSummary()
.setGarbageName(goodsName)
.setWeight(0D));
}
}
Double currentMonthGarbageDisposeSummary_totalWeight = list.stream()
.map(GarbageDisposeSummary::getWeight)
.reduce(Double::sum).orElse(0D);
for (GarbageDisposeSummary disposeSummary : list) {
disposeSummary.setPercentage(disposeSummary.getWeight() / currentMonthGarbageDisposeSummary_totalWeight * 100);
}
return list;
})
.exceptionally(ex -> {
log.error("当前月垃圾处置动态数据获取失败", ex);
return Collections.emptyList();
});
CompletableFuture<List<OrderSummary>> summaries = CompletableFuture.supplyAsync(statisticsMapper::getOrderSummary)
.thenApply(orderSummary -> {
List<Long> userIds = orderSummary.stream().map(OrderSummary::getUserId).distinct().collect(Collectors.toList());
Map<Long, List<OrderSummary>> map = GroupUtil.k_a(orderSummary, OrderSummary::getUserId);
Map<Long, Map<Boolean, OrderSummary>> map_ = new HashMap<>();
map.forEach((s, orderSummaries) -> map_.put(s, GroupUtil.k_o(orderSummaries, OrderSummary::getFinish)));
return userIds.stream()
.map(it -> {
Map<Boolean, OrderSummary> map1 = map_.get(it);
OrderSummary finish = map1.get(Boolean.TRUE);
OrderSummary unFinish = map1.get(Boolean.FALSE);
if (finish == null && unFinish == null) return null;
Long finishCount = 0L;
Long unFinishCount = 0L;
String company = null;
String groupName = null;
if (finish != null) {
company = finish.getCompany();
groupName = finish.getGroupName();
finishCount = finish.getQuantity();
}
if (unFinish != null) {
company = unFinish.getCompany();
groupName = unFinish.getGroupName();
unFinishCount = unFinish.getQuantity();
}
return new OrderSummary()
.setUserId(it)
.setFinishCount(finishCount)
.setUnFinishCount(unFinishCount)
.setCompany(company)
.setGroupName(groupName);
})
.filter(Objects::nonNull)
.collect(Collectors.toList());
})
.exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return Collections.emptyList();
});
DateTime date = DateUtil.date();
CompletableFuture<Double> today_disposeWeight = CompletableFuture.supplyAsync(() -> {
long today_start = DateUtil.beginOfDay(date).getTime() / 1000;
long today_end = DateUtil.endOfDay(date).getTime() / 1000;
return statisticsMapper.disposeWeight(today_start, today_end);
}).exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return 0D;
});
CompletableFuture<Double> yesterday_disposeWeight = CompletableFuture.supplyAsync(() -> {
DateTime yesterday = DateUtil.offsetDay(date, -1);
long yesterday_start = DateUtil.beginOfDay(yesterday).getTime() / 1000;
long yesterday_end = DateUtil.endOfDay(yesterday).getTime() / 1000;
return statisticsMapper.disposeWeight(yesterday_start, yesterday_end);
}).exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return 0D;
});
CompletableFuture<Double> week_disposeWeight = CompletableFuture.supplyAsync(() -> {
long week_start = DateUtil.beginOfWeek(date).getTime() / 1000;
long week_end = DateUtil.endOfWeek(date).getTime() / 1000;
return statisticsMapper.disposeWeight(week_start, week_end);
}).exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return 0D;
});
CompletableFuture<Double> month_disposeWeight = CompletableFuture.supplyAsync(() -> {
long month_start = DateUtil.beginOfMonth(date).getTime() / 1000;
long month_end = DateUtil.endOfMonth(date).getTime() / 1000;
return statisticsMapper.disposeWeight(month_start, month_end);
}).exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return 0D;
});
CompletableFuture<Double> year_disposeWeight = CompletableFuture.supplyAsync(() -> {
long year_start = DateUtil.beginOfYear(date).getTime() / 1000;
long year_end = DateUtil.endOfYear(date).getTime() / 1000;
return statisticsMapper.disposeWeight(year_start, year_end);
}).exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return 0D;
});
CompletableFuture<Tuple2<List<Double>, List<Double>>> weekAmount = CompletableFuture.supplyAsync(() -> {
long week_start = DateUtil.beginOfWeek(date).getTime() / 1000;
long week_end = DateUtil.endOfWeek(date).getTime() / 1000;
List<OrderAmountSummary> week_orderAmountSummary = statisticsMapper.getOrderAmountSummary(week_start, week_end);
Map<String, List<OrderAmountSummary>> week_temp_1 = GroupUtil.k_a(week_orderAmountSummary.stream().filter(it -> it.getCd() == 1), it -> {
Date outTime = it.getOutTime();
Week week = DateUtil.dayOfWeekEnum(outTime);
return weeks_[week.getValue() - 1];
});
Map<String, List<OrderAmountSummary>> week_temp_2 = GroupUtil.k_a(week_orderAmountSummary.stream().filter(it -> it.getCd() == 2), it -> {
Date outTime = it.getOutTime();
Week week = DateUtil.dayOfWeekEnum(outTime);
return weeks_[week.getValue() - 1];
});
List<Double> weekAmountIn = new ArrayList<>(weeks.length);
for (String week : weeks) {
List<OrderAmountSummary> orderAmountSummary = week_temp_1.getOrDefault(week, Collections.emptyList());
Double amount = orderAmountSummary.stream().map(OrderAmountSummary::getAmount).reduce(Integer::sum).orElse(0) / 100.0;
weekAmountIn.add(amount);
}
List<Double> weekAmountOut = new ArrayList<>(weeks.length);
for (String week : weeks) {
List<OrderAmountSummary> orderAmountSummary = week_temp_2.getOrDefault(week, Collections.emptyList());
Double amount = orderAmountSummary.stream().map(OrderAmountSummary::getAmount).reduce(Integer::sum).orElse(0) / 100.0;
weekAmountOut.add(amount);
}
return Tuple2.create(weekAmountIn, weekAmountOut);
}).exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return Tuple2.create(Collections.emptyList(), Collections.emptyList());
});
CompletableFuture<Tuple3<List<Double>, List<Double>, List<String>>> monthAmount = CompletableFuture.supplyAsync(() -> {
long month_start = DateUtil.beginOfMonth(date).getTime() / 1000;
long month_end = DateUtil.endOfMonth(date).getTime() / 1000;
List<OrderAmountSummary> month_orderAmountSummary = statisticsMapper.getOrderAmountSummary(month_start, month_end);
int dayOfMonth = DateUtil.endOfMonth(date).dayOfMonth();
List<String> days = new ArrayList<>(dayOfMonth);
for (int i = 0; i < dayOfMonth; i++) {
days.add(i + 1 + "号");
}
Map<String, List<OrderAmountSummary>> month_temp_1 = GroupUtil.k_a(month_orderAmountSummary.stream().filter(it -> it.getCd() == 1), it -> {
Date outTime = it.getOutTime();
int day = DateUtil.dayOfMonth(outTime);
return days.get(day - 1);
});
Map<String, List<OrderAmountSummary>> month_temp_2 = GroupUtil.k_a(month_orderAmountSummary.stream().filter(it -> it.getCd() == 2), it -> {
Date outTime = it.getOutTime();
int day = DateUtil.dayOfMonth(outTime);
return days.get(day - 1);
});
List<Double> monthAmountIn = new ArrayList<>(dayOfMonth);
List<Double> monthAmountOut = new ArrayList<>(dayOfMonth);
for (String day : days) {
List<OrderAmountSummary> orderAmountSummary = month_temp_1.getOrDefault(day, Collections.emptyList());
Double amount = orderAmountSummary.stream().map(OrderAmountSummary::getAmount).reduce(Integer::sum).orElse(0) / 100.0;
monthAmountIn.add(amount);
}
for (String day : days) {
List<OrderAmountSummary> orderAmountSummary = month_temp_2.getOrDefault(day, Collections.emptyList());
Double amount = orderAmountSummary.stream().map(OrderAmountSummary::getAmount).reduce(Integer::sum).orElse(0) / 100.0;
monthAmountOut.add(amount);
}
return Tuple3.create(monthAmountIn, monthAmountOut, days);
}).exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return Tuple3.create(Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
});
CompletableFuture<Tuple2<List<Double>, List<Double>>> yearAmount = CompletableFuture.supplyAsync(() -> {
long year_start = DateUtil.beginOfYear(date).getTime() / 1000;
long year_end = DateUtil.endOfYear(date).getTime() / 1000;
List<OrderAmountSummary> year_orderAmountSummary = statisticsMapper.getOrderAmountSummary(year_start, year_end);
Map<String, List<OrderAmountSummary>> year_temp_1 = GroupUtil.k_a(year_orderAmountSummary.stream().filter(it -> it.getCd() == 1), it -> {
Date outTime = it.getOutTime();
int month = DateUtil.month(outTime);
return months[month];
});
Map<String, List<OrderAmountSummary>> year_temp_2 = GroupUtil.k_a(year_orderAmountSummary.stream().filter(it -> it.getCd() == 2), it -> {
Date outTime = it.getOutTime();
int month = DateUtil.month(outTime);
return months[month];
});
List<Double> yearAmountIn = new ArrayList<>(months.length);
List<Double> yearAmountOut = new ArrayList<>(months.length);
for (String month : months) {
List<OrderAmountSummary> orderAmountSummary = year_temp_1.getOrDefault(month, Collections.emptyList());
Double amount = orderAmountSummary.stream().map(OrderAmountSummary::getAmount).reduce(Integer::sum).orElse(0) / 100.0;
yearAmountIn.add(amount);
}
for (String month : months) {
List<OrderAmountSummary> orderAmountSummary = year_temp_2.getOrDefault(month, Collections.emptyList());
Double amount = orderAmountSummary.stream().map(OrderAmountSummary::getAmount).reduce(Integer::sum).orElse(0) / 100.0;
yearAmountOut.add(amount);
}
return Tuple2.create(yearAmountIn, yearAmountOut);
}).exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return Tuple2.create(Collections.emptyList(), Collections.emptyList());
});
CompletableFuture<TodayOrderSummary> todayOrderSummary = CompletableFuture.supplyAsync(statisticsMapper::getTodayOrderSummary)
.exceptionally(ex -> {
log.error("订单动态数据获取失败", ex);
return new TodayOrderSummary();
});
Tuple2<List<Double>, List<Double>> weekAmount_ = weekAmount.get();
Tuple3<List<Double>, List<Double>, List<String>> monthAmount_ = monthAmount.get();
Tuple2<List<Double>, List<Double>> yearAmount_ = yearAmount.get();
return MapUtil.<String, Object>builder()
.put("carTrends", carTrends.get())
.put("userSummary", userSummary.get())
.put("garbageDisposeSummary", garbageDisposeSummary.get())
.put("currentMonthGarbageDisposeSummary", currentMonthGarbageDisposeSummary.get())
.put("orderSummary", summaries.get())
.put("todayDisposeWeight", today_disposeWeight.get())
.put("yesterdayDisposeWeight", yesterday_disposeWeight.get())
.put("weekDisposeWeight", week_disposeWeight.get())
.put("monthDisposeWeight", month_disposeWeight.get())
.put("yearDisposeWeight", year_disposeWeight.get())
.put("todayOrderSummary", todayOrderSummary.get())
.put("weekAmountIn", weekAmount_.get_0())
.put("weekAmountOut", weekAmount_.get_1())
.put("monthAmountIn", monthAmount_.get_0())
.put("monthAmountOut", monthAmount_.get_1())
.put("days", monthAmount_.get_2())
.put("yearAmountIn", yearAmount_.get_0())
.put("yearAmountOut", yearAmount_.get_1())
.build();
}
public List<OrderInfo> obtainOrder(Long userId) {
return statisticsMapper.obtainOrder(userId);
}
}

View File

@ -0,0 +1,14 @@
package com.njzscloud.supervisory.bs.service;
import com.njzscloud.supervisory.bs.pojo.result.OrderInfo;
import java.util.List;
import java.util.Map;
public interface StatisticsService {
Map<String, Object> obtainData() throws Exception;
List<OrderInfo> obtainOrder(Long userId);
}

View File

@ -0,0 +1,50 @@
package com.njzscloud.supervisory.bs.service;
import cn.hutool.core.map.MapUtil;
import com.njzscloud.supervisory.bs.mapper.SupervisionStatisticsMapper;
import com.njzscloud.supervisory.bs.pojo.result.*;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Slf4j
@Service
@RequiredArgsConstructor
public class SupervisionStatisticsService {
private final SupervisionStatisticsMapper supervisionStatisticsMapper;
public Map<String, Object> obtainData() {
DispatchSummary dispatchSummary = supervisionStatisticsMapper.getDispatchSummary();
YuYueSummary yuYueSummary = supervisionStatisticsMapper.getYuYueSummary();
Integer disposeTotalWeight = supervisionStatisticsMapper.getDisposeTotalWeight();
CarSummary carSummary = supervisionStatisticsMapper.getCarSummary();
Integer todayCarCount = supervisionStatisticsMapper.getTodayCarCount();
List<RegionSummary> regionSummary = supervisionStatisticsMapper.getRegionSummary();
List<CompanySummary> companySummary = supervisionStatisticsMapper.getCompanySummary();
List<StationInfo> stationInfo = supervisionStatisticsMapper.getStationInfo();
List<Order> orders = supervisionStatisticsMapper.getOrders();
List<Project> projects = supervisionStatisticsMapper.getProjects();
return MapUtil.<String, Object>builder()
.put("dispatchSummary", dispatchSummary == null ? new DispatchSummary() : dispatchSummary)
.put("yuYueSummary", yuYueSummary == null ? new YuYueSummary() : yuYueSummary)
.put("disposeTotalWeight", disposeTotalWeight == null ? 0 : disposeTotalWeight)
.put("carSummary", carSummary == null ? new CarSummary() : carSummary)
.put("todayCarCount", todayCarCount == null ? 0 : todayCarCount)
.put("regionSummary", regionSummary == null ? new ArrayList<>() : regionSummary)
.put("companySummary", companySummary == null ? new ArrayList<>() : companySummary)
.put("stationInfo", stationInfo == null ? new ArrayList<>() : stationInfo)
.put("orders", orders == null ? new ArrayList<>() : orders)
.put("projects", projects == null ? new ArrayList<>() : projects)
.build();
}
}

View File

@ -9,6 +9,7 @@ import com.njzscloud.common.security.util.SecurityUtil;
import com.njzscloud.supervisory.order.contant.OrderCategory;
import com.njzscloud.supervisory.order.pojo.entity.OrderInfoEntity;
import com.njzscloud.supervisory.order.pojo.param.*;
import com.njzscloud.supervisory.order.pojo.result.OrderCertificateResult;
import com.njzscloud.supervisory.order.pojo.result.OrderPagingResult;
import com.njzscloud.supervisory.order.service.OrderInfoService;
import lombok.RequiredArgsConstructor;
@ -76,12 +77,30 @@ public class OrderInfoController {
return R.success(orderInfoService.detail(id));
}
/**
*
*/
@GetMapping("/certificate")
public R<OrderCertificateResult> certificate(OrderCertificateParam orderCertificateParam) {
return R.success(orderInfoService.certificate(orderCertificateParam));
}
/**
*
*/
@GetMapping("/paging")
public R<PageResult<OrderPagingResult>> paging(PageParam pageParam, OrderPagingSearchParam orderPagingSearchParam) {
return R.success(orderInfoService.paging(pageParam, orderPagingSearchParam));
return R.success(orderInfoService
.paging(pageParam, orderPagingSearchParam));
}
/**
*
*/
@GetMapping("/dispatch_paging")
public R<PageResult<OrderPagingResult>> dispatchPaging(PageParam pageParam, OrderPagingSearchParam orderPagingSearchParam) {
return R.success(orderInfoService
.dispatchPaging(pageParam, orderPagingSearchParam));
}
/**
@ -127,13 +146,14 @@ public class OrderInfoController {
* @param orderId Id
*/
@GetMapping("/confirm")
public R<?> confirm(@RequestParam("orderId") Long orderId) {
orderInfoService.confirm(orderId);
public R<?> confirm(@RequestParam("orderId") Long orderId,
@RequestParam("truckId") Long truckId) {
orderInfoService.confirm(orderId, truckId);
return R.success();
}
/**
*
*
*/
@GetMapping("/start_trans")
public R<?> startTrans(StartTransportOrderParam startTransportOrderParam) {
@ -164,8 +184,8 @@ public class OrderInfoController {
/**
*
*/
@PostMapping("/truck_out")
public R<?> truckOut(@RequestBody TruckLeavingOrderParam truckLeavingOrderParam) {
@PostMapping("/truck_leaving")
public R<?> truckLeaving(@RequestBody TruckLeavingOrderParam truckLeavingOrderParam) {
orderInfoService.truckLeaving(truckLeavingOrderParam);
return R.success();
}

View File

@ -172,7 +172,11 @@ public class OrderInfoEntity {
*/
@TableField(typeHandler = JsonTypeHandler.class)
private List<String> checkPhoto;
/**
*
*/
@TableField(typeHandler = JsonTypeHandler.class)
private List<String> sitePhotos;
/**
*
*/

View File

@ -12,6 +12,7 @@ import lombok.experimental.Accessors;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
*
@ -66,7 +67,10 @@ public class AddOrderInfoParam implements Constrained {
* ; payer_category
*/
private PayerCategory payerCategory;
/**
*
*/
private List<String> sitePhotos;
/**
*
*/

View File

@ -0,0 +1,35 @@
package com.njzscloud.supervisory.order.pojo.param;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class OrderCertificateParam {
/**
* id
*/
private Long orderId;
/**
*
*/
private String link;
/**
*
*/
private Integer width;
/**
*
*/
private Integer height;
/**
* jpg png
*/
private String imgType;
}

View File

@ -1,6 +1,7 @@
package com.njzscloud.supervisory.order.pojo.param;
import com.njzscloud.supervisory.biz.contant.AuditStatus;
import com.njzscloud.supervisory.order.contant.CheckStatus;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@ -25,6 +26,7 @@ public class OrderPagingSearchParam {
* ; order_status
*/
private String orderStatus;
private CheckStatus checkStatus;
/**
*

View File

@ -0,0 +1,22 @@
package com.njzscloud.supervisory.order.pojo.result;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;
@Getter
@Setter
@ToString
@Accessors(chain = true)
public class OrderCertificateResult {
/**
*
*/
private OrderPagingResult orderDetail;
/**
*
*/
private String certificateQrcode;
}

View File

@ -11,6 +11,7 @@ import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;
@Getter
@Setter
@ -168,7 +169,10 @@ public class OrderPagingResult {
*
*/
private String checkPhoto;
/**
*
*/
private List<String> sitePhotos;
/**
*
*/
@ -186,6 +190,7 @@ public class OrderPagingResult {
* Id
*/
private Long originGoodsId;
private String categoryName;
/**
*
@ -231,6 +236,7 @@ public class OrderPagingResult {
* ;
*/
private BigDecimal totalMoney;
private LocalDateTime createTime;
// endregion
// region 装货地址
@ -400,24 +406,24 @@ public class OrderPagingResult {
// endregion
// region 企业信息
private String trafficCompanyUscc;
private String trafficCompanyCompanyName;
private String trafficCompanyBusinessLicense;
private LocalDate trafficCompanyLicenseStartTime;
private LocalDate trafficCompanyLicenseEndTime;
private String trafficCompanyLegalRepresentative;
private String trafficCompanyProvince;
private String trafficCompanyCity;
private String trafficCompanyArea;
private String trafficCompanyTown;
private String trafficCompanyProvinceName;
private String trafficCompanyCityName;
private String trafficCompanyAreaName;
private String trafficCompanyTownName;
private String trafficCompanyAddress;
private Double trafficCompanyLng;
private Double trafficCompanyLat;
private String trafficCompanyContacts;
private String trafficCompanyPhone;
private String transUscc;
private String transCompanyName;
private String transBusinessLicense;
private LocalDate transLicenseStartTime;
private LocalDate transLicenseEndTime;
private String transLegalRepresentative;
private String transProvince;
private String transCity;
private String transArea;
private String transTown;
private String transProvinceName;
private String transCityName;
private String transAreaName;
private String transTownName;
private String transAddress;
private Double transLng;
private Double transLat;
private String transContacts;
private String transPhone;
// endregion
}

View File

@ -2,17 +2,26 @@ package com.njzscloud.supervisory.order.service;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.img.ImgUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.qrcode.QrCodeUtil;
import cn.hutool.extra.qrcode.QrConfig;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.njzscloud.common.core.ex.Exceptions;
import com.njzscloud.common.core.ienum.Dict;
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.common.sn.support.SnUtil;
import com.njzscloud.supervisory.biz.contant.AuditStatus;
import com.njzscloud.supervisory.biz.contant.BizObj;
import com.njzscloud.supervisory.biz.pojo.entity.BizAuditConfigEntity;
import com.njzscloud.supervisory.biz.service.BizAuditConfigService;
import com.njzscloud.supervisory.order.contant.CheckStatus;
@ -22,6 +31,7 @@ import com.njzscloud.supervisory.order.mapper.OrderInfoMapper;
import com.njzscloud.supervisory.order.pojo.entity.OrderGoodsEntity;
import com.njzscloud.supervisory.order.pojo.entity.OrderInfoEntity;
import com.njzscloud.supervisory.order.pojo.param.*;
import com.njzscloud.supervisory.order.pojo.result.OrderCertificateResult;
import com.njzscloud.supervisory.order.pojo.result.OrderPagingResult;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -30,6 +40,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@ -58,7 +69,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
String area = cargoPlace.getArea();
BizAuditConfigEntity bizAuditConfigEntity = bizAuditConfigService.getOne(Wrappers.lambdaQuery(BizAuditConfigEntity.class).eq(BizAuditConfigEntity::getArea, area));
AuditStatus auditStatus = null;
AuditStatus auditStatus = AuditStatus.DaiShenHe;
if (bizAuditConfigEntity != null) {
String areaRole = bizAuditConfigEntity.getAreaRole();
String cityRole = bizAuditConfigEntity.getCityRole();
@ -130,20 +141,32 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
public PageResult<OrderPagingResult> paging(PageParam pageParam, OrderPagingSearchParam orderPagingSearchParam) {
AuditStatus auditStatus = orderPagingSearchParam.getAuditStatus();
String orderStatus = orderPagingSearchParam.getOrderStatus();
List<String> orderStatusList = null;
if (StrUtil.isNotBlank(orderStatus)) {
orderStatusList = Arrays.stream(orderStatus.split(",")).collect(Collectors.toList());
}
CheckStatus checkStatus = orderPagingSearchParam.getCheckStatus();
String sn = orderPagingSearchParam.getSn();
String licensePlate = orderPagingSearchParam.getLicensePlate();
String nickname = orderPagingSearchParam.getNickname();
String phone = orderPagingSearchParam.getPhone();
LocalDateTime startTime = orderPagingSearchParam.getStartTime();
LocalDateTime endTime = orderPagingSearchParam.getEndTime();
return PageResult.of(baseMapper.paging(pageParam.toPage(), Wrappers.<OrderPagingResult>query()
Page<OrderPagingResult> page = pageParam.toPage();
OrderItem orderItem = new OrderItem();
orderItem.setColumn("a.create_time");
orderItem.setAsc(false);
page.addOrder(orderItem);
return PageResult.of(baseMapper.paging(page, Wrappers.<OrderPagingResult>query()
.like(StrUtil.isNotBlank(sn), "a.sn", sn)
.like(StrUtil.isNotBlank(licensePlate), "a.license_plate", licensePlate)
.like(StrUtil.isNotBlank(nickname), "h.nickname", nickname)
.like(StrUtil.isNotBlank(phone), "h.phone", phone)
.eq(auditStatus != null, "a.audit_status", auditStatus)
.eq(orderStatus != null, "a.order_status", orderStatus)
.between(startTime != null && endTime != null, "a.create_time", startTime, endTime)
.in(CollUtil.isNotEmpty(orderStatusList), "a.order_status", orderStatusList)
.eq(checkStatus != null, "a.check_status", checkStatus)
.ge(startTime != null, "a.create_time", startTime)
.le(endTime != null, "a.create_time", endTime)
));
}
@ -157,9 +180,21 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
if (CollUtil.isEmpty(areas)) {
return PageResult.of(pageParam.toPage());
}
AuditStatus auditStatus = orderPagingSearchParam.getAuditStatus();
List<String> orderStatusList = null;
if (auditStatus != null) {
if (auditStatus == AuditStatus.DaiShenHe) {
orderStatusList = Arrays.asList(AuditStatus.QuDaiShenHe.getVal(), AuditStatus.ShiDaiShenHe.getVal());
} else {
orderStatusList = Collections.singletonList(auditStatus.getVal());
}
}
return PageResult.of(baseMapper.paging(pageParam.toPage(), Wrappers.<OrderPagingResult>query()
.in("b.area", areas)));
.in("b.area", areas)
.eq("a.order_status", OrderStatus.YiJieDan)
.in(CollUtil.isNotEmpty(orderStatusList), "a.audit_status", orderStatusList)));
}
public void audit(AuditOrderParam auditOrderParam) {
@ -170,10 +205,11 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
|| auditStatus == AuditStatus.ShiDaiShenHe,
() -> Exceptions.clierr("订单已审核"));
Assert.isTrue(auditStatus == AuditStatus.TongGuo || auditStatus == AuditStatus.BoHui);
AuditStatus newAuditStatus = auditOrderParam.getAuditStatus();
Assert.isTrue(newAuditStatus == AuditStatus.TongGuo || newAuditStatus == AuditStatus.BoHui, () -> Exceptions.clierr("未指明审核结果"));
Set<String> roles = SecurityUtil.loginUser().getRoles();
String area = detail.getArea();
BizAuditConfigEntity config = bizAuditConfigService.getOne(Wrappers.<BizAuditConfigEntity>query()
.eq("area", detail.getArea()));
String areaRole = config.getAreaRole();
@ -182,15 +218,14 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
throw Exceptions.clierr("您没有权限审核该订单");
}
AuditStatus newAuditStatus = auditOrderParam.getAuditStatus();
if (auditStatus == AuditStatus.QuDaiShenHe) {
if (StrUtil.isBlank(areaRole) && roles.contains(areaRole)) {
if (StrUtil.isNotBlank(areaRole) && roles.contains(areaRole)) {
auditStatus = newAuditStatus == AuditStatus.TongGuo ? AuditStatus.ShiDaiShenHe : newAuditStatus;
} else {
throw Exceptions.clierr("您没有权限审核该订单");
}
} else {
if (StrUtil.isBlank(cityRole) && roles.contains(cityRole)) {
if (StrUtil.isNotBlank(cityRole) && roles.contains(cityRole)) {
auditStatus = newAuditStatus;
} else {
throw Exceptions.clierr("您没有权限审核该订单");
@ -200,6 +235,7 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
detail.setAuditStatus(newAuditStatus);
detail.setAuditMemo(auditOrderParam.getAuditMemo());
this.updateById(new OrderInfoEntity()
.setId(detail.getId())
.setAuditStatus(auditStatus)
.setAuditMemo(auditOrderParam.getAuditMemo())
);
@ -257,12 +293,13 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
return true;
}
public void confirm(Long orderId) {
public void confirm(Long orderId, Long truckId) {
OrderInfoEntity orderInfo = this.getById(orderId);
Assert.notNull(orderInfo, () -> Exceptions.clierr("订单不存在"));
Assert.isTrue(orderInfo.getOrderStatus() == OrderStatus.DaiJieDan, () -> Exceptions.clierr("当前订单状态,无法确认接单"));
this.updateById(new OrderInfoEntity()
.setId(orderInfo.getId())
.setTruckId(truckId)
.setOrderStatus(OrderStatus.YiJieDan)
);
}
@ -358,4 +395,72 @@ public class OrderInfoService extends ServiceImpl<OrderInfoMapper, OrderInfoEnti
.orderByDesc("a.trans_time")
);
}
public PageResult<OrderPagingResult> dispatchPaging(PageParam pageParam, OrderPagingSearchParam orderPagingSearchParam) {
AuditStatus auditStatus = orderPagingSearchParam.getAuditStatus();
String orderStatus = orderPagingSearchParam.getOrderStatus();
List<String> orderStatusList = null;
if (StrUtil.isNotBlank(orderStatus)) {
orderStatusList = Arrays.stream(orderStatus.split(",")).collect(Collectors.toList());
}
CheckStatus checkStatus = orderPagingSearchParam.getCheckStatus();
String sn = orderPagingSearchParam.getSn();
String licensePlate = orderPagingSearchParam.getLicensePlate();
String nickname = orderPagingSearchParam.getNickname();
String phone = orderPagingSearchParam.getPhone();
LocalDateTime startTime = orderPagingSearchParam.getStartTime();
LocalDateTime endTime = orderPagingSearchParam.getEndTime();
Page<OrderPagingResult> page = pageParam.toPage();
OrderItem orderItem = new OrderItem();
orderItem.setColumn("a.create_time");
orderItem.setAsc(false);
page.addOrder(orderItem);
QueryWrapper<OrderPagingResult> ew = Wrappers.<OrderPagingResult>query()
.like(StrUtil.isNotBlank(sn), "a.sn", sn)
.like(StrUtil.isNotBlank(licensePlate), "a.license_plate", licensePlate)
.like(StrUtil.isNotBlank(nickname), "h.nickname", nickname)
.like(StrUtil.isNotBlank(phone), "h.phone", phone)
.eq(auditStatus != null, "a.audit_status", auditStatus)
.in(CollUtil.isNotEmpty(orderStatusList), "a.order_status", orderStatusList)
.eq(checkStatus != null, "a.check_status", checkStatus)
.ge(startTime != null, "a.create_time", startTime)
.le(endTime != null, "a.create_time", endTime);
UserDetail userDetail = SecurityUtil.loginUser();
BizObj bizObj = Dict.parse(userDetail.getBizObj(), BizObj.values());
if (bizObj != null) {
switch (bizObj) {
case QiYe:
case GeTi:
ew.eq("a.order_status", OrderStatus.DaiPaiDan)
.isNotNull("a.trans_company_id");
break;
default:
ew.isNull("a.trans_company_id");
}
} else {
ew.isNull("a.trans_company_id");
}
return PageResult.of(baseMapper.paging(page, ew));
}
public OrderCertificateResult certificate(OrderCertificateParam orderCertificateParam) {
Integer width = orderCertificateParam.getWidth();
Integer height = orderCertificateParam.getHeight();
if (width == null) {
width = 300;
}
if (height == null) {
height = 300;
}
String imgType = orderCertificateParam.getImgType();
if (imgType == null) {
imgType = ImgUtil.IMAGE_TYPE_JPG;
}
String qrcode = QrCodeUtil.generateAsBase64(orderCertificateParam.getLink(), new QrConfig(width, height), imgType);
return new OrderCertificateResult()
.setOrderDetail(this.detail(orderCertificateParam.getOrderId()))
.setCertificateQrcode(qrcode);
}
}

View File

@ -1,11 +1,12 @@
package com.njzscloud.supervisory.sys.user.pojo.param;
import com.njzscloud.supervisory.sys.role.pojo.entity.RoleEntity;
import com.njzscloud.supervisory.sys.user.contant.Gender;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import java.util.Set;
import java.util.List;
@Getter
@ -32,6 +33,6 @@ public class UserModifyParam {
/**
* Id
*/
private Set<Long> roleIds;
private List<RoleEntity> roles;
}

View File

@ -1,5 +1,6 @@
package com.njzscloud.supervisory.sys.user.pojo.result;
import com.njzscloud.supervisory.biz.contant.BizObj;
import com.njzscloud.supervisory.sys.role.pojo.result.RoleDetailResult;
import com.njzscloud.supervisory.sys.user.contant.Gender;
import lombok.Getter;
@ -34,6 +35,7 @@ public class UserDetailResult {
*
*/
private String phone;
private BizObj bizObj;
private Long tenantId;
/**
*

View File

@ -16,6 +16,7 @@ import com.njzscloud.common.security.util.SecurityUtil;
import com.njzscloud.supervisory.biz.contant.BizObj;
import com.njzscloud.supervisory.biz.pojo.param.AddBizCompanyParam;
import com.njzscloud.supervisory.biz.service.BizCompanyService;
import com.njzscloud.supervisory.sys.role.pojo.entity.RoleEntity;
import com.njzscloud.supervisory.sys.role.pojo.result.RoleDetailResult;
import com.njzscloud.supervisory.sys.user.contant.Gender;
import com.njzscloud.supervisory.sys.user.mapper.UserMapper;
@ -31,6 +32,7 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
*
@ -79,8 +81,11 @@ public class UserService extends ServiceImpl<UserMapper, UserEntity> implements
userEntity = BeanUtil.copyProperties(userModifyParam, UserEntity.class);
this.updateById(userEntity);
Set<Long> roleIds = userModifyParam.getRoleIds();
userRoleService.bindUserRole(id, roleIds);
List<RoleEntity> roles = userModifyParam.getRoles();
if (roles != null && !roles.isEmpty()) {
Set<Long> collect = roles.stream().map(RoleEntity::getId).collect(Collectors.toSet());
userRoleService.bindUserRole(id, collect);
}
}
/**

View File

@ -2,4 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njzscloud.supervisory.biz.mapper.BizCompanyMapper">
<select id="paging" resultType="com.njzscloud.supervisory.biz.pojo.entity.BizCompanyEntity">
select a.* from biz_company a
left join sys_user b on b.id = a.user_id
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
</select>
</mapper>

View File

@ -3,4 +3,38 @@
<mapper namespace="com.njzscloud.supervisory.biz.mapper.BizProjectMapper">
</mapper>
<resultMap id="SearchBizProjectResultMap" autoMapping="true" type="com.njzscloud.supervisory.biz.pojo.result.SearchBizProjectResult">
<result property="contract" column="contract" typeHandler="com.njzscloud.common.mp.support.handler.j.JsonTypeHandler"/>
</resultMap>
<select id="paging" resultMap="SearchBizProjectResultMap">
SELECT a.id,
a.user_id,
a.other_user_id,
a.other_company_id,
a.project_name,
a.contract,
a.province,
a.city,
a.area,
a.town,
a.province_name,
a.city_name,
a.area_name,
a.town_name,
a.address,
a.lng,
a.lat,
a.creator_id,
a.modifier_id,
a.create_time,
a.modify_time,
a.deleted,
b.company_name other_company_name,
c.company_name,
c.id company_id
FROM biz_project a
INNER JOIN biz_company b ON b.id = a.other_company_id AND b.deleted = 0
INNER JOIN biz_company c ON c.user_id = a.user_id AND b.deleted = 0
</select>
</mapper>

View File

@ -2,17 +2,9 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njzscloud.supervisory.biz.mapper.BizTruckMapper">
<resultMap id="pagingMap" autoMapping="true" type="com.njzscloud.supervisory.biz.pojo.result.SearchTruckResult">
<result property="truckLicenseDate" column="truck_license_date" typeHandler="com.njzscloud.common.mp.support.handler.j.JsonTypeHandler"/>
<result property="qualificationDate" column="qualification_date" typeHandler="com.njzscloud.common.mp.support.handler.j.JsonTypeHandler"/>
<result property="certificationDate" column="certification_date" typeHandler="com.njzscloud.common.mp.support.handler.j.JsonTypeHandler"/>
</resultMap>
<select id="paging" resultMap="pagingMap">
<select id="paging" resultType="com.njzscloud.supervisory.biz.pojo.result.SearchTruckResult">
SELECT
a.id,
a.user_id,
b.uscc,
a.company_id,
b.company_name,
a.license_plate,
@ -20,18 +12,14 @@
a.vn_code,
a.qualification,
a.carrying_capacity,
a.gps,
a.tare_weight,
a.audit_status,
a.audit_memo,
a.creator_id,
a.modifier_id,
a.create_time,
a.modify_time,
a.deleted,
a.disabled,
a.audit_status,
a.audit_memo,
a.truck_license_date,
a.qualification_date,
a.certification_date
a.deleted
FROM biz_truck a
INNER JOIN biz_company b ON b.id = a.company_id AND b.deleted = 0
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">

View File

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njzscloud.supervisory.bs.mapper.ShouJuStatisticsMapper">
<select id="getCarTrends" resultType="com.njzscloud.supervisory.bs.pojo.result.CarTrends">
SELECT a.car_number, a.weight, a.order_status, a.station_id, b.name station_name
FROM (SELECT car_number, weight, order_status, station_id
FROM (SELECT a.car_number,
a.weight,
IF(a.status = 1, '已完成', IF(a.status = 4, '已取消', IF(a.car_status = 0, '已预约', IF(a.car_status = 1 AND a.admin_status = 0, '待看料', '待出场')))) order_status,
a.station_id
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.station_id = 1
AND a.status IN (0, 1, 2, 3)
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
ORDER BY a.create_time DESC
LIMIT 5) t1
UNION ALL
SELECT car_number, weight, order_status, station_id
FROM (SELECT a.car_number,
a.weight,
IF(a.status = 1, '已完成', IF(a.status = 4, '已取消', IF(a.car_status = 0, '已预约', IF(a.car_status = 1 AND a.admin_status = 0, '待看料', '待出场')))) order_status,
a.station_id
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.station_id = 2
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.status IN (0, 1, 2, 3)
ORDER BY a.create_time DESC
LIMIT 5) t2) a
INNER JOIN ba_station b ON b.id = a.station_id
</select>
<select id="getUserSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.UserSummary">
SELECT MAX(IF(group_id = 1, c, 0)) san_hu,
MAX(IF(group_id = 2, c, 0)) qing_yun,
MAX(IF(group_id = 7, c, 0)) wu_ye
FROM (SELECT group_id, FLOOR(COUNT(*) / 2) c
FROM ba_user
WHERE group_id IN (1, 2, 7)
GROUP BY group_id) t
</select>
<select id="getGarbageDisposeSummary"
resultType="com.njzscloud.supervisory.bs.pojo.result.GarbageDisposeSummary">
SELECT garbage_name, weight, 1 depot_type, '入库' depot_name
FROM (SELECT garbage_name, weight
FROM (SELECT b.name garbage_name, IFNULL(SUM(a.weight), 0) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
INNER JOIN ba_goods_category c ON c.id = b.category_id
WHERE b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%拆除垃圾(派车清运零星客户专用)%'
AND b.name NOT LIKE '%拆除垃圾(活动优惠)%'
AND b.name NOT LIKE '%矿石%'
AND a.type != 4
GROUP BY b.name) t
ORDER BY weight DESC
LIMIT 3) t1
UNION ALL
SELECT garbage_name, weight, 2 depot_type, '出库' depot_name
FROM (SELECT garbage_name, weight
FROM (SELECT b.name garbage_name, IFNULL(SUM(a.weight), 0) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
INNER JOIN ba_goods_category c ON c.id = b.category_id
WHERE b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND b.name NOT LIKE '%一期项目%'
AND a.type != 4
GROUP BY b.name) t
ORDER BY weight DESC
LIMIT 3) t2
</select>
<select id="getCurrentMonthGarbageDisposeSummary"
resultType="com.njzscloud.supervisory.bs.pojo.result.GarbageDisposeSummary">
SELECT goods_name garbage_name, weight
FROM (SELECT a.goods_name, IFNULL(SUM(a.weight), 0) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.out_time >= UNIX_TIMESTAMP(DATE_FORMAT(CURDATE(), '%Y-%m-01 00:00:00'))
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.out_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH))
GROUP BY a.goods_name) t
ORDER BY weight DESC
LIMIT 6
</select>
<select id="getOrderSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.OrderSummary">
SELECT *
FROM (SELECT t1.id user_id, finish, c quantity, t2.group_id, t2.company, '清运公司' group_name
FROM (SELECT b.id,
IF(a.status = 1, 1, 0) AS finish,
COUNT(*) AS c
FROM ba_order a
INNER JOIN ba_user b ON b.id = a.vip_user AND b.group_id = 2
INNER JOIN ba_goods c ON c.id = a.goods_id AND c.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.status IN (0, 1, 2, 3)
AND a.type != 4
AND c.name NOT LIKE '%青石%'
AND c.name NOT LIKE '%矿石%'
GROUP BY b.id, IF(a.status = 1, 1, 0)) t1
INNER JOIN ba_user t2 ON t2.id = t1.id
ORDER BY c DESC
LIMIT 47) tt1
UNION ALL
SELECT *
FROM (SELECT t1.id user_id, finish, c quantity, t2.group_id, t2.company, '物业' group_name
FROM (SELECT b.id,
IF(a.status = 1, 1, 0) AS finish,
COUNT(*) AS c
FROM ba_order a
INNER JOIN ba_user b ON b.id IN (230, 343, 435)
INNER JOIN ba_goods c ON c.id = a.goods_id AND c.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.status IN (0, 1, 2, 3)
AND a.type != 4
AND c.name NOT LIKE '%青石%'
AND c.name NOT LIKE '%矿石%'
GROUP BY b.id, IF(a.status = 1, 1, 0)) t1
INNER JOIN ba_user t2 ON t2.id = t1.id
ORDER BY c DESC) tt2
</select>
<select id="obtainOrder" resultType="com.njzscloud.supervisory.bs.pojo.result.OrderInfo">
SELECT a.car_number,
a.goods_name,
IF(a.status = 1, '已完成', IF(a.status = 4, '已取消', IF(a.car_status = 0, '已预约', IF(a.car_status = 1 AND a.admin_status = 0, '待看料', '待出场')))) order_status,
a.weight,
IF(a.in_time = 0, NULL, FROM_UNIXTIME(a.in_time)) in_time,
IF(a.out_time = 0, NULL, FROM_UNIXTIME(a.out_time)) out_time
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.vip_user = #{userId}
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
ORDER BY a.create_time DESC
LIMIT 10
</select>
<select id="disposeWeight" resultType="java.lang.Double">
SELECT IFNULL(SUM(a.weight), 0) weight
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.out_time >= #{startTime}
AND a.out_time <![CDATA[ <= ]]> #{endTime}
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.type != 4
</select>
<select id="getTodayOrderSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.TodayOrderSummary">
SELECT MAX(IF(order_status = '已完成', order_count, 0)) completed,
MAX(IF(order_status = '已取消', order_count, 0)) cancelled,
MAX(IF(order_status = '已预约', order_count, 0)) waiting,
MAX(IF(order_status = '已完成', order_count, 0)) + MAX(IF(order_status = '已取消', order_count, 0)) + MAX(IF(order_status = '已预约', order_count, 0)) + MAX(IF(order_status = '待看料', order_count, 0)) + MAX(IF(order_status = '待出场', order_count, 0)) total
FROM (SELECT order_status, COUNT(*) order_count
FROM (SELECT IF(a.status = 1, '已完成', IF(a.status = 4, '已取消', IF(a.car_status = 0, '已预约', IF(a.car_status = 1 AND a.admin_status = 0, '待看料', '待出场')))) order_status
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.create_time >= UNIX_TIMESTAMP(CURDATE())
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.create_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL 24 HOUR))) t
GROUP BY order_status) tt
</select>
<select id="getOrderAmountSummary"
resultType="com.njzscloud.supervisory.bs.pojo.result.OrderAmountSummary">
SELECT a.price amount, FROM_UNIXTIME(a.out_time) out_time, a.who_pay cd
FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.status = 1
AND a.out_time >= #{startTime}
AND a.out_time <![CDATA[ <= ]]> #{endTime}
AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
</select>
<select id="getGoodsNames" resultType="java.lang.String">
SELECT name
FROM ba_goods
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
LIMIT #{count}
</select>
</mapper>

View File

@ -0,0 +1,143 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.njzscloud.supervisory.bs.mapper.SupervisionStatisticsMapper">
<select id="getDispatchSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.DispatchSummary">
SELECT MAX(IF(order_status = 'DaiPaiDan', c, 0)) dai_pai_che,
MAX(IF(order_status = 'DaiJieDan', c, 0)) wei_jie_dan,
MAX(IF(order_status = 'QingYunZhong', c, 0)) yun_shu_zhong,
MAX(IF(order_status = 'YiWanCheng', c, 0)) yi_wan_cheng
FROM (SELECT order_status, COUNT(*) c
FROM order_info
WHERE order_status IN ('DaiPaiDan', 'DaiJieDan', 'QingYunZhong', 'YiWanCheng')
GROUP BY order_status) t
</select>
<select id="getYuYueSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.YuYueSummary">
SELECT zuo_tian,
jin_tian,
IF(zuo_tian = 0, IF(jin_tian = 0, 0, 100),
ROUND((jin_tian - zuo_tian / zuo_tian) * 100, 2)) zeng_zhang_lv
FROM (SELECT MAX(IF(t = 1, c, 0)) zuo_tian,
MAX(IF(t = 2, c, 0)) jin_tian
FROM (SELECT COUNT(*) c, 1 t
FROM order_info a
WHERE a.create_time >= UNIX_TIMESTAMP(CURDATE())
AND a.create_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL -24 HOUR))
UNION ALL
SELECT COUNT(*) c, 2 t
FROM order_info a
WHERE a.create_time >= UNIX_TIMESTAMP(CURDATE())
AND a.create_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL 24 HOUR))) t) tt
</select>
<select id="getDisposeTotalWeight" resultType="java.lang.Integer">
SELECT SUM(settle_weight) total_weight
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE order_status = 'YiWanCheng'
</select>
<select id="getCarSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.CarSummary">
SELECT MAX(IF(t = 1, c, 0)) yun_shu_zhong,
MAX(IF(t = 2, c, 0)) car_count
FROM (SELECT COUNT(*) c, 1 t
FROM order_info
WHERE order_status IN ('QingYunZhong', 'YiJinChang', 'YiChuChang')
UNION ALL
SELECT COUNT(*) c, 2 t
FROM biz_truck) t
</select>
<select id="getTodayCarCount" resultType="java.lang.Integer">
SELECT COUNT(*) car_count
FROM order_info a
WHERE a.create_time >= UNIX_TIMESTAMP(CURDATE())
AND a.create_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL 24 HOUR))
AND a.order_status = 'YiWanCheng'
</select>
<select id="getRegionSummary" resultType="com.njzscloud.supervisory.bs.pojo.result.RegionSummary">
SELECT b.area,
IFNULL(SUM(c.settle_weight), 0) total_weight
FROM order_info a
INNER JOIN order_cargo_place b ON b.id = a.cargo_place_id
INNER JOIN order_car_in_out c ON c.id = a.car_in_out_id
WHERE a.order_status = 'YiWanCheng'
GROUP BY b.area
</select>
<select id="getCompanySummary" resultType="com.njzscloud.supervisory.bs.pojo.result.CompanySummary">
SELECT t1.total_weight, t2.company_name company
FROM (SELECT IFNULL(SUM(b.settle_weight), 0) total_weight, a.trans_company_id
FROM order_info a
INNER JOIN order_car_in_out b ON b.id = a.car_in_out_id
WHERE order_status = 'YiWanCheng'
GROUP BY a.trans_company_id) t1
INNER JOIN biz_company t2 ON t2.id = t1.trans_company_id
ORDER BY t1.total_weight DESC
LIMIT 5
</select>
<select id="getStationInfo" resultType="com.njzscloud.supervisory.bs.pojo.result.StationInfo">
SELECT company_name `name`,
lat latitude,
lng longitude
FROM biz_company
WHERE station = 1
</select>
<select id="getOrders" resultType="com.njzscloud.supervisory.bs.pojo.result.Order">
SELECT a.sn order_no,
d.nickname realname,
d.phone mobile,
i.category_name goods_category_name,
a.create_time,
CASE order_status
WHEN 'YiYuYue' THEN '已预约'
WHEN 'DaiPaiDan' THEN '待派单'
WHEN 'DaiJieDan' THEN '待接单'
WHEN 'YiJieDan' THEN '已接单'
WHEN 'QingYunZhong' THEN '清运中'
WHEN 'YiJinChang' THEN '已进场'
WHEN 'YiChuChang' THEN '已出场'
WHEN 'YiWanCheng' THEN '已完成'
ELSE ''
END order_status,
g.license_plate car_number,
f.nickname driver_name,
e.goods_name goods_name,
c.company_name company,
h.address,
h.lng lon,
h.lat,
IF(a.order_status = 'YiWanCheng', 1, 0) finish
FROM order_info a
LEFT JOIN (SELECT a.id, a.company_name, b.nickname
FROM biz_company a
INNER JOIN sys_user b ON b.id = a.user_id) c ON c.id = a.trans_company_id
LEFT JOIN sys_user d ON d.id = a.user_id
LEFT JOIN sys_user f ON f.id = a.driver_id
LEFT JOIN order_goods e ON e.id = a.goods_id
LEFT JOIN biz_truck g ON g.id = a.truck_id
INNER JOIN order_cargo_place h ON h.id = a.cargo_place_id
INNER JOIN goods_category i ON i.id = e.goods_category_id
WHERE a.order_status IN ('YiYuYue', 'DaiPaiDan', 'DaiJieDan', 'QingYunZhong', 'YiJinChang', 'YiChuChang', 'YiWanCheng')
ORDER BY a.create_time DESC
LIMIT 50
</select>
<select id="getProjects" resultType="com.njzscloud.supervisory.bs.pojo.result.Project">
SELECT g.project_name,
g.area,
g.town street,
g.address,
c.nickname realname,
c.phone mobile
FROM biz_project g
LEFT JOIN sys_user c ON c.id = g.user_id
ORDER BY g.create_time DESC
LIMIT 10
</select>
</mapper>

View File

@ -7,7 +7,7 @@
SELECT a.id,
a.sn,
a.station_id,
a.lane_id,
a.lane,
a.project_id,
a.trans_company_id,
a.user_id,
@ -38,7 +38,7 @@
a.deleted,
a.cargo_place_id,
a.car_in_out_id,
a.site_photos,
b.province,
b.city,
b.area,
@ -50,7 +50,6 @@
b.address,
b.lng,
b.lat,
c.goods_category_id,
c.origin_goods_id,
c.goods_name,
@ -62,7 +61,7 @@
c.tax_rate,
c.quantity,
c.total_money,
i.category_name,
d.rough_weight,
d.tare_weight,
d.settle_weight,
@ -72,53 +71,47 @@
d.out_body_photo,
d.in_time,
d.out_time,
e.license_plate,
e.truck_license,
e.vn_code,
e.qualification,
e.carrying_capacity,
e.tare_weight history_tare_weight,
e.audit_status,
e.audit_memo,
f.driver_name,
f.phone driver_phone,
f.driving_licence,
f.licence_start_time,
f.licence_end_time,
g.uscc tarffic_company_uscc,
g.company_name tarffic_company_company_name,
g.business_license tarffic_company_business_license,
g.license_start_time tarffic_company_license_start_time,
g.license_end_time tarffic_company_license_end_time,
g.legal_representative tarffic_company_legal_representative,
g.province tarffic_company_province,
g.city tarffic_company_city,
g.area tarffic_company_area,
g.town tarffic_company_town,
g.province_name tarffic_company_province_name,
g.city_name tarffic_company_city_name,
g.area_name tarffic_company_area_name,
g.town_name tarffic_company_town_name,
g.address tarffic_company_address,
g.lng tarffic_company_lng,
g.lat tarffic_company_lat,
g.contacts tarffic_company_contacts,
g.phone tarffic_company_phone,
g.uscc trans_uscc,
g.company_name trans_company_name,
g.business_license trans_business_license,
g.license_start_time trans_license_start_time,
g.license_end_time trans_license_end_time,
g.legal_representative trans_legal_representative,
g.province trans_province,
g.city trans_city,
g.area trans_area,
g.town trans_town,
g.province_name trans_province_name,
g.city_name trans_city_name,
g.area_name trans_area_name,
g.town_name trans_town_name,
g.address trans_address,
g.lng trans_lng,
g.lat trans_lat,
g.contacts trans_contacts,
g.phone trans_phone,
h.nickname,
h.phone
FROM order_info a
INNER JOIN order_cargo_place b ON b.id = a.cargo_place_id
INNER JOIN order_goods c ON c.id = a.goods_id
INNER JOIN order_car_in_out d ON d.id = a.car_in_out_id
INNER JOIN biz_truck e ON e.id = a.truck_id
INNER JOIN biz_driver f ON f.id = a.driver_id
INNER JOIN biz_company g ON g.id = a.trans_company_id
INNER JOIN sys_user h ON h.id = a.user_id
LEFT JOIN order_cargo_place b ON b.id = a.cargo_place_id
LEFT JOIN order_goods c ON c.id = a.goods_id
LEFT JOIN order_car_in_out d ON d.id = a.car_in_out_id
LEFT JOIN biz_truck e ON e.id = a.truck_id
LEFT JOIN biz_driver f ON f.id = a.driver_id
LEFT JOIN biz_company g ON g.id = a.trans_company_id
LEFT JOIN sys_user h ON h.id = a.user_id
LEFT JOIN goods_category i ON i.id = c.goods_category_id
</sql>
<select id="paging" resultType="com.njzscloud.supervisory.order.pojo.result.OrderPagingResult">
<include refid="base_select"/>

View File

@ -4,6 +4,7 @@
<mapper namespace="com.njzscloud.supervisory.sys.user.mapper.UserMapper">
<resultMap id="pagingResultMap" autoMapping="true" type="com.njzscloud.supervisory.sys.user.pojo.result.UserDetailResult">
<result column="biz_obj" property="bizObj" typeHandler="com.njzscloud.common.mp.support.handler.e.EnumTypeHandlerDealer"/>
<association property="account" autoMapping="true" javaType="com.njzscloud.supervisory.sys.user.pojo.result.UserAccountDetailResult">
<id column="account_id" property="id"/>
</association>
@ -16,6 +17,7 @@
a.avatar,
a.email,
a.phone,
a.biz_obj,
b.id account_id,
b.username,
b.email,

View File

@ -4,7 +4,7 @@
"avatar": "data:image/png;base64,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",
"version": "4.9.4",
"createdTime": "2023-4-13 11:53:52",
"updatedTime": "2025-9-13 22:32:18",
"updatedTime": "2025-9-15 16:35:54",
"dbConns": [],
"profile": {
"default": {
@ -2799,7 +2799,7 @@
"primaryKey": false,
"notNull": true,
"autoIncrement": false,
"defaultValue": "",
"defaultValue": "''",
"hideInGraph": false,
"refDict": "",
"extProps": {},
@ -10521,6 +10521,23 @@
"extProps": {},
"id": "D7E1B58D-74B5-44DA-8263-00D1AAE40FEC"
},
{
"defKey": "site_photos",
"defName": "现场照片",
"comment": "",
"type": "TEXT",
"len": "",
"scale": "",
"primaryKey": false,
"notNull": false,
"autoIncrement": false,
"defaultValue": "",
"hideInGraph": false,
"refDict": "",
"baseType": "B1BC2E92-6A75-44C0-A254-76E066047F53",
"extProps": {},
"id": "29E07EDF-8ACA-4D31-8175-C4EDE6F46147"
},
{
"defKey": "creator_id",
"defName": "创建人 Id",
@ -11521,7 +11538,7 @@
"len": "",
"scale": "",
"primaryKey": false,
"notNull": true,
"notNull": false,
"autoIncrement": false,
"defaultValue": "",
"hideInGraph": false,
@ -11548,7 +11565,7 @@
"len": 14,
"scale": 2,
"primaryKey": false,
"notNull": true,
"notNull": false,
"autoIncrement": false,
"defaultValue": "",
"hideInGraph": false,