From e4c10a806ff29d18cdbdd182a5930316eae3fd83 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期二, 07 四月 2026 09:29:59 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev_New' into dev_新疆_大罗素马铃薯
---
src/main/java/com/ruoyi/project/system/mapper/SysRoleMapper.java | 2
src/main/java/com/ruoyi/staff/dto/StaffOnJobExcelDto.java | 87 +++++
src/main/resources/application-hbtmblc.yml | 256 +++++++++++++++++
src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsRequisitionRecordDto.java | 15 +
src/main/java/com/ruoyi/staff/service/impl/StaffOnJobServiceImpl.java | 45 ++
src/main/resources/mapper/account/AccountExpenseMapper.xml | 6
src/main/resources/mapper/account/AccountIncomeMapper.xml | 7
src/main/java/com/ruoyi/common/enums/SparePartsRequisitionRecordSourceTypeEnum.java | 27 +
src/main/java/com/ruoyi/device/pojo/DeviceRepair.java | 12
src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java | 19 +
src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java | 38 ++
src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java | 23 +
src/main/java/com/ruoyi/staff/controller/StaffOnJobController.java | 9
src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml | 36 ++
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/device/execl/DeviceLedgerExeclDto.java | 34 +
src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java | 48 +++
src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java | 67 ++++
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java | 2
src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java | 46 +++
src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java | 36 ++
src/main/resources/mapper/system/SysRoleMapper.xml | 1
src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java | 14
24 files changed, 834 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/ruoyi/common/enums/SparePartsRequisitionRecordSourceTypeEnum.java b/src/main/java/com/ruoyi/common/enums/SparePartsRequisitionRecordSourceTypeEnum.java
new file mode 100644
index 0000000..b9acc40
--- /dev/null
+++ b/src/main/java/com/ruoyi/common/enums/SparePartsRequisitionRecordSourceTypeEnum.java
@@ -0,0 +1,27 @@
+package com.ruoyi.common.enums;
+
+import lombok.Getter;
+
+@Getter
+public enum SparePartsRequisitionRecordSourceTypeEnum implements BaseEnum<Integer> {
+ SparePartsRequisitionRecordSourceTypeRepair(0, "缁翠慨"),
+ SparePartsRequisitionRecordSourceTypeMaintenance(1, "淇濆吇");
+
+ private final Integer code;
+ private final String value;
+
+ SparePartsRequisitionRecordSourceTypeEnum(Integer code, String value) {
+ this.code = code;
+ this.value = value;
+ }
+
+ public static SparePartsRequisitionRecordSourceTypeEnum getByCode(Integer code) {
+ for (SparePartsRequisitionRecordSourceTypeEnum type : SparePartsRequisitionRecordSourceTypeEnum.values()) {
+ if (type.getCode().equals(code)) {
+ return type;
+ }
+ }
+ return null;
+ }
+}
+
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/pojo/DeviceMaintenance.java b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
index a9368b0..c3b73ad 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceMaintenance.java
@@ -10,6 +10,7 @@
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
+import java.util.List;
@Data
@TableName("device_maintenance")
@@ -84,4 +85,17 @@
@ApiModelProperty("绉熸埛id")
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
+
+ @ApiModelProperty("棰嗙敤澶囦欢ids")
+ private String sparePartsIds;
+
+ @ApiModelProperty("浣跨敤澶囦欢鍒楄〃")
+ @TableField(exist = false)
+ private List<SparePartUse> sparePartsUseList;
+
+ @Data
+ public static class SparePartUse {
+ private Long id;
+ private Integer quantity;
+ }
}
diff --git a/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java b/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
index a567366..055a724 100644
--- a/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
+++ b/src/main/java/com/ruoyi/device/pojo/DeviceRepair.java
@@ -10,6 +10,7 @@
import java.time.LocalDateTime;
import java.util.Date;
+import java.util.List;
@Data
@TableName("device_repair")
@@ -72,5 +73,16 @@
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
+ @ApiModelProperty("棰嗙敤澶囦欢ids")
+ private String sparePartsIds;
+ @ApiModelProperty("浣跨敤澶囦欢鍒楄〃")
+ @TableField(exist = false)
+ private List<SparePartUse> sparePartsUseList;
+
+ @Data
+ public static class SparePartUse {
+ private Long id;
+ private Integer quantity;
+ }
}
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/device/service/impl/DeviceMaintenanceServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
index 6e90b28..a5005af 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceMaintenanceServiceImpl.java
@@ -12,10 +12,17 @@
import com.ruoyi.device.pojo.DeviceMaintenance;
import com.ruoyi.device.service.IDeviceMaintenanceService;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
+import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
@@ -27,6 +34,10 @@
@Autowired
private DeviceMaintenanceMapper deviceMaintenanceMapper;
+ @Autowired
+ private SparePartsMapper sparePartsMapper;
+ @Autowired
+ private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
@Override
public IPage<DeviceMaintenanceDto> queryPage(Page page, DeviceMaintenanceDto deviceMaintenanceDto) {
@@ -44,7 +55,42 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public AjaxResult updateDeviceDeviceMaintenance(DeviceMaintenance deviceMaintenance) {
+ DeviceMaintenance oldDeviceMaintenance = this.getById(deviceMaintenance.getId());
+ // 澶勭悊澶囦欢浣跨敤鎯呭喌
+ if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(deviceMaintenance.getSparePartsUseList())) {
+ List<Long> sparePartIds = new ArrayList<>();
+ for (DeviceMaintenance.SparePartUse sparePartUse : deviceMaintenance.getSparePartsUseList()) {
+ // 鑾峰彇澶囦欢淇℃伅
+ SpareParts spareParts = sparePartsMapper.selectById(sparePartUse.getId());
+ if (spareParts != null) {
+ // 妫�鏌ユ暟閲忔槸鍚﹁冻澶�
+ if (spareParts.getQuantity().compareTo(new BigDecimal(sparePartUse.getQuantity())) >= 0) {
+ // 鏇存柊鏁伴噺
+ spareParts.setQuantity(spareParts.getQuantity().subtract(new BigDecimal(sparePartUse.getQuantity())));
+ sparePartsMapper.updateById(spareParts);
+ sparePartIds.add(sparePartUse.getId());
+
+ // 鍒涘缓澶囦欢棰嗙敤璁板綍
+ SparePartsRequisitionRecord record = new SparePartsRequisitionRecord();
+ record.setSourceType(1); // 1 淇濆吇
+ record.setSourceId(deviceMaintenance.getId());
+ record.setDeviceLedgerId(oldDeviceMaintenance.getDeviceLedgerId());
+ record.setSparePartsId(sparePartUse.getId());
+ record.setQuantity(sparePartUse.getQuantity());
+ sparePartsRequisitionRecordService.save(record);
+ } else {
+ return AjaxResult.error("澶囦欢 " + spareParts.getName() + " 鏁伴噺涓嶈冻");
+ }
+ }
+ }
+ // 鏇存柊澶囦欢IDs瀛楁
+ if (!sparePartIds.isEmpty()) {
+ deviceMaintenance.setSparePartsIds(StringUtils.join(sparePartIds, ","));
+ }
+ }
+
if (this.updateById(deviceMaintenance)) {
return AjaxResult.success();
}
diff --git a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
index feab01b..9d4c6b3 100644
--- a/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
+++ b/src/main/java/com/ruoyi/device/service/impl/DeviceRepairServiceImpl.java
@@ -3,6 +3,7 @@
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.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.device.dto.DeviceDefectRecordDto;
@@ -15,12 +16,19 @@
import com.ruoyi.device.service.IDeviceLedgerService;
import com.ruoyi.device.service.IDeviceRepairService;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.measuringinstrumentledger.mapper.SparePartsMapper;
+import com.ruoyi.measuringinstrumentledger.pojo.SpareParts;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
+import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -36,6 +44,11 @@
private DeviceRepairMapper deviceRepairMapper;
@Autowired
private IDeviceLedgerService deviceLedgerService;
+ @Autowired
+ private SparePartsMapper sparePartsMapper;
+ @Autowired
+ private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+
@Override
public IPage<DeviceRepairDto> queryPage(Page page, DeviceRepairDto deviceRepairDto) {
@@ -55,7 +68,42 @@
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public AjaxResult updateDeviceRepair(DeviceRepair deviceRepair) {
+ DeviceRepair oldDeviceRepair = this.getById(deviceRepair.getId());
+ // 澶勭悊澶囦欢浣跨敤鎯呭喌
+ if (CollectionUtils.isNotEmpty(deviceRepair.getSparePartsUseList())) {
+ List<Long> sparePartIds = new ArrayList<>();
+ for (DeviceRepair.SparePartUse sparePartUse : deviceRepair.getSparePartsUseList()) {
+ // 鑾峰彇澶囦欢淇℃伅
+ SpareParts spareParts = sparePartsMapper.selectById(sparePartUse.getId());
+ if (spareParts != null) {
+ // 妫�鏌ユ暟閲忔槸鍚﹁冻澶�
+ if (spareParts.getQuantity().compareTo(new BigDecimal(sparePartUse.getQuantity())) >= 0) {
+ // 鏇存柊鏁伴噺
+ spareParts.setQuantity(spareParts.getQuantity().subtract(new BigDecimal(sparePartUse.getQuantity())));
+ sparePartsMapper.updateById(spareParts);
+ sparePartIds.add(sparePartUse.getId());
+
+ // 鍒涘缓澶囦欢棰嗙敤璁板綍
+ SparePartsRequisitionRecord record = new SparePartsRequisitionRecord();
+ record.setSourceType(0); // 0 缁翠慨
+ record.setSourceId(deviceRepair.getId());
+ record.setDeviceLedgerId(oldDeviceRepair.getDeviceLedgerId());
+ record.setSparePartsId(sparePartUse.getId());
+ record.setQuantity(sparePartUse.getQuantity());
+ sparePartsRequisitionRecordService.save(record);
+ } else {
+ return AjaxResult.error("澶囦欢 " + spareParts.getName() + " 鏁伴噺涓嶈冻");
+ }
+ }
+ }
+ // 鏇存柊澶囦欢IDs瀛楁
+ if (!sparePartIds.isEmpty()) {
+ deviceRepair.setSparePartsIds(StringUtils.join(sparePartIds, ","));
+ }
+ }
+
if (this.updateById(deviceRepair)) {
Long id = deviceRepair.getId();
//
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java
new file mode 100644
index 0000000..b0dac53
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/controller/SparePartsRequisitionRecordController.java
@@ -0,0 +1,36 @@
+package com.ruoyi.measuringinstrumentledger.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+@RestController
+@RequestMapping("/sparePartsRequisitionRecord")
+@Api(tags = "澶囦欢棰嗙敤璁板綍鎺ュ彛")
+public class SparePartsRequisitionRecordController {
+ @Autowired
+ private SparePartsRequisitionRecordService sparePartsRequisitionRecordService;
+
+ @GetMapping("/listPage")
+ @ApiOperation("澶囦欢鍒嗙被-鍒嗛〉鏌ヨ")
+ public AjaxResult listPage(Page page, SparePartsRequisitionRecordDto sparePartsRequisitionRecordDto){
+ IPage<SparePartsRequisitionRecordDto> listPage = sparePartsRequisitionRecordService.listPage(page, sparePartsRequisitionRecordDto);
+ return AjaxResult.success(listPage);
+ }
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsRequisitionRecordDto.java b/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsRequisitionRecordDto.java
new file mode 100644
index 0000000..59b9517
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/dto/SparePartsRequisitionRecordDto.java
@@ -0,0 +1,15 @@
+package com.ruoyi.measuringinstrumentledger.dto;
+
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import lombok.Data;
+
+@Data
+public class SparePartsRequisitionRecordDto extends SparePartsRequisitionRecord {
+ private String sparePartsName;
+
+ private String deviceName;
+
+ private String sourceText;
+
+ private String operator;
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java
new file mode 100644
index 0000000..3b67162
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/mapper/SparePartsRequisitionRecordMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.measuringinstrumentledger.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.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+@Mapper
+public interface SparePartsRequisitionRecordMapper extends BaseMapper<SparePartsRequisitionRecord> {
+ IPage<SparePartsRequisitionRecordDto> listPage(Page page, @Param("params") SparePartsRequisitionRecordDto sparePartsRequisitionRecordDto);
+
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java b/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java
new file mode 100644
index 0000000..ae0b114
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/pojo/SparePartsRequisitionRecord.java
@@ -0,0 +1,67 @@
+package com.ruoyi.measuringinstrumentledger.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+@Getter
+@Setter
+@TableName("spare_parts_requisition_record")
+@ApiModel(value = "SparePartsRequisitionRecord瀵硅薄", description = "")
+public class SparePartsRequisitionRecord implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("鏉ユ簮绫诲瀷(0 缁翠慨 1 淇濆吇)")
+ private Integer sourceType;
+
+ @ApiModelProperty("鏉ユ簮id")
+ private Long sourceId;
+
+ @ApiModelProperty("璁惧id")
+ private Long deviceLedgerId;
+
+ @ApiModelProperty("澶囦欢id")
+ private Long sparePartsId;
+
+ @ApiModelProperty("鏁伴噺")
+ private Integer quantity;
+
+ @ApiModelProperty("鍒涘缓浜�")
+ @TableField(fill = FieldFill.INSERT)
+ private Integer createUser;
+
+ @ApiModelProperty("绉熸埛id")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ @ApiModelProperty("褰曞叆鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private LocalDateTime updateTime;
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java
new file mode 100644
index 0000000..2306a3a
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/SparePartsRequisitionRecordService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.measuringinstrumentledger.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.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+
+/**
+ * <p>
+ * 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+public interface SparePartsRequisitionRecordService extends IService<SparePartsRequisitionRecord> {
+ IPage<SparePartsRequisitionRecordDto> listPage(Page page, SparePartsRequisitionRecordDto sparePartsRequisitionRecordDto);
+}
diff --git a/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
new file mode 100644
index 0000000..46133c5
--- /dev/null
+++ b/src/main/java/com/ruoyi/measuringinstrumentledger/service/impl/SparePartsRequisitionRecordServiceImpl.java
@@ -0,0 +1,38 @@
+package com.ruoyi.measuringinstrumentledger.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.enums.SparePartsRequisitionRecordSourceTypeEnum;
+import com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto;
+import com.ruoyi.measuringinstrumentledger.mapper.SparePartsRequisitionRecordMapper;
+import com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord;
+import com.ruoyi.measuringinstrumentledger.service.SparePartsRequisitionRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-02 03:59:56
+ */
+@Service
+public class SparePartsRequisitionRecordServiceImpl extends ServiceImpl<SparePartsRequisitionRecordMapper, SparePartsRequisitionRecord> implements SparePartsRequisitionRecordService {
+ @Autowired
+ private SparePartsRequisitionRecordMapper sparePartsRequisitionRecordMapper;
+
+ @Override
+ public IPage<SparePartsRequisitionRecordDto> listPage(Page page, SparePartsRequisitionRecordDto sparePartsRequisitionRecordDto) {
+ IPage<SparePartsRequisitionRecordDto> result = sparePartsRequisitionRecordMapper.listPage(page, sparePartsRequisitionRecordDto);
+ // 澶勭悊鏉ユ簮绫诲瀷鏂囨湰
+ result.getRecords().forEach(record -> {
+ if (record.getSourceType() != null) {
+ record.setSourceText(SparePartsRequisitionRecordSourceTypeEnum.getByCode(record.getSourceType()).getValue());
+ }
+ });
+ return result;
+ }
+}
\ No newline at end of file
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/sales/service/impl/SalesLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
index 570b2f5..3b0cc55 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -479,6 +479,8 @@
.eq(ShippingInfo::getSalesLedgerProductId, product.getId())
.orderByDesc(ShippingInfo::getCreateTime)
.last("limit 1"));
+ product.setShippingCarNumber(shippingInfo.getShippingCarNumber());
+ product.setShippingDate(shippingInfo.getShippingDate());
if (shippingInfo != null) {
product.setShippingStatus(shippingInfo.getStatus());
}
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/application-hbtmblc.yml b/src/main/resources/application-hbtmblc.yml
new file mode 100644
index 0000000..ec44491
--- /dev/null
+++ b/src/main/resources/application-hbtmblc.yml
@@ -0,0 +1,256 @@
+# 椤圭洰鐩稿叧閰嶇疆
+ruoyi:
+ # 鍚嶇О
+ name: RuoYi
+ # 鐗堟湰
+ version: 3.8.9
+ # 鐗堟潈骞翠唤
+ copyrightYear: 2025
+ # 鏂囦欢璺緞 绀轰緥锛� Windows閰嶇疆D:/ruoyi/uploadPath锛孡inux閰嶇疆 /home/ruoyi/uploadPath锛�
+ profile: D:/ruoyi/uploadPath
+
+ # 鑾峰彇ip鍦板潃寮�鍏�
+ addressEnabled: false
+ # 楠岃瘉鐮佺被鍨� math 鏁板瓧璁$畻 char 瀛楃楠岃瘉
+ captchaType: math
+ # 鍗忓悓瀹℃壒缂栧彿鍓嶇紑(閰嶇疆鏂囦欢鍚庣紑鍛藉悕)
+ approvalNumberPrefix: DEV
+
+ # 涓帹 Unipush 閰嶇疆
+ getui:
+ appId: PfjyAAE0FK64FaO1w2CMb1
+ appKey: zTMb831OEL6J4GK1uE3Ob4
+ masterSecret: K1GFtsv42v61tXGnF7SGE5
+ domain: https://restapi.getui.cn/v2/
+ # 绂荤嚎鎺ㄩ�佷娇鐢ㄧ殑鍖呭悕/缁勪欢鍚�
+ intentComponent: uni.app.UNI099A590/io.dcloud.PandoraEntry
+
+# 寮�鍙戠幆澧冮厤缃�
+server:
+ # 鏈嶅姟鍣ㄧ殑HTTP绔彛锛岄粯璁や负8080
+ port: 7003
+ servlet:
+ # 搴旂敤鐨勮闂矾寰�
+ context-path: /
+ tomcat:
+ # tomcat鐨刄RI缂栫爜
+ uri-encoding: UTF-8
+ # 杩炴帴鏁版弧鍚庣殑鎺掗槦鏁帮紝榛樿涓�100
+ accept-count: 1000
+ threads:
+ # tomcat鏈�澶х嚎绋嬫暟锛岄粯璁や负200
+ max: 800
+ # Tomcat鍚姩鍒濆鍖栫殑绾跨▼鏁帮紝榛樿鍊�10
+ min-spare: 100
+
+# 鏃ュ織閰嶇疆
+logging:
+ level:
+ org.quartz: DEBUG
+ com.ruoyi: warn
+ org.springframework: warn
+
+minio:
+ endpoint: http://114.132.189.42/
+ port: 7019
+ secure: false
+ accessKey: admin
+ secretKey: 12345678
+ preview-expiry: 24 # 棰勮鍦板潃榛樿24灏忔椂
+ default-bucket: uploadPath
+# 鐢ㄦ埛閰嶇疆
+user:
+ password:
+ # 瀵嗙爜鏈�澶ч敊璇鏁�
+ maxRetryCount: 5
+ # 瀵嗙爜閿佸畾鏃堕棿锛堥粯璁�10鍒嗛挓锛�
+ lockTime: 10
+
+# Spring閰嶇疆
+spring:
+ datasource:
+ type: com.alibaba.druid.pool.DruidDataSource
+ driverClassName: com.mysql.cj.jdbc.Driver
+ druid:
+ # 涓诲簱鏁版嵁婧�
+ master:
+ url: jdbc:mysql://172.17.0.1:9006/product-inventory-management-hbtmblc?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+ username: root
+ password: xd@123456..
+ # 浠庡簱鏁版嵁婧�
+ slave:
+ # 浠庢暟鎹簮寮�鍏�/榛樿鍏抽棴
+ enabled: false
+ url:
+ username:
+ password:
+ # 鍒濆杩炴帴鏁�
+ initialSize: 5
+ # 鏈�灏忚繛鎺ユ睜鏁伴噺
+ minIdle: 10
+ # 鏈�澶ц繛鎺ユ睜鏁伴噺
+ maxActive: 20
+ # 閰嶇疆鑾峰彇杩炴帴绛夊緟瓒呮椂鐨勬椂闂�
+ maxWait: 60000
+ # 閰嶇疆杩炴帴瓒呮椂鏃堕棿
+ connectTimeout: 30000
+ # 閰嶇疆缃戠粶瓒呮椂鏃堕棿
+ socketTimeout: 60000
+ # 閰嶇疆闂撮殧澶氫箙鎵嶈繘琛屼竴娆℃娴嬶紝妫�娴嬮渶瑕佸叧闂殑绌洪棽杩炴帴锛屽崟浣嶆槸姣
+ timeBetweenEvictionRunsMillis: 60000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�灏忕敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ minEvictableIdleTimeMillis: 300000
+ # 閰嶇疆涓�涓繛鎺ュ湪姹犱腑鏈�澶х敓瀛樼殑鏃堕棿锛屽崟浣嶆槸姣
+ maxEvictableIdleTimeMillis: 900000
+ # 閰嶇疆妫�娴嬭繛鎺ユ槸鍚︽湁鏁�
+ validationQuery: SELECT 1 FROM DUAL
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ webStatFilter:
+ enabled: true
+ statViewServlet:
+ enabled: true
+ # 璁剧疆鐧藉悕鍗曪紝涓嶅~鍒欏厑璁告墍鏈夎闂�
+ allow:
+ url-pattern: /druid/*
+ # 鎺у埗鍙扮鐞嗙敤鎴峰悕鍜屽瘑鐮�
+ login-username: ruoyi
+ login-password: 123456
+ filter:
+ stat:
+ enabled: true
+ # 鎱QL璁板綍
+ log-slow-sql: true
+ slow-sql-millis: 1000
+ merge-sql: true
+ wall:
+ config:
+ multi-statement-allow: true
+ # 璧勬簮淇℃伅
+ messages:
+ # 鍥介檯鍖栬祫婧愭枃浠惰矾寰�
+ basename: i18n/messages
+ # 鏂囦欢涓婁紶
+ servlet:
+ multipart:
+ # 鍗曚釜鏂囦欢澶у皬
+ max-file-size: 1GB
+ # 璁剧疆鎬讳笂浼犵殑鏂囦欢澶у皬
+ max-request-size: 2GB
+ # 鏈嶅姟妯″潡
+ devtools:
+ restart:
+ # 鐑儴缃插紑鍏�
+ enabled: false
+ # redis 閰嶇疆
+ redis:
+ # 鍦板潃
+ # host: 127.0.0.1
+ host: 172.17.0.1
+ # 绔彛锛岄粯璁や负6379
+ port: 6380
+ # 鏁版嵁搴撶储寮�
+ database: 8
+ # 瀵嗙爜
+ # password: root2022!
+ password:
+
+ # 杩炴帴瓒呮椂鏃堕棿
+ timeout: 10s
+ lettuce:
+ pool:
+ # 杩炴帴姹犱腑鐨勬渶灏忕┖闂茶繛鎺�
+ min-idle: 0
+ # 杩炴帴姹犱腑鐨勬渶澶х┖闂茶繛鎺�
+ max-idle: 8
+ # 杩炴帴姹犵殑鏈�澶ф暟鎹簱杩炴帴鏁�
+ max-active: 8
+ # #杩炴帴姹犳渶澶ч樆濉炵瓑寰呮椂闂达紙浣跨敤璐熷�艰〃绀烘病鏈夐檺鍒讹級
+ max-wait: -1ms
+ # Quartz瀹氭椂浠诲姟閰嶇疆锛堟柊澧為儴鍒嗭級
+ quartz:
+ job-store-type: jdbc # 浣跨敤鏁版嵁搴撳瓨鍌�
+ jdbc:
+ initialize-schema: never # 棣栨杩愯鏃惰嚜鍔ㄥ垱寤鸿〃缁撴瀯锛屾垚鍔熷悗鏀逛负never
+ schema: classpath:org/quartz/impl/jdbcjobstore/tables_mysql_innodb.sql # MySQL琛ㄧ粨鏋勮剼鏈�
+ properties:
+ org:
+ quartz:
+ scheduler:
+ instanceName: RuoYiScheduler
+ instanceId: AUTO
+ jobStore:
+ class: org.quartz.impl.jdbcjobstore.JobStoreTX
+ driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate # MySQL閫傞厤
+ tablePrefix: qrtz_ # 琛ㄥ悕鍓嶇紑锛屼笌鑴氭湰涓�鑷�
+ isClustered: false # 鍗曡妭鐐规ā寮忥紙闆嗙兢闇�鏀逛负true锛�
+ clusterCheckinInterval: 10000
+ txIsolationLevelSerializable: true
+ threadPool:
+ class: org.quartz.simpl.SimpleThreadPool
+ threadCount: 10 # 绾跨▼姹犲ぇ灏�
+ threadPriority: 5
+ makeThreadsDaemons: true
+ updateCheck: false # 鍏抽棴鐗堟湰妫�鏌�
+
+# token閰嶇疆
+token:
+ # 浠ょ墝鑷畾涔夋爣璇�
+ header: Authorization
+ # 浠ょ墝瀵嗛挜
+ secret: abcdefghijklmnopqrstuvwxyz
+ # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛�
+ expireTime: 450
+
+# MyBatis Plus閰嶇疆
+mybatis-plus:
+ # 鎼滅储鎸囧畾鍖呭埆鍚� 鏍规嵁鑷繁鐨勯」鐩潵
+ typeAliasesPackage: com.ruoyi.**.pojo
+ # 閰嶇疆mapper鐨勬壂鎻忥紝鎵惧埌鎵�鏈夌殑mapper.xml鏄犲皠鏂囦欢
+ mapperLocations: classpath*:mapper/**/*Mapper.xml
+ # 鍔犺浇鍏ㄥ眬鐨勯厤缃枃浠�
+ configLocation: classpath:mybatis/mybatis-config.xml
+ global-config:
+ enable-sql-runner: true
+ db-config:
+ id-type: auto
+
+# PageHelper鍒嗛〉鎻掍欢
+pagehelper:
+ helperDialect: mysql
+ supportMethodsArguments: true
+ params: count=countSql
+
+# Swagger閰嶇疆
+swagger:
+ # 鏄惁寮�鍚痵wagger
+ enabled: true
+ # 璇锋眰鍓嶇紑
+ pathMapping: /dev-api
+
+# 闃叉XSS鏀诲嚮
+xss:
+ # 杩囨护寮�鍏�
+ enabled: true
+ # 鎺掗櫎閾炬帴锛堝涓敤閫楀彿鍒嗛殧锛�
+ excludes: /system/notice
+ # 鍖归厤閾炬帴
+ urlPatterns: /system/*,/monitor/*,/tool/*
+
+# 浠g爜鐢熸垚
+gen:
+ # 浣滆��
+ author: ruoyi
+ # 榛樿鐢熸垚鍖呰矾寰� system 闇�鏀规垚鑷繁鐨勬ā鍧楀悕绉� 濡� system monitor tool
+ packageName: com.ruoyi.project.system
+ # 鑷姩鍘婚櫎琛ㄥ墠缂�锛岄粯璁ゆ槸true
+ autoRemovePre: false
+ # 琛ㄥ墠缂�锛堢敓鎴愮被鍚嶄笉浼氬寘鍚〃鍓嶇紑锛屽涓敤閫楀彿鍒嗛殧锛�
+ tablePrefix: sys_
+ # 鏄惁鍏佽鐢熸垚鏂囦欢瑕嗙洊鍒版湰鍦帮紙鑷畾涔夎矾寰勶級锛岄粯璁や笉鍏佽
+ allowOverwrite: false
+
+file:
+ temp-dir: D:/ruoyi/temp/uploads # 涓存椂鐩綍
+ upload-dir: D:/ruoyi/prod/uploads # 姝e紡鐩綍
diff --git a/src/main/resources/mapper/account/AccountExpenseMapper.xml b/src/main/resources/mapper/account/AccountExpenseMapper.xml
index 1a8d34b..e954562 100644
--- a/src/main/resources/mapper/account/AccountExpenseMapper.xml
+++ b/src/main/resources/mapper/account/AccountExpenseMapper.xml
@@ -10,6 +10,12 @@
<if test="accountExpense.entryDateStart != null and accountExpense.entryDateStart != '' ">
AND expense_date >= DATE_FORMAT(#{accountExpense.entryDateStart},'%Y-%m-%d')
</if>
+ <if test=" accountExpense.supplierName != null and accountExpense.supplierName != ''">
+ AND supplier_name like CONCAT('%',#{accountExpense.supplierName},'%')
+ </if>
+ <if test=" accountExpense.invoiceNumber != null and accountExpense.invoiceNumber != ''">
+ AND invoice_number like CONCAT('%',#{accountExpense.invoiceNumber},'%')
+ </if>
<if test="accountExpense.entryDateEnd != null and accountExpense.entryDateEnd != '' ">
AND expense_date <= DATE_FORMAT(#{accountExpense.entryDateEnd},'%Y-%m-%d')
</if>
diff --git a/src/main/resources/mapper/account/AccountIncomeMapper.xml b/src/main/resources/mapper/account/AccountIncomeMapper.xml
index e4f3361..56d254d 100644
--- a/src/main/resources/mapper/account/AccountIncomeMapper.xml
+++ b/src/main/resources/mapper/account/AccountIncomeMapper.xml
@@ -11,6 +11,13 @@
<if test="accountIncome.entryDateStart != null and accountIncome.entryDateStart != '' ">
AND income_date >= DATE_FORMAT(#{accountIncome.entryDateStart},'%Y-%m-%d')
</if>
+ <if test="accountIncome.customerName != null and accountIncome.customerName != '' ">
+ AND customer_name like CONCAT('%',#{accountIncome.customerName},'%')
+ </if>
+
+ <if test="accountIncome.invoiceNumber != null and accountIncome.invoiceNumber != '' ">
+ AND invoice_number like CONCAT('%',#{accountIncome.invoiceNumber},'%')
+ </if>
<if test="accountIncome.entryDateEnd != null and accountIncome.entryDateEnd != '' ">
AND income_date <= DATE_FORMAT(#{accountIncome.entryDateEnd},'%Y-%m-%d')
</if>
diff --git a/src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml b/src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml
new file mode 100644
index 0000000..9851e59
--- /dev/null
+++ b/src/main/resources/mapper/measuringinstrumentledger/SparePartsRequisitionRecordMapper.xml
@@ -0,0 +1,36 @@
+<?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.measuringinstrumentledger.mapper.SparePartsRequisitionRecordMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.measuringinstrumentledger.pojo.SparePartsRequisitionRecord">
+ <id column="id" property="id" />
+ <result column="source_type" property="sourceType" />
+ <result column="source_id" property="sourceId" />
+ <result column="device_ledger_id" property="deviceLedgerId" />
+ <result column="spare_parts_id" property="sparePartsId" />
+ <result column="quantity" property="quantity" />
+ <result column="create_user" property="createUser" />
+ <result column="tenant_id" property="tenantId" />
+ <result column="create_time" property="createTime" />
+ <result column="update_time" property="updateTime" />
+ </resultMap>
+
+
+ <select id="listPage" resultType="com.ruoyi.measuringinstrumentledger.dto.SparePartsRequisitionRecordDto">
+ select sprr.*,sp.name as sparePartsName, dl.device_name as deviceName, su.nick_name as operator
+ from spare_parts_requisition_record sprr
+ left join spare_parts sp on sp.id = sprr.spare_parts_id
+ left join device_ledger dl on dl.id = sprr.device_ledger_id
+ left join sys_user su on su.user_id = sprr.create_user
+ <where>
+ <if test="params.sparePartsName != null and params.sparePartsName != ''">
+ and sp.name like concat('%',#{params.sparePartsName},'%')
+ </if>
+
+ <if test="params.sourceType != null and params.sourceType != ''">
+ and sprr.source_type = #{params.sourceType}
+ </if>
+ </where>
+ </select>
+</mapper>
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