From 4e276e66c8ab3e62b49d46b80d0605482b91b982 Mon Sep 17 00:00:00 2001
From: zss <zss@example.com>
Date: 星期二, 20 一月 2026 17:13:33 +0800
Subject: [PATCH] 无人值守

---
 src/main/java/com/ruoyi/unattended/service/UnattendedOperationService.java          |   17 ++
 src/main/java/com/ruoyi/unattended/service/impl/UnattendedOperationServiceImpl.java |   46 +++++++
 src/main/java/com/ruoyi/unattended/pojo/UnattendedOperation.java                    |  106 +++++++++++++++++
 src/main/java/com/ruoyi/unattended/pojo/vo/UnattendedOperationVo.java               |   20 +++
 src/main/java/com/ruoyi/unattended/controller/UnattendedOperationController.java    |  111 ++++++++++++++++++
 src/main/java/com/ruoyi/unattended/mapper/UnattendedOperationMapper.java            |   14 ++
 6 files changed, 314 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/unattended/controller/UnattendedOperationController.java b/src/main/java/com/ruoyi/unattended/controller/UnattendedOperationController.java
new file mode 100644
index 0000000..3e8ad49
--- /dev/null
+++ b/src/main/java/com/ruoyi/unattended/controller/UnattendedOperationController.java
@@ -0,0 +1,111 @@
+package com.ruoyi.unattended.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.pojo.Account;
+import com.ruoyi.account.service.AccountService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.unattended.pojo.UnattendedOperation;
+import com.ruoyi.unattended.service.UnattendedOperationService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+/**
+ * 鏃犱汉鍊煎畧
+ */
+@RestController
+@RequestMapping("/environmentAccess")
+@Api(tags = "鏃犱汉鍊煎畧")
+public class UnattendedOperationController {
+
+    @Resource
+    private UnattendedOperationService unattendedOperationService;
+
+
+    /**
+     * 鏂板
+     * @param unattendedOperation
+     * @return
+     */
+    @PostMapping("/weighbridgeSystemAdd")
+    @ApiOperation("鏂板")
+    public AjaxResult add(@RequestBody UnattendedOperation unattendedOperation) {
+        return AjaxResult.success(unattendedOperationService.save(unattendedOperation));
+    }
+
+    /**
+     * 鍒犻櫎
+     * @param ids
+     * @return
+     */
+    @DeleteMapping("/weighbridgeSystemDelete")
+    @ApiOperation("鍒犻櫎")
+    public AjaxResult delQualityInspect(@RequestBody List<Integer> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        }
+        //鍒犻櫎妫�楠屽崟
+        return AjaxResult.success(unattendedOperationService.removeBatchByIds(ids));
+    }
+
+    /**
+     * 淇敼
+     * @param unattendedOperation
+     * @return
+     */
+    @PutMapping("/weighbridgeSystemUpdate")
+    @ApiOperation("淇敼")
+    public AjaxResult update(@RequestBody UnattendedOperation unattendedOperation) {
+        return AjaxResult.success(unattendedOperationService.updateById(unattendedOperation));
+    }
+
+    /**
+     *鍒嗛〉鏌ヨ
+     * @param page
+     * @return
+     */
+    @GetMapping("/weighbridgeSystemPage")
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    public AjaxResult weighbridgeSystemPage(Page page,UnattendedOperation unattendedOperation) {
+        if (ObjectUtils.isNotNull(unattendedOperation.getPlateNumber())){
+            return AjaxResult.success(unattendedOperationService.page(page, new QueryWrapper<UnattendedOperation>().lambda()
+                    .eq(UnattendedOperation::getPlateNumber, unattendedOperation.getPlateNumber())));
+        }
+        return AjaxResult.success(unattendedOperationService.page(page));
+    }
+
+    /**
+     *璇︽儏
+     * @return
+     */
+    @GetMapping("/weighbridgeSystemInfo")
+    @ApiOperation("璇︽儏")
+    public AjaxResult accountListPage(Long id) {
+        return AjaxResult.success(unattendedOperationService.getById(id));
+    }
+
+    /**
+     *缁熻
+     * @return
+     */
+    @GetMapping("/weighbridgeDailyReport")
+    @ApiOperation("缁熻")
+    public AjaxResult weighbridgeDailyReport(String startDate,String endDate) {
+        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        LocalDateTime startDateTime = LocalDateTime.parse(startDate, dateTimeFormatter);
+        LocalDateTime endDateTime = LocalDateTime.parse(endDate, dateTimeFormatter);
+        return AjaxResult.success(unattendedOperationService.weighbridgeDailyReport(startDateTime,endDateTime));
+    }
+
+
+
+}
diff --git a/src/main/java/com/ruoyi/unattended/mapper/UnattendedOperationMapper.java b/src/main/java/com/ruoyi/unattended/mapper/UnattendedOperationMapper.java
new file mode 100644
index 0000000..c215d9c
--- /dev/null
+++ b/src/main/java/com/ruoyi/unattended/mapper/UnattendedOperationMapper.java
@@ -0,0 +1,14 @@
+package com.ruoyi.unattended.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.pojo.AccountReconciliation;
+import com.ruoyi.unattended.pojo.UnattendedOperation;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface UnattendedOperationMapper extends BaseMapper<UnattendedOperation> {
+
+}
diff --git a/src/main/java/com/ruoyi/unattended/pojo/UnattendedOperation.java b/src/main/java/com/ruoyi/unattended/pojo/UnattendedOperation.java
new file mode 100644
index 0000000..ad1aaf7
--- /dev/null
+++ b/src/main/java/com/ruoyi/unattended/pojo/UnattendedOperation.java
@@ -0,0 +1,106 @@
+package com.ruoyi.unattended.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 鏃犱汉鍊煎畧
+ */
+@TableName(value = "unattended_operation")
+@Data
+public class UnattendedOperation implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 搴忓彿
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 杞︾墝鍙�
+     */
+    @Excel(name = "杞︾墝鍙�")
+    private String plateNumber;
+
+    @ApiModelProperty(value = "绉伴噸鏃堕棿")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private LocalDateTime weightTime;
+
+    /**
+     * 鐨噸
+     */
+    @Excel(name = "鐨噸")
+    private BigDecimal tareWeight;
+
+    /**
+     * 姣涢噸
+     */
+    @Excel(name = "姣涢噸")
+    private BigDecimal grossWeight;
+
+    /**
+     * 鍋忕Щ
+     */
+    private BigDecimal positionOffset;
+
+    /**
+     * 鍙告満
+     */
+    private String driverName;
+
+    /**
+     * 鑱旂郴鐢佃瘽
+     */
+    private String contactPhone;
+
+    /**
+     * 璐х墿
+     */
+    private String cargoName;
+
+    /**
+     * 鍦扮缂栧彿
+     */
+    private String weighbridgeNumber;
+
+    /**
+     * 澶囨敞
+     */
+    @Excel(name = "澶囨敞")
+    private String remark;
+
+
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/unattended/pojo/vo/UnattendedOperationVo.java b/src/main/java/com/ruoyi/unattended/pojo/vo/UnattendedOperationVo.java
new file mode 100644
index 0000000..ebdf6a2
--- /dev/null
+++ b/src/main/java/com/ruoyi/unattended/pojo/vo/UnattendedOperationVo.java
@@ -0,0 +1,20 @@
+package com.ruoyi.unattended.pojo.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+
+@Data
+public class UnattendedOperationVo {
+
+    private Long tripCount;
+
+    private Long cargoVolume;
+
+    private BigDecimal deviationRate;
+
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate date;
+}
diff --git a/src/main/java/com/ruoyi/unattended/service/UnattendedOperationService.java b/src/main/java/com/ruoyi/unattended/service/UnattendedOperationService.java
new file mode 100644
index 0000000..1e72209
--- /dev/null
+++ b/src/main/java/com/ruoyi/unattended/service/UnattendedOperationService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.unattended.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.account.pojo.AccountReconciliation;
+import com.ruoyi.unattended.pojo.UnattendedOperation;
+import com.ruoyi.unattended.pojo.vo.UnattendedOperationVo;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+public interface UnattendedOperationService extends IService<UnattendedOperation> {
+
+
+    List<UnattendedOperationVo> weighbridgeDailyReport(LocalDateTime startDate, LocalDateTime endDate);
+}
diff --git a/src/main/java/com/ruoyi/unattended/service/impl/UnattendedOperationServiceImpl.java b/src/main/java/com/ruoyi/unattended/service/impl/UnattendedOperationServiceImpl.java
new file mode 100644
index 0000000..76df4e4
--- /dev/null
+++ b/src/main/java/com/ruoyi/unattended/service/impl/UnattendedOperationServiceImpl.java
@@ -0,0 +1,46 @@
+package com.ruoyi.unattended.service.impl;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.mapper.AccountReconciliationMapper;
+import com.ruoyi.account.pojo.AccountReconciliation;
+import com.ruoyi.account.service.AccountReconciliationService;
+import com.ruoyi.unattended.mapper.UnattendedOperationMapper;
+import com.ruoyi.unattended.pojo.UnattendedOperation;
+import com.ruoyi.unattended.pojo.vo.UnattendedOperationVo;
+import com.ruoyi.unattended.service.UnattendedOperationService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@AllArgsConstructor
+@Service
+public class UnattendedOperationServiceImpl extends ServiceImpl<UnattendedOperationMapper, UnattendedOperation> implements UnattendedOperationService {
+
+
+    private UnattendedOperationMapper unattendedOperationMapper;
+
+    @Override
+    public List<UnattendedOperationVo> weighbridgeDailyReport(LocalDateTime startDate, LocalDateTime endDate) {
+        List<UnattendedOperation> unattendedOperations = unattendedOperationMapper.selectList(Wrappers.<UnattendedOperation>lambdaQuery().between(UnattendedOperation::getWeightTime, startDate, endDate));
+        Map<LocalDateTime, List<UnattendedOperation>> listMap = unattendedOperations.stream().collect(Collectors.groupingBy(UnattendedOperation::getWeightTime));
+        List<UnattendedOperationVo> list = listMap.entrySet().stream().map(entry -> {
+            UnattendedOperationVo unattendedOperationVo = new UnattendedOperationVo();
+            unattendedOperationVo.setDate(entry.getKey().toLocalDate());
+            unattendedOperationVo.setTripCount((long) entry.getValue().size());
+            unattendedOperationVo.setCargoVolume(entry.getValue().stream().map(UnattendedOperation::getGrossWeight).mapToLong(BigDecimal::longValue).sum());
+            long sum = entry.getValue().stream().map(UnattendedOperation::getPositionOffset).mapToLong(BigDecimal::longValue).sum();
+            unattendedOperationVo.setDeviationRate(BigDecimal.valueOf(sum).divide(BigDecimal.valueOf(entry.getValue().size()), 4, BigDecimal.ROUND_HALF_UP));
+            return unattendedOperationVo;
+        }).collect(Collectors.toList());
+        return list;
+    }
+}

--
Gitblit v1.9.3