From ae659b7fe99a8862082a4ba4bb24148a2a6727ca Mon Sep 17 00:00:00 2001
From: tuqin <tuqin@tuqin.cn>
Date: 星期四, 08 十月 2026 16:57:40 +0800
Subject: [PATCH] feat(芯导): 仓储物流出库 / 人力资源(离职/在职/合同/薪资) / 环保门禁(门禁+智能巡检) 后端
---
src/main/java/com/ruoyi/envaccess/pojo/EnvAccessVehicle.java | 82 ++++
src/main/resources/mapper/envaccess/EnvInspectionMapper.xml | 34 +
src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java | 10
src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java | 19
src/main/java/com/ruoyi/staff/pojo/StaffContract.java | 134 ++++++
src/main/java/com/ruoyi/envaccess/service/IEnvInspectionService.java | 17
src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java | 7
src/main/resources/mapper/envaccess/EnvAccessVehicleMapper.xml | 37 +
src/main/java/com/ruoyi/staff/controller/StaffContractController.java | 97 ++++
src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml | 57 ++
src/main/java/com/ruoyi/envaccess/mapper/EnvInspectionMapper.java | 18
src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java | 7
src/main/java/com/ruoyi/staff/service/IStaffContractService.java | 19
src/main/java/com/ruoyi/envaccess/service/impl/EnvAccessVehicleServiceImpl.java | 35 +
src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java | 4
src/main/resources/mapper/staff/StaffContractMapper.xml | 37 +
src/main/java/com/ruoyi/envaccess/service/impl/EnvInspectionServiceImpl.java | 98 ++++
src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java | 18
src/main/java/com/ruoyi/staff/mapper/StaffContractMapper.java | 18
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java | 7
src/main/java/com/ruoyi/envaccess/controller/EnvAccessVehicleController.java | 58 ++
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java | 46 ++
src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java | 74 +++
src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java | 13
src/main/java/com/ruoyi/envaccess/mapper/EnvAccessVehicleMapper.java | 18
src/main/java/com/ruoyi/envaccess/pojo/EnvInspection.java | 100 +++++
src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java | 13
src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml | 6
src/main/java/com/ruoyi/envaccess/service/IEnvAccessVehicleService.java | 15
src/main/java/com/ruoyi/envaccess/controller/EnvInspectionController.java | 70 +++
30 files changed, 1,160 insertions(+), 8 deletions(-)
diff --git a/src/main/java/com/ruoyi/envaccess/controller/EnvAccessVehicleController.java b/src/main/java/com/ruoyi/envaccess/controller/EnvAccessVehicleController.java
new file mode 100644
index 0000000..c11720e
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/controller/EnvAccessVehicleController.java
@@ -0,0 +1,58 @@
+package com.ruoyi.envaccess.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.envaccess.pojo.EnvAccessVehicle;
+import com.ruoyi.envaccess.service.IEnvAccessVehicleService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 鐜繚闂ㄧ--杞﹁締/绉诲姩鏈烘鍙拌处锛堣繘鍑哄巶杞﹁締銆佸巶鍐呰溅杈嗐�侀潪閬撹矾绉诲姩鏈烘锛�
+ */
+@RestController
+@RequestMapping("/environmentAccess/vehicle")
+public class EnvAccessVehicleController {
+
+ @Resource
+ private IEnvAccessVehicleService envAccessVehicleService;
+
+ @GetMapping("/page")
+ public AjaxResult page(Page page, EnvAccessVehicle req) {
+ return AjaxResult.success(envAccessVehicleService.listPage(page, req));
+ }
+
+ @GetMapping("/{id}")
+ public AjaxResult detail(@PathVariable Long id) {
+ return AjaxResult.success(envAccessVehicleService.getById(id));
+ }
+
+ @PostMapping("/add")
+ @Log(title = "闂ㄧ绠$悊-鏂板", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody EnvAccessVehicle vehicle) {
+ vehicle.setId(null);
+ return envAccessVehicleService.save(vehicle) ? AjaxResult.success() : AjaxResult.error("鏂板澶辫触");
+ }
+
+ @PostMapping("/update")
+ @Log(title = "闂ㄧ绠$悊-淇敼", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody EnvAccessVehicle vehicle) {
+ return envAccessVehicleService.updateById(vehicle) ? AjaxResult.success() : AjaxResult.error("淇敼澶辫触");
+ }
+
+ @DeleteMapping("/delete")
+ @Log(title = "闂ㄧ绠$悊-鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ return envAccessVehicleService.removeByIds(ids) ? AjaxResult.success() : AjaxResult.error("鍒犻櫎澶辫触");
+ }
+
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, EnvAccessVehicle req) {
+ envAccessVehicleService.export(response, req);
+ }
+}
diff --git a/src/main/java/com/ruoyi/envaccess/controller/EnvInspectionController.java b/src/main/java/com/ruoyi/envaccess/controller/EnvInspectionController.java
new file mode 100644
index 0000000..f9e748e
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/controller/EnvInspectionController.java
@@ -0,0 +1,70 @@
+package com.ruoyi.envaccess.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.envaccess.pojo.EnvInspection;
+import com.ruoyi.envaccess.service.IEnvInspectionService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 鐜繚闂ㄧ--鏅鸿兘宸℃鍙拌处锛堝惈璺緞瑙勫垝/AI瑙嗛鍒嗘瀽/鎶ュ憡/鏃犱汉鏈烘満鍣ㄤ汉锛孉I涓庢棤浜烘満瀛楁棰勭暀锛�
+ */
+@RestController
+@RequestMapping("/environmentAccess/inspection")
+public class EnvInspectionController {
+
+ @Resource
+ private IEnvInspectionService envInspectionService;
+
+ @GetMapping("/page")
+ public AjaxResult page(Page page, EnvInspection req) {
+ return AjaxResult.success(envInspectionService.listPage(page, req));
+ }
+
+ @GetMapping("/{id}")
+ public AjaxResult detail(@PathVariable Long id) {
+ return AjaxResult.success(envInspectionService.getById(id));
+ }
+
+ @PostMapping("/add")
+ @Log(title = "鏅鸿兘宸℃-鏂板", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody EnvInspection inspection) {
+ inspection.setId(null);
+ if (inspection.getStatus() == null) {
+ inspection.setStatus(0);
+ }
+ return envInspectionService.save(inspection) ? AjaxResult.success() : AjaxResult.error("鏂板澶辫触");
+ }
+
+ @PostMapping("/update")
+ @Log(title = "鏅鸿兘宸℃-淇敼", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody EnvInspection inspection) {
+ return envInspectionService.updateById(inspection) ? AjaxResult.success() : AjaxResult.error("淇敼澶辫触");
+ }
+
+ @DeleteMapping("/delete")
+ @Log(title = "鏅鸿兘宸℃-鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult delete(@RequestBody List<Long> ids) {
+ return envInspectionService.removeByIds(ids) ? AjaxResult.success() : AjaxResult.error("鍒犻櫎澶辫触");
+ }
+
+ /**
+ * 鑷姩鐢熸垚宸℃鎶ュ憡
+ */
+ @GetMapping("/report/{id}")
+ @Log(title = "鏅鸿兘宸℃-鐢熸垚鎶ュ憡", businessType = BusinessType.OTHER)
+ public AjaxResult generateReport(@PathVariable Long id) {
+ return AjaxResult.success((Object) envInspectionService.generateReport(id));
+ }
+
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, EnvInspection req) {
+ envInspectionService.export(response, req);
+ }
+}
diff --git a/src/main/java/com/ruoyi/envaccess/mapper/EnvAccessVehicleMapper.java b/src/main/java/com/ruoyi/envaccess/mapper/EnvAccessVehicleMapper.java
new file mode 100644
index 0000000..d10b8dd
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/mapper/EnvAccessVehicleMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.envaccess.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.envaccess.pojo.EnvAccessVehicle;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface EnvAccessVehicleMapper extends BaseMapper<EnvAccessVehicle> {
+
+ IPage<EnvAccessVehicle> listPage(Page page, @Param("req") EnvAccessVehicle req);
+
+ List<EnvAccessVehicle> list(@Param("req") EnvAccessVehicle req);
+}
diff --git a/src/main/java/com/ruoyi/envaccess/mapper/EnvInspectionMapper.java b/src/main/java/com/ruoyi/envaccess/mapper/EnvInspectionMapper.java
new file mode 100644
index 0000000..bec5e1d
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/mapper/EnvInspectionMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.envaccess.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.envaccess.pojo.EnvInspection;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface EnvInspectionMapper extends BaseMapper<EnvInspection> {
+
+ IPage<EnvInspection> listPage(Page page, @Param("req") EnvInspection req);
+
+ List<EnvInspection> list(@Param("req") EnvInspection req);
+}
diff --git a/src/main/java/com/ruoyi/envaccess/pojo/EnvAccessVehicle.java b/src/main/java/com/ruoyi/envaccess/pojo/EnvAccessVehicle.java
new file mode 100644
index 0000000..183b1af
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/pojo/EnvAccessVehicle.java
@@ -0,0 +1,82 @@
+package com.ruoyi.envaccess.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.dto.DateQueryDto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 鐜繚闂ㄧ--杞﹁締/绉诲姩鏈烘鍙拌处
+ * env_access_vehicle
+ */
+@TableName(value = "env_access_vehicle")
+@Data
+public class EnvAccessVehicle extends DateQueryDto implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 绫诲瀷 1杩涘嚭鍘� 2鍘傚唴 3闈為亾璺Щ鍔ㄦ満姊�
+ */
+ @Excel(name = "绫诲瀷", readConverterExp = "1=杩涘嚭鍘傝溅杈�,2=鍘傚唴杞﹁締,3=闈為亾璺Щ鍔ㄦ満姊�")
+ private Integer vehicleType;
+
+ @Excel(name = "杞︾墝/鏈烘缂栧彿")
+ private String plateNo;
+
+ @Excel(name = "杞﹁締/鏈烘鍨嬪彿")
+ private String vehicleModel;
+
+ @Excel(name = "浣跨敤浜�")
+ private String driverName;
+
+ @Excel(name = "鑱旂郴鐢佃瘽")
+ private String driverPhone;
+
+ @Excel(name = "鐢ㄩ��")
+ private String usePurpose;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date occurTime;
+
+ /**
+ * 1杩涘巶 0鍑哄巶锛堣繘鍑哄巶鐢級
+ */
+ @Excel(name = "鏂瑰悜", readConverterExp = "1=杩涘巶,0=鍑哄巶")
+ private Integer direction;
+
+ @Excel(name = "鐘舵��")
+ private String status;
+
+ @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/envaccess/pojo/EnvInspection.java b/src/main/java/com/ruoyi/envaccess/pojo/EnvInspection.java
new file mode 100644
index 0000000..a424af3
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/pojo/EnvInspection.java
@@ -0,0 +1,100 @@
+package com.ruoyi.envaccess.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.dto.DateQueryDto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 鐜繚闂ㄧ--鏅鸿兘宸℃鍙拌处
+ * env_inspection
+ */
+@TableName(value = "env_inspection")
+@Data
+public class EnvInspection extends DateQueryDto implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ @Excel(name = "宸℃鍚嶇О")
+ private String inspectionName;
+
+ /**
+ * 1瀹氭湡 2涓存椂 3鏁呴殰
+ */
+ @Excel(name = "宸℃绫诲瀷", readConverterExp = "1=瀹氭湡宸℃,2=涓存椂宸℃,3=鏁呴殰宸℃")
+ private Integer inspectionType;
+
+ @Excel(name = "宸℃璺緞瑙勫垝")
+ private String routePlan;
+
+ @Excel(name = "宸℃鍖哄煙")
+ private String area;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "璁″垝寮�濮嬫椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date planStartTime;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "璁″垝缁撴潫鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date planEndTime;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "瀹為檯寮�濮嬫椂闂�", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date actualStartTime;
+
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "瀹為檯缁撴潫鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ private Date actualEndTime;
+
+ @Excel(name = "宸℃浜哄憳")
+ private String inspector;
+
+ @Excel(name = "宸℃缁撴灉")
+ private String inspectionResult;
+
+ @ApiModelProperty(value = "AI瑙嗛鍒嗘瀽缁撴灉(棰勭暀)")
+ private String aiAnalysis;
+
+ @ApiModelProperty(value = "鏃犱汉鏈�/鏈哄櫒浜哄洖浼犳暟鎹�(棰勭暀)")
+ private String uavData;
+
+ @ApiModelProperty(value = "鑷姩鐢熸垚宸℃鎶ュ憡")
+ private String reportPath;
+
+ /**
+ * 0寰呮墽琛� 1鎵ц涓� 2宸插畬鎴� 3宸插彇娑�
+ */
+ @Excel(name = "鐘舵��", readConverterExp = "0=寰呮墽琛�,1=鎵ц涓�,2=宸插畬鎴�,3=宸插彇娑�")
+ private Integer status;
+
+ @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/envaccess/service/IEnvAccessVehicleService.java b/src/main/java/com/ruoyi/envaccess/service/IEnvAccessVehicleService.java
new file mode 100644
index 0000000..462c428
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/service/IEnvAccessVehicleService.java
@@ -0,0 +1,15 @@
+package com.ruoyi.envaccess.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.envaccess.pojo.EnvAccessVehicle;
+
+import javax.servlet.http.HttpServletResponse;
+
+public interface IEnvAccessVehicleService extends IService<EnvAccessVehicle> {
+
+ IPage<EnvAccessVehicle> listPage(Page page, EnvAccessVehicle req);
+
+ void export(HttpServletResponse response, EnvAccessVehicle req);
+}
diff --git a/src/main/java/com/ruoyi/envaccess/service/IEnvInspectionService.java b/src/main/java/com/ruoyi/envaccess/service/IEnvInspectionService.java
new file mode 100644
index 0000000..7096111
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/service/IEnvInspectionService.java
@@ -0,0 +1,17 @@
+package com.ruoyi.envaccess.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.envaccess.pojo.EnvInspection;
+
+import javax.servlet.http.HttpServletResponse;
+
+public interface IEnvInspectionService extends IService<EnvInspection> {
+
+ IPage<EnvInspection> listPage(Page page, EnvInspection req);
+
+ String generateReport(Long id);
+
+ void export(HttpServletResponse response, EnvInspection req);
+}
diff --git a/src/main/java/com/ruoyi/envaccess/service/impl/EnvAccessVehicleServiceImpl.java b/src/main/java/com/ruoyi/envaccess/service/impl/EnvAccessVehicleServiceImpl.java
new file mode 100644
index 0000000..82e9e05
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/service/impl/EnvAccessVehicleServiceImpl.java
@@ -0,0 +1,35 @@
+package com.ruoyi.envaccess.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.envaccess.mapper.EnvAccessVehicleMapper;
+import com.ruoyi.envaccess.pojo.EnvAccessVehicle;
+import com.ruoyi.envaccess.service.IEnvAccessVehicleService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
+public class EnvAccessVehicleServiceImpl extends ServiceImpl<EnvAccessVehicleMapper, EnvAccessVehicle> implements IEnvAccessVehicleService {
+
+ private EnvAccessVehicleMapper envAccessVehicleMapper;
+
+ @Override
+ public IPage<EnvAccessVehicle> listPage(Page page, EnvAccessVehicle req) {
+ return envAccessVehicleMapper.listPage(page, req);
+ }
+
+ @Override
+ public void export(HttpServletResponse response, EnvAccessVehicle req) {
+ List<EnvAccessVehicle> list = envAccessVehicleMapper.list(req);
+ ExcelUtil<EnvAccessVehicle> util = new ExcelUtil<EnvAccessVehicle>(EnvAccessVehicle.class);
+ util.exportExcel(response, list, "闂ㄧ绠$悊鍙拌处");
+ }
+}
diff --git a/src/main/java/com/ruoyi/envaccess/service/impl/EnvInspectionServiceImpl.java b/src/main/java/com/ruoyi/envaccess/service/impl/EnvInspectionServiceImpl.java
new file mode 100644
index 0000000..5ea22b8
--- /dev/null
+++ b/src/main/java/com/ruoyi/envaccess/service/impl/EnvInspectionServiceImpl.java
@@ -0,0 +1,98 @@
+package com.ruoyi.envaccess.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.envaccess.mapper.EnvInspectionMapper;
+import com.ruoyi.envaccess.pojo.EnvInspection;
+import com.ruoyi.envaccess.service.IEnvInspectionService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
+public class EnvInspectionServiceImpl extends ServiceImpl<EnvInspectionMapper, EnvInspection> implements IEnvInspectionService {
+
+ private EnvInspectionMapper envInspectionMapper;
+
+ @Override
+ public IPage<EnvInspection> listPage(Page page, EnvInspection req) {
+ return envInspectionMapper.listPage(page, req);
+ }
+
+ @Override
+ public void export(HttpServletResponse response, EnvInspection req) {
+ List<EnvInspection> list = envInspectionMapper.list(req);
+ ExcelUtil<EnvInspection> util = new ExcelUtil<EnvInspection>(EnvInspection.class);
+ util.exportExcel(response, list, "鏅鸿兘宸℃鍙拌处");
+ }
+
+ /**
+ * 鏍规嵁宸℃璁板綍鑷姩鐢熸垚宸℃鎶ュ憡锛圚TML锛夛紝骞跺啓鍥� report_path
+ */
+ @Override
+ public String generateReport(Long id) {
+ EnvInspection it = getById(id);
+ if (it == null) {
+ throw new BaseException("宸℃璁板綍涓嶅瓨鍦�");
+ }
+ String typeText = it.getInspectionType() == null ? "" :
+ (it.getInspectionType() == 1 ? "瀹氭湡宸℃" : it.getInspectionType() == 2 ? "涓存椂宸℃" :
+ it.getInspectionType() == 3 ? "鏁呴殰宸℃" : "");
+ String statusText = it.getStatus() == null ? "" :
+ (it.getStatus() == 0 ? "寰呮墽琛�" : it.getStatus() == 1 ? "鎵ц涓�" :
+ it.getStatus() == 2 ? "宸插畬鎴�" : it.getStatus() == 3 ? "宸插彇娑�" : "");
+ String now = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
+
+ StringBuilder sb = new StringBuilder();
+ sb.append("<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:w='urn:schemas-microsoft-com:office:word'>")
+ .append("<head><meta charset='utf-8'><title>鏅鸿兘宸℃鎶ュ憡</title></head><body>");
+ sb.append("<h2 style='text-align:center;'>鏅鸿兘宸℃鎶ュ憡</h2>");
+ sb.append("<p style='text-align:right;'>鎶ュ憡鐢熸垚鏃堕棿锛�").append(now).append("</p>");
+ sb.append("<table border='1' cellspacing='0' cellpadding='6' style='border-collapse:collapse;width:100%;font-size:14px;'>");
+ row(sb, "宸℃鍚嶇О", it.getInspectionName());
+ row(sb, "宸℃绫诲瀷", typeText);
+ row(sb, "宸℃鍖哄煙", it.getArea());
+ row(sb, "宸℃璺緞瑙勫垝", it.getRoutePlan());
+ row(sb, "璁″垝鏃堕棿", fmt(it.getPlanStartTime()) + " ~ " + fmt(it.getPlanEndTime()));
+ row(sb, "瀹為檯鏃堕棿", fmt(it.getActualStartTime()) + " ~ " + fmt(it.getActualEndTime()));
+ row(sb, "宸℃浜哄憳", it.getInspector());
+ row(sb, "宸℃鐘舵��", statusText);
+ row(sb, "宸℃缁撴灉/璁板綍", it.getInspectionResult());
+ row(sb, "AI瑙嗛鍒嗘瀽缁撴灉", it.getAiAnalysis());
+ row(sb, "鏃犱汉鏈�/鏈哄櫒浜烘暟鎹�", it.getUavData());
+ row(sb, "澶囨敞", it.getRemark());
+ sb.append("</table>");
+ sb.append("<p style='margin-top:30px;'>宸℃浜虹瀛楋細________________ 瀹℃壒浜虹瀛楋細________________</p>");
+ sb.append("</body></html>");
+
+ String content = sb.toString();
+ EnvInspection upd = new EnvInspection();
+ upd.setId(id);
+ upd.setReportPath(content);
+ updateById(upd);
+ return content;
+ }
+
+ private static String fmt(java.util.Date d) {
+ if (d == null) {
+ return "";
+ }
+ return new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(d);
+ }
+
+ private static void row(StringBuilder sb, String label, Object value) {
+ sb.append("<tr><td style='background:#f0f1f5;width:180px;'>").append(label)
+ .append("</td><td>").append(value == null ? "" : String.valueOf(value).replace("\n", "<br/>"))
+ .append("</td></tr>");
+ }
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
index d7f1a84..f37acc5 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ProcurementRecordOutController.java
@@ -98,4 +98,22 @@
util.exportExcel(response, list, "鐢熶骇鍑哄簱鍙拌处");
}
+ /**
+ * 閫�璐у嚭搴擄紙閲囪喘閫�璐у嚭搴擄級鍙拌处鏌ヨ
+ */
+ @GetMapping("/listPageByPurchaseReturn")
+ @Log(title = "閫�璐у嚭搴�-鍑哄簱鍙拌处-鍑哄簱鏌ヨ", businessType = BusinessType.OTHER)
+ public AjaxResult listPageByPurchaseReturn(Page page, ProcurementRecordOutPageDto procurementDto) {
+ IPage<ProcurementRecordOutPageDto> result = procurementRecordOutService.listPageByPurchaseReturn(page, procurementDto);
+ return AjaxResult.success(result);
+ }
+
+ /**
+ * 閫�璐у嚭搴擄紙閲囪喘閫�璐у嚭搴擄級鍙拌处瀵煎嚭
+ */
+ @PostMapping("/exportPurchaseReturn")
+ public void exportPurchaseReturn(HttpServletResponse response) {
+ procurementRecordOutService.exportPurchaseReturn(response);
+ }
+
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
index 9124e75..44c0e0d 100644
--- a/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ProcurementRecordOutAdd.java
@@ -20,8 +20,13 @@
private Integer salesLedgerProductId;
/**
- * 鍑哄簱绫诲瀷 1-閲囪喘鍑哄簱 2-閿�鍞嚭搴� 3-鑷畾涔�
+ * 鍑哄簱绫诲瀷 1-閲囪喘鍑哄簱 2-閿�鍞嚭搴� 3-鑷畾涔夊嚭搴�(鍙戞枡/棰嗙敤) 5-閫�璐у嚭搴�(閲囪喘閫�璐�)
*/
private Integer type;
+ /**
+ * 渚涘簲鍟嗗悕绉帮紙閫�璐у嚭搴�-閫�鍥炰緵搴斿晢鏃朵娇鐢級
+ */
+ private String supplierName;
+
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
index 6cd9dab..a54314a 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ProcurementRecordOutMapper.java
@@ -26,4 +26,14 @@
IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
+
+ /**
+ * 閫�璐у嚭搴擄紙閲囪喘閫�璐у嚭搴擄級鍙拌处鍒嗛〉
+ */
+ IPage<ProcurementRecordOutPageDto> listPageByPurchaseReturn(Page page,@Param("req") ProcurementRecordOutPageDto procurementDto);
+
+ /**
+ * 閫�璐у嚭搴撳彴璐﹀鍑烘暟鎹�
+ */
+ List<ProcurementRecordOutPageDto> listPurchaseReturn();
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
index aa85a3d..42d469c 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ProcurementRecordOut.java
@@ -49,11 +49,16 @@
/**
- * 鍑哄簱绫诲瀷 1-閲囪喘 2-閿�鍞� 3-鑷畾涔�
+ * 鍑哄簱绫诲瀷 1-閲囪喘鍑哄簱 2-閿�鍞嚭搴� 3-鑷畾涔夊嚭搴�(鍙戞枡/棰嗙敤) 5-閫�璐у嚭搴�(閲囪喘閫�璐�)
*/
private Integer type;
/**
+ * 渚涘簲鍟嗗悕绉帮紙閫�璐у嚭搴�-閫�鍥炰緵搴斿晢鏃惰褰曪級
+ */
+ private String supplierName;
+
+ /**
* 鍑哄簱鐢ㄦ埛
*/
private String createBy;
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
index a8fb7eb..cdd4ab1 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ProcurementRecordOutService.java
@@ -27,4 +27,8 @@
IPage<ProcurementRecordOutPageDto> listPageByProduct(Page page, ProcurementRecordOutPageDto procurementDto);
IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto);
+
+ IPage<ProcurementRecordOutPageDto> listPageByPurchaseReturn(Page page, ProcurementRecordOutPageDto procurementDto);
+
+ void exportPurchaseReturn(HttpServletResponse response);
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
index c8fedc3..b9f9641 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordOutServiceImpl.java
@@ -74,6 +74,7 @@
.inboundBatches(aLong.equals(0L) ? "绗�1鎵规" : "绗�"+ (aLong + 1) + "鎵规")
.inboundNum(new BigDecimal(procurementRecordOutAdd.getQuantity()))
.type(procurementRecordOutAdd.getType())
+ .supplierName(procurementRecordOutAdd.getSupplierName())
.createTime(localDateTime == null ? LocalDateTime.now() : localDateTime)
.createUser(Long.valueOf(procurementRecordOutAdd.getUserId()))
.createBy(sysUser.getNickName())
@@ -118,4 +119,16 @@
public IPage<ProcurementRecordOutPageDto> listPageByCustom(Page page, ProcurementRecordOutPageDto procurementDto) {
return procurementRecordOutMapper.listPageByCustom(page, procurementDto);
}
+
+ @Override
+ public IPage<ProcurementRecordOutPageDto> listPageByPurchaseReturn(Page page, ProcurementRecordOutPageDto procurementDto) {
+ return procurementRecordOutMapper.listPageByPurchaseReturn(page, procurementDto);
+ }
+
+ @Override
+ public void exportPurchaseReturn(HttpServletResponse response) {
+ List<ProcurementRecordOutPageDto> list = procurementRecordOutMapper.listPurchaseReturn();
+ ExcelUtil<ProcurementRecordOutPageDto> util = new ExcelUtil<>(ProcurementRecordOutPageDto.class);
+ util.exportExcel(response, list, "閫�璐у嚭搴撳彴璐�");
+ }
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
index 9a141a4..2896718 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ProcurementRecordServiceImpl.java
@@ -34,6 +34,7 @@
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -703,7 +704,7 @@
}
LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect)
- .eq(ProcurementRecordOut::getType, 1);
+ .in(ProcurementRecordOut::getType, Arrays.asList(1, 5));
List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
if(CollectionUtils.isEmpty( procurementRecords)){
return procurementPageDtoIPage;
@@ -743,7 +744,7 @@
}
LambdaQueryWrapper<ProcurementRecordOut> procurementRecordLambdaQueryWrapper = new LambdaQueryWrapper<>();
procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getProcurementRecordStorageId, collect);
- procurementRecordLambdaQueryWrapper.eq(ProcurementRecordOut::getType,1);
+ procurementRecordLambdaQueryWrapper.in(ProcurementRecordOut::getType, Arrays.asList(1, 5));
List<ProcurementRecordOut> procurementRecords = procurementRecordOutMapper.selectList(procurementRecordLambdaQueryWrapper);
if(CollectionUtils.isEmpty( procurementRecords)){
return procurementPageDtoCopyIPage;
@@ -751,7 +752,7 @@
for (ProcurementPageDtoCopy dto : procurementPageDtoCopyList) {
// 鏍规嵁閲囪喘鍙拌处ID绛涢�夊搴旂殑鍑哄簱璁板綍
List<ProcurementRecordOut> collect1 = procurementRecords.stream()
- .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()) && ProcurementRecordOut.getType().equals(1))
+ .filter(ProcurementRecordOut -> ProcurementRecordOut.getProcurementRecordStorageId().equals(dto.getId()) && (ProcurementRecordOut.getType().equals(1) || ProcurementRecordOut.getType().equals(5)))
.collect(Collectors.toList());
// 濡傛灉娌℃湁鐩稿叧鐨勫嚭搴撹褰曪紝璺宠繃璇ユ潯鏁版嵁
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffContractController.java b/src/main/java/com/ruoyi/staff/controller/StaffContractController.java
new file mode 100644
index 0000000..70b1f4a
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/controller/StaffContractController.java
@@ -0,0 +1,97 @@
+package com.ruoyi.staff.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.pojo.StaffContract;
+import com.ruoyi.staff.service.IStaffContractService;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 鍚堝悓绠$悊锛堝憳宸ュ姵鍔ㄥ悎鍚岋級
+ */
+@RestController
+@RequestMapping("/staff/contract")
+public class StaffContractController {
+
+ @Resource
+ private IStaffContractService staffContractService;
+
+ /**
+ * 鍚堝悓鍙拌处鍒嗛〉鏌ヨ
+ */
+ @GetMapping("/listPage")
+ public AjaxResult listPage(Page page, StaffContract req) {
+ return AjaxResult.success(staffContractService.listPage(page, req));
+ }
+
+ /**
+ * 鍚堝悓璇︽儏
+ */
+ @GetMapping("/{id}")
+ public AjaxResult detail(@PathVariable Long id) {
+ return AjaxResult.success(staffContractService.getById(id));
+ }
+
+ /**
+ * 鏂板鍚堝悓
+ */
+ @PostMapping("/add")
+ @Log(title = "鍚堝悓绠$悊-鏂板", businessType = BusinessType.INSERT)
+ public AjaxResult add(@RequestBody StaffContract staffContract) {
+ staffContract.setId(null);
+ if (staffContract.getStatus() == null) {
+ staffContract.setStatus(0);
+ }
+ return staffContractService.save(staffContract) ? AjaxResult.success() : AjaxResult.error("鏂板澶辫触");
+ }
+
+ /**
+ * 淇敼鍚堝悓
+ */
+ @PostMapping("/update")
+ @Log(title = "鍚堝悓绠$悊-淇敼", businessType = BusinessType.UPDATE)
+ public AjaxResult update(@RequestBody StaffContract staffContract) {
+ return staffContractService.updateById(staffContract) ? AjaxResult.success() : AjaxResult.error("淇敼澶辫触");
+ }
+
+ /**
+ * 鍒犻櫎鍚堝悓
+ */
+ @DeleteMapping("/del")
+ @Log(title = "鍚堝悓绠$悊-鍒犻櫎", businessType = BusinessType.DELETE)
+ public AjaxResult del(@RequestBody List<Long> ids) {
+ return staffContractService.removeByIds(ids) ? AjaxResult.success() : AjaxResult.error("鍒犻櫎澶辫触");
+ }
+
+ /**
+ * 缁鍚堝悓
+ */
+ @PostMapping("/renew/{id}")
+ @Log(title = "鍚堝悓绠$悊-缁", businessType = BusinessType.UPDATE)
+ public AjaxResult renew(@PathVariable Long id, @RequestBody StaffContract staffContract) {
+ return staffContractService.renew(id, staffContract) > 0 ? AjaxResult.success() : AjaxResult.error("缁澶辫触");
+ }
+
+ /**
+ * 瑙i櫎鍚堝悓
+ */
+ @PostMapping("/terminate/{id}")
+ @Log(title = "鍚堝悓绠$悊-瑙i櫎", businessType = BusinessType.UPDATE)
+ public AjaxResult terminate(@PathVariable Long id, @RequestBody StaffContract staffContract) {
+ return staffContractService.terminate(id, staffContract) > 0 ? AjaxResult.success() : AjaxResult.error("瑙i櫎澶辫触");
+ }
+
+ /**
+ * 鍚堝悓瀵煎嚭
+ */
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, StaffContract req) {
+ staffContractService.export(response, req);
+ }
+}
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
index 7d73759..f5c9850 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -79,5 +79,51 @@
staffOnJobService.staffOnJobExport(response, staffOnJob);
}
+ /**
+ * 鏂板鍦ㄨ亴鍛樺伐
+ */
+ @PostMapping
+ public AjaxResult add(@RequestBody StaffOnJob staffOnJob) {
+ if (staffOnJob.getStaffState() == null) {
+ staffOnJob.setStaffState(1);
+ }
+ return staffOnJobService.save(staffOnJob) ? AjaxResult.success() : AjaxResult.error("鏂板澶辫触");
+ }
+
+ /**
+ * 淇敼鍦ㄨ亴鍛樺伐
+ */
+ @PutMapping("/{id}")
+ public AjaxResult update(@PathVariable Long id, @RequestBody StaffOnJob staffOnJob) {
+ staffOnJob.setId(id);
+ return staffOnJobService.updateById(staffOnJob) ? AjaxResult.success() : AjaxResult.error("淇敼澶辫触");
+ }
+
+ /**
+ * 鍒犻櫎鍦ㄨ亴鍛樺伐
+ */
+ @DeleteMapping("/del")
+ public AjaxResult del(@RequestBody List<Long> ids) {
+ return staffOnJobService.removeByIds(ids) ? AjaxResult.success() : AjaxResult.error("鍒犻櫎澶辫触");
+ }
+
+ /**
+ * 鍦ㄨ亴鍛樺伐缁熻锛堝湪鑱屼汉鏁� / 钖祫鍚堣锛�
+ */
+ @GetMapping("/statistics")
+ public AjaxResult statistics() {
+ List<StaffOnJob> list = staffOnJobService.list();
+ long onJobCount = list.stream()
+ .filter(s -> s.getStaffState() != null && s.getStaffState() == 1).count();
+ java.math.BigDecimal salaryTotal = list.stream()
+ .filter(s -> s.getStaffState() != null && s.getStaffState() == 1 && s.getSalary() != null)
+ .map(StaffOnJob::getSalary)
+ .reduce(java.math.BigDecimal.ZERO, java.math.BigDecimal::add);
+ java.util.Map<String, Object> map = new java.util.HashMap<>();
+ map.put("onJobCount", onJobCount);
+ map.put("salaryTotal", salaryTotal);
+ return AjaxResult.success(map);
+ }
+
}
diff --git a/src/main/java/com/ruoyi/staff/mapper/StaffContractMapper.java b/src/main/java/com/ruoyi/staff/mapper/StaffContractMapper.java
new file mode 100644
index 0000000..50174de
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/mapper/StaffContractMapper.java
@@ -0,0 +1,18 @@
+package com.ruoyi.staff.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.staff.pojo.StaffContract;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface StaffContractMapper extends BaseMapper<StaffContract> {
+
+ IPage<StaffContract> listPage(Page page, @Param("req") StaffContract req);
+
+ List<StaffContract> list(@Param("req") StaffContract req);
+}
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffContract.java b/src/main/java/com/ruoyi/staff/pojo/StaffContract.java
new file mode 100644
index 0000000..c11d6f4
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffContract.java
@@ -0,0 +1,134 @@
+package com.ruoyi.staff.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.dto.DateQueryDto;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * 浜哄憳绠$悊--鍔冲姩鍚堝悓
+ * staff_contract
+ */
+@TableName(value = "staff_contract")
+@Data
+public class StaffContract extends DateQueryDto implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 搴忓彿
+ */
+ @TableId(type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 鍛樺伐缂栧彿
+ */
+ @Excel(name = "鍛樺伐缂栧彿")
+ private String staffNo;
+
+ /**
+ * 鍛樺伐濮撳悕
+ */
+ @Excel(name = "鍛樺伐濮撳悕")
+ private String staffName;
+
+ /**
+ * 宀椾綅
+ */
+ @Excel(name = "宀椾綅")
+ private String postJob;
+
+ /**
+ * 绛捐鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "绛捐鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date signDate;
+
+ /**
+ * 鍚堝悓寮�濮嬫棩鏈�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鍚堝悓寮�濮嬫棩鏈�", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date startDate;
+
+ /**
+ * 鍚堝悓缁撴潫鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鍚堝悓缁撴潫鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date endDate;
+
+ /**
+ * 鍚堝悓骞撮檺
+ */
+ @Excel(name = "鍚堝悓骞撮檺")
+ private Integer contractTerm;
+
+ /**
+ * 鍚堝悓鍐呭
+ */
+ @Excel(name = "鍚堝悓鍐呭")
+ private String contractContent;
+
+ /**
+ * 鐘舵�� 0鏈夋晥 1宸茬画绛� 2宸茶В闄�
+ */
+ @ApiModelProperty(value = "鐘舵�� 0鏈夋晥 1宸茬画绛� 2宸茶В闄�")
+ private Integer status;
+
+ /**
+ * 缁鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "缁鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date renewDate;
+
+ /**
+ * 缁鍚庡埌鏈熸棩鏈�
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "缁鍚庡埌鏈熸棩鏈�", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date renewEndDate;
+
+ /**
+ * 瑙i櫎鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "瑙i櫎鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date terminateDate;
+
+ /**
+ * 瑙i櫎鍘熷洜
+ */
+ @Excel(name = "瑙i櫎鍘熷洜")
+ private String terminateReason;
+
+ 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/staff/pojo/StaffJoinLeaveRecord.java b/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
index 8de0b69..f41f9c9 100644
--- a/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffJoinLeaveRecord.java
@@ -141,6 +141,25 @@
@Excel(name = "鍚堝悓缁撴潫鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
private Date contractEndTime;
+ /**
+ * 绂昏亴鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "绂昏亴鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date leaveDate;
+
+ /**
+ * 绂昏亴鍘熷洜
+ */
+ @Excel(name = "绂昏亴鍘熷洜")
+ private String leaveReason;
+
+ /**
+ * 宸ヤ綔浜ゆ帴鎯呭喌
+ */
+ @Excel(name = "宸ヤ綔浜ゆ帴鎯呭喌")
+ private String handoverInfo;
+
@ApiModelProperty(value = "鍒涘缓鏃堕棿")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
diff --git a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
index dc17ed2..8cc22a0 100644
--- a/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
+++ b/src/main/java/com/ruoyi/staff/pojo/StaffOnJob.java
@@ -123,6 +123,19 @@
@Excel(name = "鍚堝悓鍒版湡鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
private Date contractExpireTime;
+ /**
+ * 鍏ヨ亴鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鍏ヨ亴鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd")
+ private Date entryDate;
+
+ /**
+ * 钖祫
+ */
+ @Excel(name = "钖祫")
+ private java.math.BigDecimal salary;
+
@ApiModelProperty(value = "鍒涘缓鏃堕棿")
@TableField(fill = FieldFill.INSERT)
diff --git a/src/main/java/com/ruoyi/staff/service/IStaffContractService.java b/src/main/java/com/ruoyi/staff/service/IStaffContractService.java
new file mode 100644
index 0000000..b12f6e4
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/IStaffContractService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.staff.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.staff.pojo.StaffContract;
+
+import javax.servlet.http.HttpServletResponse;
+
+public interface IStaffContractService extends IService<StaffContract> {
+
+ IPage<StaffContract> listPage(Page page, StaffContract req);
+
+ int renew(Long id, StaffContract req);
+
+ int terminate(Long id, StaffContract req);
+
+ void export(HttpServletResponse response, StaffContract req);
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java
new file mode 100644
index 0000000..127c81c
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffContractServiceImpl.java
@@ -0,0 +1,74 @@
+package com.ruoyi.staff.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.staff.mapper.StaffContractMapper;
+import com.ruoyi.staff.pojo.StaffContract;
+import com.ruoyi.staff.service.IStaffContractService;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+@Transactional(rollbackFor = Exception.class)
+public class StaffContractServiceImpl extends ServiceImpl<StaffContractMapper, StaffContract> implements IStaffContractService {
+
+ private StaffContractMapper staffContractMapper;
+
+ @Override
+ public IPage<StaffContract> listPage(Page page, StaffContract req) {
+ return staffContractMapper.listPage(page, req);
+ }
+
+ /**
+ * 缁锛氳褰曠画绛炬棩鏈�/缁鍚庡埌鏈熸棩鏈燂紝鐘舵�佺疆"宸茬画绛�"锛屽苟鏇存柊鍚堝悓缁撴潫鏃ユ湡
+ */
+ @Override
+ public int renew(Long id, StaffContract req) {
+ StaffContract contract = staffContractMapper.selectById(id);
+ if (contract == null) {
+ throw new BaseException("鍚堝悓涓嶅瓨鍦�");
+ }
+ contract.setStatus(1);
+ if (req.getRenewDate() != null) {
+ contract.setRenewDate(req.getRenewDate());
+ }
+ if (req.getRenewEndDate() != null) {
+ contract.setRenewEndDate(req.getRenewEndDate());
+ contract.setEndDate(req.getRenewEndDate());
+ }
+ if (req.getContractTerm() != null) {
+ contract.setContractTerm(req.getContractTerm());
+ }
+ return staffContractMapper.updateById(contract);
+ }
+
+ /**
+ * 瑙i櫎锛氳褰曡В闄ゆ棩鏈�/鍘熷洜锛岀姸鎬佺疆"宸茶В闄�"
+ */
+ @Override
+ public int terminate(Long id, StaffContract req) {
+ StaffContract contract = staffContractMapper.selectById(id);
+ if (contract == null) {
+ throw new BaseException("鍚堝悓涓嶅瓨鍦�");
+ }
+ contract.setStatus(2);
+ contract.setTerminateDate(req.getTerminateDate());
+ contract.setTerminateReason(req.getTerminateReason());
+ return staffContractMapper.updateById(contract);
+ }
+
+ @Override
+ public void export(HttpServletResponse response, StaffContract req) {
+ List<StaffContract> list = staffContractMapper.list(req);
+ ExcelUtil<StaffContract> util = new ExcelUtil<StaffContract>(StaffContract.class);
+ util.exportExcel(response, list, "鍚堝悓绠$悊");
+ }
+}
diff --git a/src/main/resources/mapper/envaccess/EnvAccessVehicleMapper.xml b/src/main/resources/mapper/envaccess/EnvAccessVehicleMapper.xml
new file mode 100644
index 0000000..d7dce2d
--- /dev/null
+++ b/src/main/resources/mapper/envaccess/EnvAccessVehicleMapper.xml
@@ -0,0 +1,37 @@
+<?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.ruoyi.envaccess.mapper.EnvAccessVehicleMapper">
+ <select id="listPage" resultType="com.ruoyi.envaccess.pojo.EnvAccessVehicle">
+ SELECT * FROM env_access_vehicle
+ <where>
+ <if test="req.vehicleType != null">
+ AND vehicle_type = #{req.vehicleType}
+ </if>
+ <if test="req.plateNo != null and req.plateNo != ''">
+ AND plate_no LIKE CONCAT('%',#{req.plateNo},'%')
+ </if>
+ <if test="req.driverName != null and req.driverName != ''">
+ AND driver_name LIKE CONCAT('%',#{req.driverName},'%')
+ </if>
+ <if test="req.entryDateStart != null and req.entryDateStart != ''">
+ AND occur_time >= #{req.entryDateStart}
+ </if>
+ <if test="req.entryDateEnd != null and req.entryDateEnd != ''">
+ AND occur_time <= CONCAT(#{req.entryDateEnd},' 23:59:59')
+ </if>
+ </where>
+ ORDER BY id DESC
+ </select>
+ <select id="list" resultType="com.ruoyi.envaccess.pojo.EnvAccessVehicle">
+ SELECT * FROM env_access_vehicle
+ <where>
+ <if test="req.vehicleType != null">
+ AND vehicle_type = #{req.vehicleType}
+ </if>
+ <if test="req.plateNo != null and req.plateNo != ''">
+ AND plate_no LIKE CONCAT('%',#{req.plateNo},'%')
+ </if>
+ </where>
+ ORDER BY id DESC
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/envaccess/EnvInspectionMapper.xml b/src/main/resources/mapper/envaccess/EnvInspectionMapper.xml
new file mode 100644
index 0000000..ebec707
--- /dev/null
+++ b/src/main/resources/mapper/envaccess/EnvInspectionMapper.xml
@@ -0,0 +1,34 @@
+<?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.ruoyi.envaccess.mapper.EnvInspectionMapper">
+ <select id="listPage" resultType="com.ruoyi.envaccess.pojo.EnvInspection">
+ SELECT * FROM env_inspection
+ <where>
+ <if test="req.inspectionName != null and req.inspectionName != ''">
+ AND inspection_name LIKE CONCAT('%',#{req.inspectionName},'%')
+ </if>
+ <if test="req.inspectionType != null">
+ AND inspection_type = #{req.inspectionType}
+ </if>
+ <if test="req.status != null">
+ AND status = #{req.status}
+ </if>
+ <if test="req.entryDateStart != null and req.entryDateStart != ''">
+ AND plan_start_time >= #{req.entryDateStart}
+ </if>
+ <if test="req.entryDateEnd != null and req.entryDateEnd != ''">
+ AND plan_start_time <= CONCAT(#{req.entryDateEnd},' 23:59:59')
+ </if>
+ </where>
+ ORDER BY id DESC
+ </select>
+ <select id="list" resultType="com.ruoyi.envaccess.pojo.EnvInspection">
+ SELECT * FROM env_inspection
+ <where>
+ <if test="req.inspectionName != null and req.inspectionName != ''">
+ AND inspection_name LIKE CONCAT('%',#{req.inspectionName},'%')
+ </if>
+ </where>
+ ORDER BY id DESC
+ </select>
+</mapper>
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
index dd03d4d..8bb1831 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordMapper.xml
@@ -55,7 +55,7 @@
from procurement_record_storage t1
left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 2
left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
- left join procurement_record_out t4 on t1.id = t4.procurement_record_storage_id and t4.type = 1
+ left join procurement_record_out t4 on t1.id = t4.procurement_record_storage_id and t4.type in (1, 5)
<where>
t1.type = 1
<if test="req.supplierName != null and req.supplierName != ''">
@@ -151,9 +151,9 @@
from procurement_record_storage t1
left join sales_ledger_product t2 on t2.id = t1.sales_ledger_product_id and t2.type = 2
left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
- left join procurement_record_out t4 on t1.id = t4.procurement_record_storage_id and t4.type = 1
+ left join procurement_record_out t4 on t1.id = t4.procurement_record_storage_id and t4.type in (1, 5)
<where>
- t1.type = 1 and t4.type = 1
+ t1.type = 1 and t4.type in (1, 5)
<if test="req.supplierName != null and req.supplierName != ''">
and t3.supplier_name like concat('%',#{req.supplierName},'%')
</if>
diff --git a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
index 21117a3..2b530fe 100644
--- a/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ProcurementRecordOutMapper.xml
@@ -170,4 +170,61 @@
</where>
order by t1.create_time desc
</select>
+ <select id="listPageByPurchaseReturn" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+ select
+ t3.supplier_name,
+ t3.purchase_contract_number,
+ t2.product_category,
+ t1.id,
+ t1.code,
+ t2.specification_model,
+ t2.unit,
+ t2.tax_rate,
+ t2.tax_inclusive_unit_price,
+ t2.tax_inclusive_total_price,
+ t2.tax_exclusive_total_price,
+ t1.inbound_num,
+ t1.create_time,
+ t1.create_by,
+ t4.unit_price,
+ t4.unit_price * t1.inbound_num as totalPrice
+ from procurement_record_out t1
+ left join procurement_record_storage t4 on t4.id = t1.procurement_record_storage_id
+ left join sales_ledger_product t2 on t2.id = t4.sales_ledger_product_id and t2.type = 2
+ left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
+ <where>
+ t1.type = 5
+ <if test="req.supplierName != null and req.supplierName != ''">
+ and t3.supplier_name like concat('%',#{req.supplierName},'%')
+ </if>
+ <if test="req.productCategory != null and req.productCategory != ''">
+ and t2.product_category like concat('%',#{req.productCategory},'%')
+ </if>
+ <if test="req.timeStr != null and req.timeStr != ''">
+ and t1.create_time like concat('%',#{req.timeStr},'%')
+ </if>
+ </where>
+ order by t1.create_time desc
+ </select>
+ <select id="listPurchaseReturn" resultType="com.ruoyi.procurementrecord.dto.ProcurementRecordOutPageDto">
+ select
+ t3.supplier_name,
+ t2.product_category,
+ t1.id,
+ t2.specification_model,
+ t2.unit,
+ t2.tax_rate,
+ t2.tax_inclusive_unit_price,
+ t2.tax_inclusive_total_price,
+ t2.tax_exclusive_total_price,
+ t1.inbound_num,
+ t1.create_time,
+ t1.create_time as time,
+ t1.create_by
+ from procurement_record_out t1
+ left join procurement_record_storage t4 on t4.id = t1.procurement_record_storage_id
+ left join sales_ledger_product t2 on t2.id = t4.sales_ledger_product_id and t2.type = 2
+ left join purchase_ledger t3 on t3.id = t2.sales_ledger_id
+ where t1.type = 5
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/staff/StaffContractMapper.xml b/src/main/resources/mapper/staff/StaffContractMapper.xml
new file mode 100644
index 0000000..fc55f42
--- /dev/null
+++ b/src/main/resources/mapper/staff/StaffContractMapper.xml
@@ -0,0 +1,37 @@
+<?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.ruoyi.staff.mapper.StaffContractMapper">
+ <select id="listPage" resultType="com.ruoyi.staff.pojo.StaffContract">
+ SELECT * FROM staff_contract
+ <where>
+ <if test="req.staffName != null and req.staffName != ''">
+ AND staff_name LIKE CONCAT('%',#{req.staffName},'%')
+ </if>
+ <if test="req.staffNo != null and req.staffNo != ''">
+ AND staff_no = #{req.staffNo}
+ </if>
+ <if test="req.status != null">
+ AND status = #{req.status}
+ </if>
+ <if test="req.entryDateStart != null and req.entryDateStart != ''">
+ AND end_date >= #{req.entryDateStart}
+ </if>
+ <if test="req.entryDateEnd != null and req.entryDateEnd != ''">
+ AND end_date <= #{req.entryDateEnd}
+ </if>
+ </where>
+ ORDER BY id DESC
+ </select>
+ <select id="list" resultType="com.ruoyi.staff.pojo.StaffContract">
+ SELECT * FROM staff_contract
+ <where>
+ <if test="req.staffName != null and req.staffName != ''">
+ AND staff_name LIKE CONCAT('%',#{req.staffName},'%')
+ </if>
+ <if test="req.status != null">
+ AND status = #{req.status}
+ </if>
+ </where>
+ ORDER BY id DESC
+ </select>
+</mapper>
--
Gitblit v1.9.3