From 809562f45f703f99f9f75618428cef59a6458799 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 30 三月 2026 17:39:05 +0800
Subject: [PATCH] yys 1.设备导入,人员导入
---
src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java | 12 ++
src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java | 9 ++
src/main/java/com/ruoyi/project/system/mapper/SysRoleMapper.java | 2
src/main/java/com/ruoyi/staff/dto/StaffOnJobExcelDto.java | 87 +++++++++++++++++++++
src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java | 34 +++++---
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java | 45 ++++++++++
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java | 9 ++
src/main/resources/mapper/system/SysRoleMapper.xml | 1
8 files changed, 182 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
index f79d4d2..150f6d4 100644
--- a/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
+++ b/src/main/java/com/ruoyi/device/controller/DeviceLedgerController.java
@@ -3,7 +3,9 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.dto.DeviceLedgerDto;
+import com.ruoyi.device.execl.DeviceLedgerExeclDto;
import com.ruoyi.device.mapper.DeviceLedgerMapper;
import com.ruoyi.device.mapper.DeviceMaintenanceMapper;
import com.ruoyi.device.pojo.DeviceLedger;
@@ -11,6 +13,7 @@
import com.ruoyi.device.service.IDeviceLedgerService;
import com.ruoyi.framework.aspectj.lang.annotation.Anonymous;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.staff.dto.StaffOnJobExcelDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -79,7 +82,14 @@
deviceLedgerService.export(response, ids);
}
- @PostMapping("import")
+ @ApiOperation("涓嬭浇妯℃澘")
+ @PostMapping("/downloadTemplate")
+ public void downloadTemplate(HttpServletResponse response) {
+ ExcelUtil<DeviceLedgerExeclDto> util = new ExcelUtil<>(DeviceLedgerExeclDto.class);
+ util.importTemplateExcel(response, "璁惧瀵煎叆妯℃澘");
+ }
+
+ @PostMapping("/import")
@ApiOperation("瀵煎叆璁惧鍙拌处")
public AjaxResult importData(MultipartFile file) throws IOException {
Boolean b = deviceLedgerService.importData(file);
diff --git a/src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java b/src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java
index 0067da9..01906d6 100644
--- a/src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java
+++ b/src/main/java/com/ruoyi/device/execl/DeviceLedgerExeclDto.java
@@ -1,9 +1,14 @@
package com.ruoyi.device.execl;
+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 java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
@Data
public class DeviceLedgerExeclDto {
@@ -14,6 +19,18 @@
*/
@Excel(name = "璁惧鍚嶇О" ,sort = 1)
private String deviceName;
+
+ /**
+ * 璁惧绫诲瀷
+ */
+ @Excel(name = "璁惧绫诲瀷",sort = 0,combo = {"鐢熶骇璁惧","鍔炲叕璁惧","妫�鏌ヨ澶�","杩愯緭璁惧","鍏朵粬璁惧"})
+ private String type;
+
+ @ApiModelProperty("璁″垝杩愯鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "璁″垝杩愯鏃堕棿",sort = 10,dateFormat = "yyyy-MM-dd")
+ private Date planRuntimeTime;
/**
* 瑙勬牸鍨嬪彿
@@ -36,8 +53,8 @@
/**
* 鏁伴噺
*/
- @Excel(name = "鏁伴噺",sort = 5)
- private BigDecimal number;
+ @Excel(name = "鏁伴噺",sort = 5, type = Excel.Type.EXPORT)
+ private BigDecimal number = BigDecimal.ONE;
/**
* 鍚◣鍗曚环
@@ -48,7 +65,7 @@
/**
* 鍚◣鎬讳环
*/
- @Excel(name = "鍚◣鎬讳环",sort = 7)
+ @Excel(name = "鍚◣鎬讳环",sort = 7, type = Excel.Type.EXPORT)
private BigDecimal taxIncludingPriceTotal;
/**
@@ -60,17 +77,8 @@
/**
* 涓嶅惈绋庢�讳环
*/
- @Excel(name = "涓嶅惈绋庢�讳环",sort = 9)
+ @Excel(name = "涓嶅惈绋庢�讳环",sort = 9, type = Excel.Type.EXPORT)
private BigDecimal unTaxIncludingPriceTotal;
-//
-// /**
-// * 褰曞叆鏃堕棿
-// *
-// */
-// @Excel(name = "褰曞叆鏃堕棿",sort = 10)
-// @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-// private LocalDateTime createTime;
-
/**
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
index b614149..e3c732a 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceLedgerServiceImpl.java
@@ -4,6 +4,8 @@
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.DateUtils;
+import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -23,6 +25,8 @@
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -112,6 +116,11 @@
deviceLedger.setCreateUser(SecurityUtils.getUserId().intValue());
}
BeanUtils.copyProperties(c,deviceLedger);
+ // 閫氳繃鍚◣鍗曚环銆佹暟閲忋�佺◣鐜囪绠楀惈绋庢�讳环锛屼笉鍚◣鎬讳环
+ deviceLedger.setTaxIncludingPriceTotal(c.getTaxIncludingPriceUnit());
+ deviceLedger.setNumber(BigDecimal.ONE);
+ deviceLedger.setPlanRuntimeTime(DateUtils.toLocalDate(c.getPlanRuntimeTime()));
+ deviceLedger.setUnTaxIncludingPriceTotal(deviceLedger.getTaxIncludingPriceTotal().divide(BigDecimal.ONE.add(c.getTaxRate()),2, RoundingMode.HALF_UP));
deviceLedgerMapper.insert(deviceLedger);
});
diff --git a/src/main/java/com/ruoyi/project/system/mapper/SysRoleMapper.java b/src/main/java/com/ruoyi/project/system/mapper/SysRoleMapper.java
index 507159b..f61cf5a 100644
--- a/src/main/java/com/ruoyi/project/system/mapper/SysRoleMapper.java
+++ b/src/main/java/com/ruoyi/project/system/mapper/SysRoleMapper.java
@@ -1,6 +1,8 @@
package com.ruoyi.project.system.mapper;
import java.util.List;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.project.system.domain.SysRole;
/**
diff --git a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
index 8e3d6b6..8ef5a4b 100644
--- a/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
+++ b/src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java
@@ -1,6 +1,7 @@
package com.ruoyi.staff.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.framework.aspectj.lang.annotation.Log;
import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
import com.ruoyi.framework.web.domain.AjaxResult;
@@ -13,6 +14,7 @@
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import com.ruoyi.staff.dto.StaffOnJobExcelDto;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@@ -105,6 +107,13 @@
return AjaxResult.success(staffOnJobService.renewContract(id, staffContract));
}
+ @ApiOperation("涓嬭浇妯℃澘")
+ @PostMapping("/downloadTemplate")
+ public void downloadTemplate(HttpServletResponse response) {
+ ExcelUtil<StaffOnJobExcelDto> util = new ExcelUtil<>(StaffOnJobExcelDto.class);
+ util.importTemplateExcel(response, "鍦ㄨ亴鍛樺伐妯℃澘");
+ }
+
/**
* 鍦ㄨ亴鍛樺伐瀵煎叆
*/
diff --git a/src/main/java/com/ruoyi/staff/dto/StaffOnJobExcelDto.java b/src/main/java/com/ruoyi/staff/dto/StaffOnJobExcelDto.java
new file mode 100644
index 0000000..8ebc195
--- /dev/null
+++ b/src/main/java/com/ruoyi/staff/dto/StaffOnJobExcelDto.java
@@ -0,0 +1,87 @@
+package com.ruoyi.staff.dto;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.staff.pojo.StaffEducation;
+import com.ruoyi.staff.pojo.StaffEmergencyContact;
+import com.ruoyi.staff.pojo.StaffWorkExperience;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class StaffOnJobExcelDto {
+
+ /**
+ * 鐘舵��(0:绂昏亴;1:鍦ㄨ亴)
+ */
+ private Integer staffState = 1;
+
+
+ /**
+ * 鍛樺伐缂栧彿
+ */
+ @Excel(name = "鍛樺伐缂栧彿", cellType = Excel.ColumnType.STRING, sort = 2,prompt = "鐢ㄦ埛鐧诲綍鍚�")
+ private String staffNo;
+
+ /**
+ * 鍛樺伐濮撳悕
+ */
+ @Excel(name = "鍛樺伐濮撳悕", sort = 3,prompt = "鐢ㄦ埛鏄电О")
+ private String staffName;
+
+ /**
+ * 鎬у埆
+ */
+ @Excel(name = "鎬у埆", sort = 4)
+ private String sex;
+
+ /**
+ * 閮ㄩ棬鍚嶇О
+ */
+ @Excel(name = "閮ㄩ棬鍚嶇О", sort = 5,prompt = "璇峰墠寰�绯荤粺鏌ョ湅鏈夊摢浜涢儴闂ㄥ彲浠ョ粦瀹氾紝涓ユ牸鎸夌収閮ㄩ棬鍚嶇О缁戝畾")
+ private String sysDeptName;
+
+ /**
+ * 瑙掕壊
+ */
+ @Excel(name = "瑙掕壊", sort = 6,prompt = "璇峰墠寰�绯荤粺鏌ョ湅鏈夊摢浜涜鑹插彲浠ョ粦瀹氾紝涓ユ牸鎸夌収瑙掕壊鍚嶇О缁戝畾")
+ private String roleName;
+
+
+ /**
+ * 鎵嬫満
+ */
+ @Excel(name = "鎵嬫満", sort = 13)
+ private String phone;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "鍚堝悓寮�濮嬫椂闂�")
+ @Excel(name = "鍚堝悓寮�濮嬫棩鏈�", width = 30, dateFormat = "yyyy-MM-dd", sort = 15)
+ private Date contractStartTime;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @ApiModelProperty(value = "鍚堝悓缁撴潫鏃堕棿")
+ @Excel(name = "鍚堝悓缁撴潫鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd", sort = 16)
+ private Date contractEndTime;
+
+ @ApiModelProperty(value = "鍚堝悓鏈熼檺")
+ @Excel(name = "鍚堝悓鏈熼檺", sort = 17)
+ private String contractTerm;
+
+
+ @ApiModelProperty(value = "鍑虹敓鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鍑虹敓鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd", sort = 18)
+ private Date birthDate;
+}
diff --git a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
index 073733b..3613da3 100644
--- a/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
+++ b/src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java
@@ -10,12 +10,17 @@
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.dto.WordDateDto;
+import com.ruoyi.project.system.domain.SysDept;
import com.ruoyi.project.system.domain.SysPost;
+import com.ruoyi.project.system.domain.SysRole;
import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysDeptMapper;
import com.ruoyi.project.system.mapper.SysPostMapper;
+import com.ruoyi.project.system.mapper.SysRoleMapper;
import com.ruoyi.project.system.mapper.SysUserMapper;
import com.ruoyi.project.system.service.impl.SysUserServiceImpl;
import com.ruoyi.staff.dto.StaffOnJobDto;
+import com.ruoyi.staff.dto.StaffOnJobExcelDto;
import com.ruoyi.staff.mapper.*;
import com.ruoyi.staff.pojo.*;
import com.ruoyi.staff.service.IStaffOnJobService;
@@ -46,6 +51,13 @@
@Autowired
private StaffOnJobMapper staffOnJobMapper;
+
+ @Autowired
+ private SysDeptMapper sysDeptMapper;
+
+ @Autowired
+ private SysRoleMapper sysRoleMapper;
+
@Autowired
private SysPostMapper sysPostMapper;
@@ -310,11 +322,38 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public Boolean importData(MultipartFile file) {
try {
- ExcelUtil<StaffOnJob> util = new ExcelUtil<>(StaffOnJob.class);
- List<StaffOnJob> staffOnJobs = util.importExcel(file.getInputStream());
- return saveOrUpdateBatch(staffOnJobs);
+ ExcelUtil<StaffOnJobExcelDto> util = new ExcelUtil<>(StaffOnJobExcelDto.class);
+ List<StaffOnJobExcelDto> staffOnJobs = util.importExcel(file.getInputStream());
+ if (CollectionUtils.isEmpty(staffOnJobs)){
+ return false;
+ }
+ // 鑾峰彇鎵�鏈夐儴闂ㄦ暟鎹�
+ List<SysDept> sysDepts = sysDeptMapper.selectList(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getDelFlag, 0));
+ // 鑾峰彇鎵�鏈夎鑹叉暟鎹�
+ List<SysRole> sysRoles = sysRoleMapper.selectRoleAll();
+ staffOnJobs.forEach(staffOnJob -> {
+ StaffOnJobDto staffOnJobDto = new StaffOnJobDto();
+ BeanUtils.copyProperties(staffOnJob, staffOnJobDto);
+ // 閫氳繃鍚嶇О鑾峰彇閮ㄩ棬id
+ staffOnJobDto.setSysDeptId(// ... existing code ...
+ sysDepts.stream()
+ .filter(dept -> dept.getDeptName() != null && dept.getDeptName().equals(staffOnJob.getSysDeptName()))
+ .findFirst()
+ .map(SysDept::getDeptId)
+ .orElse(null)
+ );
+ // 閫氳繃鍚嶇О鑾峰彇瑙掕壊id
+ staffOnJobDto.setRoleId(sysRoles.stream()
+ .filter(role -> role.getRoleName() != null && role.getRoleName().equals(staffOnJob.getRoleName()))
+ .findFirst()
+ .map(SysRole::getRoleId)
+ .orElse( null));
+ add(staffOnJobDto);
+ });
+ return true;
} catch (Exception e) {
e.printStackTrace();
return false;
diff --git a/src/main/resources/mapper/system/SysRoleMapper.xml b/src/main/resources/mapper/system/SysRoleMapper.xml
index 92ab684..9e16cf7 100644
--- a/src/main/resources/mapper/system/SysRoleMapper.xml
+++ b/src/main/resources/mapper/system/SysRoleMapper.xml
@@ -62,6 +62,7 @@
<select id="selectRoleAll" resultMap="SysRoleResult">
<include refid="selectRoleVo"/>
+ WHERE r.del_flag = '0'
</select>
<select id="selectRoleListByUserId" parameterType="Long" resultType="Long">
--
Gitblit v1.9.3