From 104ae610d1d7e8dab5fff9abe4a56208941d62d7 Mon Sep 17 00:00:00 2001
From: heheng <475597332@qq.com>
Date: 星期二, 14 十月 2025 09:50:55 +0800
Subject: [PATCH] 修改修复问题及新增功能
---
multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecord.java | 9
multi-system/src/main/java/com/gkhy/exam/system/mapper/WarehousingRecordDetailsMapper.java | 5
multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StandingBookController.java | 9
multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java | 1
multi-system/src/main/java/com/gkhy/exam/system/service/StandingBookService.java | 4
multi-system/src/main/java/com/gkhy/exam/system/service/impl/MaterialServiceImpl.java | 81 +++++++
multi-system/src/main/java/com/gkhy/exam/system/mapper/MaterialMapper.java | 21 +
multi-system/src/main/java/com/gkhy/exam/system/domain/StandingBook.java | 14
multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/WarehousingRecordController.java | 46 ++++
multi-system/src/main/java/com/gkhy/exam/system/domain/DTO/StandingBookImportDTO.java | 50 ++++
multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecordDetails.java | 59 +++--
multi-system/src/main/resources/mapper/system/WarehousingRecordMapper.xml | 3
multi-system/src/main/java/com/gkhy/exam/system/service/WarehousingRecordService.java | 2
multi-system/src/main/resources/mapper/system/MaterialMapper.xml | 19 +
multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandingBookServiceImpl.java | 126 +++++++++++
multi-system/src/main/java/com/gkhy/exam/system/service/impl/WarehousingRecordServiceImpl.java | 36 +++
multi-system/src/main/java/com/gkhy/exam/system/service/impl/CompanySummaryServiceImpl.java | 3
multi-common/src/main/java/com/gkhy/exam/common/api/ImportResult.java | 12 +
multi-system/src/main/java/com/gkhy/exam/system/controller/MaterialController.java | 20 +
multi-system/src/main/java/com/gkhy/exam/system/service/MaterialService.java | 26 ++
multi-system/src/main/java/com/gkhy/exam/system/domain/Material.java | 84 +++++++
multi-system/src/main/resources/mapper/system/WarehousingRecordDetailsMapper.xml | 9
22 files changed, 603 insertions(+), 36 deletions(-)
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StandingBookController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StandingBookController.java
index c402151..5c20d30 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StandingBookController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/StandingBookController.java
@@ -13,6 +13,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
/**
* <p>
@@ -60,4 +61,12 @@
return standingBookService.deletedStandingBook(id);
}
+ @PostMapping("/importStandingBooks")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = true, value = "companyId"),
+ })
+ public CommonResult importStandingBooks(MultipartFile file, Long companyId) {
+ return CommonResult.success(standingBookService.importStandingBooks(companyId, file));
+ }
+
}
diff --git a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/WarehousingRecordController.java b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/WarehousingRecordController.java
index 6b1fb49..1b73148 100644
--- a/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/WarehousingRecordController.java
+++ b/multi-admin/src/main/java/com/gkhy/exam/admin/controller/web/WarehousingRecordController.java
@@ -3,8 +3,10 @@
import com.gkhy.exam.common.annotation.RepeatSubmit;
import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.Material;
import com.gkhy.exam.system.domain.OutsourcedUnqualified;
import com.gkhy.exam.system.domain.WarehousingRecord;
+import com.gkhy.exam.system.service.MaterialService;
import com.gkhy.exam.system.service.WarehousingRecordService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
@@ -29,6 +31,38 @@
@Autowired
private WarehousingRecordService warehousingRecordService;
+ @Autowired
+ private MaterialService materialService;
+
+
+ @ApiOperation(value = "物料列表(分页)")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
+ @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10"),
+ @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id"),
+ })
+ @GetMapping("/selectMaterialList")
+ public CommonResult selectMaterialList(Material material){
+ return CommonResult.success(materialService.selectMaterialList(material));
+ }
+
+ @RepeatSubmit
+ @ApiOperation(value = "新增编辑物料")
+ @PostMapping("/saveMaterial")
+ public CommonResult saveMaterial(@RequestBody @Validated Material material){
+ return materialService.saveMaterial(material);
+ }
+
+ @ApiOperation(value = "删除物料")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "query", name = "id", dataType = "int", required = true, value = "id"),
+ })
+ @GetMapping("/deletedMaterial")
+ public CommonResult deletedMaterial(@RequestParam Long id){
+ return materialService.deletedMaterial(id);
+ }
+
+
@ApiOperation(value = "出入库记录列表(分页)")
@ApiImplicitParams({
@ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
@@ -39,6 +73,18 @@
public CommonResult selectWarehousingRecordList(WarehousingRecord warehousingRecord){
return CommonResult.success(warehousingRecordService.selectWarehousingRecordList(warehousingRecord));
}
+
+ @ApiOperation(value = "出入库记录详情列表(分页)")
+ @ApiImplicitParams({
+ @ApiImplicitParam(paramType = "query", name = "pageNum", dataType = "int", required = false, value = "当前页,默认1"),
+ @ApiImplicitParam(paramType = "query", name = "pageSize", dataType = "int", required = false, value = "每页数目,默认10"),
+ @ApiImplicitParam(paramType = "query", name = "companyId", dataType = "int", required = false, value = "公司id"),
+ })
+ @GetMapping("/selectWarehousingRecordDetailList")
+ public CommonResult selectWarehousingRecordDetailList(WarehousingRecord warehousingRecord){
+ return CommonResult.success(warehousingRecordService.selectWarehousingRecordList(warehousingRecord));
+ }
+
@RepeatSubmit
@ApiOperation(value = "新增编辑出入库记录")
@PostMapping("/saveWarehousingRecord")
diff --git a/multi-common/src/main/java/com/gkhy/exam/common/api/ImportResult.java b/multi-common/src/main/java/com/gkhy/exam/common/api/ImportResult.java
new file mode 100644
index 0000000..7fd1c03
--- /dev/null
+++ b/multi-common/src/main/java/com/gkhy/exam/common/api/ImportResult.java
@@ -0,0 +1,12 @@
+package com.gkhy.exam.common.api;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class ImportResult {
+ private Integer successCount;
+ private Integer failCount;
+ private List<String> errorMessages;
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/controller/MaterialController.java b/multi-system/src/main/java/com/gkhy/exam/system/controller/MaterialController.java
new file mode 100644
index 0000000..a56c813
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/controller/MaterialController.java
@@ -0,0 +1,20 @@
+package com.gkhy.exam.system.controller;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 前端控制器
+ * </p>
+ *
+ * @author hh
+ * @since 2025-10-11 14:20:49
+ */
+@RestController
+@RequestMapping("/system/material")
+public class MaterialController {
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/DTO/StandingBookImportDTO.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/DTO/StandingBookImportDTO.java
new file mode 100644
index 0000000..3038f51
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/DTO/StandingBookImportDTO.java
@@ -0,0 +1,50 @@
+package com.gkhy.exam.system.domain.DTO;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class StandingBookImportDTO {
+
+ @ExcelProperty("部门")
+ private String deptName;
+
+ @ExcelProperty("名称")
+ private String name;
+
+ @ExcelProperty("型号")
+ private String model;
+
+ @ExcelProperty("责任人/使用人")
+ private String personResponsible;
+
+ @ExcelProperty("设备类型")
+ //1计算机设备2办公自动化设备3外部设备4其他
+ private String deviceType;
+
+ @ExcelProperty("编号")
+ private String number;
+
+ @ExcelProperty("品牌")
+ private String brand;
+
+ @ExcelProperty("密级/类型")
+ private String confidentiality;
+
+ @ExcelProperty("状态")
+ //1.完好2需整改3损坏
+ private String status;
+
+ @ExcelProperty("用途")
+ private String purpose;
+
+ @ExcelProperty("使用地点")
+ private String location;
+
+ @ExcelProperty("使用情况")
+ private String used;
+
+ @ExcelProperty("备注")
+ private String remark;
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/Material.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/Material.java
new file mode 100644
index 0000000..a2cf83f
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/Material.java
@@ -0,0 +1,84 @@
+package com.gkhy.exam.system.domain;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author hh
+ * @since 2025-10-11 14:20:49
+ */
+@Getter
+@Setter
+@TableName("material")
+@ApiModel(value = "Material对象", description = "")
+public class Material implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @TableId("id")
+ private Long id;
+
+ @ApiModelProperty(value = "公司ID", required = true)
+ @TableField("company_id")
+ @NotNull(message = "公司ID不能为空")
+ private Long companyId;
+
+ @ApiModelProperty(value = "名称", required = true)
+ @TableField("material_name")
+ @NotBlank(message = "名称不能为空")
+ private String materialName;
+
+ @ApiModelProperty(value = "单位", required = true)
+ @TableField("material_unit")
+ @NotBlank(message = "单位不能为空")
+ private String materialUnit;
+
+ @ApiModelProperty(value = "规格", required = true)
+ @TableField("specification")
+ @NotBlank(message = "规格不能为空")
+ private String specification;
+
+ @ApiModelProperty("库存量")
+ @TableField("inventory")
+ private Integer inventory;
+
+ @ApiModelProperty("删除标志(0为删除,1删除,默认0)")
+ @TableField("del_flag")
+ private Integer delFlag;
+
+ @ApiModelProperty("创建时间")
+ @TableField("create_time")
+ private LocalDateTime createTime;
+
+ @ApiModelProperty("创建人")
+ @TableField("create_by")
+ private String createBy;
+
+ @ApiModelProperty("更新时间")
+ @TableField("update_time")
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty("更新人")
+ @TableField("update_by")
+ private String updateBy;
+
+ @ApiModelProperty("乐观锁")
+ @TableField("version")
+ private Integer version;
+
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/StandingBook.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/StandingBook.java
index 3536986..0e2de71 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/domain/StandingBook.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/StandingBook.java
@@ -47,9 +47,15 @@
@TableField(exist = false)
private String deptName;
- @ApiModelProperty("名称型号")
+ @ApiModelProperty("名称")
+ @TableField("name")
+ @NotBlank(message = "名称不能为空")
+ private String name;
+
+
+ @ApiModelProperty("型号")
@TableField("model")
- @NotBlank(message = "名称型号不能为空")
+ @NotBlank(message = "型号不能为空")
private String model;
@ApiModelProperty("责任人/使用人")
@@ -61,7 +67,7 @@
@TableField(exist = false)
private String personResponsibleName;
- @ApiModelProperty("设备类型1生成设备2办公自动化设备")
+ @ApiModelProperty("设备类型1计算机设备2办公自动化设备3外部设备4其他")
@TableField("device_type")
@NotNull(message = "设备类型不能为空")
private Integer deviceType;
@@ -79,7 +85,7 @@
@TableField("confidentiality")
private String confidentiality;
- @ApiModelProperty("状态1.完好2损坏")
+ @ApiModelProperty("状态1.完好2需整改3损坏")
@TableField("status")
private Integer status;
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecord.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecord.java
index 11dcfde..2eb0bc2 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecord.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecord.java
@@ -38,6 +38,15 @@
@NotNull(message = "公司id不能为空")
private Long companyId;
+ @ApiModelProperty(value = "物料id",required = true)
+ @TableField("material_id")
+ @NotNull(message = "物料id不能为空")
+ private Long materialId;
+
+ @ApiModelProperty("库存量")
+ @TableField("inventory")
+ private Integer inventory;
+
@ApiModelProperty(value = "记录名称",required = true)
@TableField("record_name")
@NotNull(message = "记录名称不能为空")
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecordDetails.java b/multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecordDetails.java
index 4848deb..301f48f 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecordDetails.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/domain/WarehousingRecordDetails.java
@@ -39,37 +39,46 @@
@NotNull(message = "登记时间不能为空")
private LocalDateTime boardingTime;
- @ApiModelProperty("名称")
- @TableField("name")
- private String name;
+// @ApiModelProperty("名称")
+// @TableField("name")
+// private String name;
- @ApiModelProperty("入库单位")
- @TableField("enter_company")
- private String enterCompany;
+ @ApiModelProperty("单位")
+ @TableField("material_unit")
+ private String materialUnit;
- @ApiModelProperty("入库数量")
- @TableField("enter_num")
- private Integer enterNum;
+ @ApiModelProperty("数量")
+ @TableField("num")
+ private Integer num;
- @ApiModelProperty("入库经手人")
- @TableField("enter_person")
- private String enterPerson;
+ @ApiModelProperty("记录类型1入库2出库")
+ @TableField("record_type")
+ @NotNull(message = "记录类型不能为空")
+ private Integer recordType;
- @ApiModelProperty("出库单位")
- @TableField("outbound_company")
- private String outboundCompany;
+ @ApiModelProperty("规格")
+ @TableField("specification")
+ private String specification;
- @ApiModelProperty("出库数量")
- @TableField("outbound_num")
- private Integer outboundNum;
+// @ApiModelProperty("入库经手人")
+// @TableField("enter_person")
+// private String enterPerson;
+//
+// @ApiModelProperty("出库单位")
+// @TableField("outbound_company")
+// private String outboundCompany;
+//
+// @ApiModelProperty("出库数量")
+// @TableField("outbound_num")
+// private Integer outboundNum;
+//
+// @ApiModelProperty("出库经手人")
+// @TableField("outbound_person")
+// private String outboundPerson;
- @ApiModelProperty("出库经手人")
- @TableField("outbound_person")
- private String outboundPerson;
-
- @ApiModelProperty("库存")
- @TableField("amount")
- private Integer amount;
+// @ApiModelProperty("库存")
+// @TableField("amount")
+// private Integer amount;
@ApiModelProperty("备注")
@TableField("remark")
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java
index d43b756..114cba2 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/InternalKnowledgeMapper.java
@@ -1,6 +1,5 @@
package com.gkhy.exam.system.mapper;
-import com.gkhy.exam.system.domain.ExternalKnowledge;
import com.gkhy.exam.system.domain.InternalKnowledge;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/MaterialMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/MaterialMapper.java
new file mode 100644
index 0000000..7656908
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/MaterialMapper.java
@@ -0,0 +1,21 @@
+package com.gkhy.exam.system.mapper;
+
+import com.gkhy.exam.system.domain.Material;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ * Mapper 接口
+ * </p>
+ *
+ * @author hh
+ * @since 2025-10-11 14:20:49
+ */
+@Mapper
+public interface MaterialMapper extends BaseMapper<Material> {
+
+ List<Material> selectMaterialList(Material material);
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/mapper/WarehousingRecordDetailsMapper.java b/multi-system/src/main/java/com/gkhy/exam/system/mapper/WarehousingRecordDetailsMapper.java
index ccbfb67..0c4456e 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/mapper/WarehousingRecordDetailsMapper.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/mapper/WarehousingRecordDetailsMapper.java
@@ -1,8 +1,11 @@
package com.gkhy.exam.system.mapper;
+import com.gkhy.exam.system.domain.WarehousingRecord;
import com.gkhy.exam.system.domain.WarehousingRecordDetails;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
/**
* <p>
@@ -15,4 +18,6 @@
@Mapper
public interface WarehousingRecordDetailsMapper extends BaseMapper<WarehousingRecordDetails> {
+
+ List<WarehousingRecordDetails> selectWarehousingRecordDetailList(WarehousingRecord warehousingRecord);
}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/MaterialService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/MaterialService.java
new file mode 100644
index 0000000..62d7431
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/MaterialService.java
@@ -0,0 +1,26 @@
+package com.gkhy.exam.system.service;
+
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.system.domain.Material;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.gkhy.exam.system.domain.WarehousingRecord;
+
+/**
+ * <p>
+ * 服务类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-10-11 14:20:49
+ */
+public interface MaterialService extends IService<Material> {
+
+
+ CommonPage selectMaterialList(Material material);
+
+ CommonResult saveMaterial(Material material);
+
+ CommonResult deletedMaterial(Long id);
+
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/StandingBookService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/StandingBookService.java
index 00e0afa..66eaf27 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/StandingBookService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/StandingBookService.java
@@ -2,9 +2,11 @@
import com.gkhy.exam.common.api.CommonPage;
import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.api.ImportResult;
import com.gkhy.exam.system.domain.Correction;
import com.gkhy.exam.system.domain.StandingBook;
import com.baomidou.mybatisplus.extension.service.IService;
+import org.springframework.web.multipart.MultipartFile;
/**
* <p>
@@ -22,4 +24,6 @@
CommonResult updateStandingBook(StandingBook standingBook);
CommonResult deletedStandingBook(Integer id);
+
+ ImportResult importStandingBooks(Long companyId ,MultipartFile file);
}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/WarehousingRecordService.java b/multi-system/src/main/java/com/gkhy/exam/system/service/WarehousingRecordService.java
index a2d0bbf..99fa344 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/WarehousingRecordService.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/WarehousingRecordService.java
@@ -19,6 +19,8 @@
CommonPage selectWarehousingRecordList(WarehousingRecord warehousingRecord);
+ CommonPage selectWarehousingRecordDetailList(WarehousingRecord warehousingRecord);
+
CommonResult saveWarehousingRecord(WarehousingRecord warehousingRecord);
CommonResult getWarehousingRecord(Long id);
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CompanySummaryServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CompanySummaryServiceImpl.java
index 82e47a8..a762b38 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CompanySummaryServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/CompanySummaryServiceImpl.java
@@ -12,15 +12,12 @@
import com.gkhy.exam.system.mapper.CompanySummaryMapper;
import com.gkhy.exam.system.service.CompanySummaryService;
import com.gkhy.exam.system.service.SysCompanyService;
-import org.apache.poi.schemas.vmldrawing.XmlDocument;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
-import java.io.FileInputStream;
-import java.io.IOException;
import java.io.InputStream;
import java.time.LocalDateTime;
import java.util.List;
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/MaterialServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/MaterialServiceImpl.java
new file mode 100644
index 0000000..ad942ef
--- /dev/null
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/MaterialServiceImpl.java
@@ -0,0 +1,81 @@
+package com.gkhy.exam.system.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.gkhy.exam.common.api.CommonPage;
+import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.utils.PageUtils;
+import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.Material;
+import com.gkhy.exam.system.domain.WarehousingRecord;
+import com.gkhy.exam.system.mapper.MaterialMapper;
+import com.gkhy.exam.system.service.MaterialService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * <p>
+ * 服务实现类
+ * </p>
+ *
+ * @author hh
+ * @since 2025-10-11 14:20:49
+ */
+@Service
+public class MaterialServiceImpl extends ServiceImpl<MaterialMapper, Material> implements MaterialService {
+
+ @Autowired
+ private MaterialMapper materialMapper;
+
+
+ @Override
+ public CommonPage selectMaterialList(Material material) {
+ PageUtils.startPage();
+ List<Material> materials = materialMapper.selectMaterialList(material);
+ return CommonPage.restPage(materials);
+ }
+
+ @Override
+ public CommonResult saveMaterial(Material material) {
+ LambdaQueryWrapper<Material> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(Material::getMaterialName, material.getMaterialName());
+ queryWrapper.eq(Material::getDelFlag, UserConstant.ENABLE);
+ queryWrapper.eq(Material::getCompanyId, material.getCompanyId());
+ queryWrapper.eq(Material::getSpecification, material.getSpecification());
+ if (material.getId() == null){
+ long count = materialMapper.selectCount(queryWrapper);
+ if (count > 0){
+ return CommonResult.failed("该规格物料已存在");
+ }
+ material.setCreateTime(LocalDateTime.now());
+ material.setCreateBy(SecurityUtils.getUsername());
+ materialMapper.insert(material);
+ }else {
+ queryWrapper.ne(Material::getId, material.getId());
+ long count = materialMapper.selectCount(queryWrapper);
+ if (count > 0){
+ return CommonResult.failed("该规格物料已存在");
+ }
+ material.setUpdateTime(LocalDateTime.now());
+ material.setUpdateBy(SecurityUtils.getUsername());
+ materialMapper.updateById(material);
+ }
+ return CommonResult.success();
+ }
+
+ @Override
+ public CommonResult deletedMaterial(Long id) {
+ materialMapper.update(new Material(),
+ new LambdaUpdateWrapper<Material>().eq(Material::getId, id)
+ .set(Material::getDelFlag, UserConstant.DEPT_DISABLE)
+ .set(Material::getUpdateTime, LocalDateTime.now())
+ .set(Material::getUpdateBy, SecurityUtils.getUsername()));
+
+ return CommonResult.success("删除成功");
+ }
+}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandingBookServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandingBookServiceImpl.java
index 7c0d37c..41c4905 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandingBookServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/StandingBookServiceImpl.java
@@ -1,19 +1,35 @@
package com.gkhy.exam.system.service.impl;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelReader;
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.read.listener.ReadListener;
+import com.alibaba.excel.read.metadata.ReadSheet;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.gkhy.exam.common.api.CommonPage;
import com.gkhy.exam.common.api.CommonResult;
+import com.gkhy.exam.common.api.ImportResult;
+import com.gkhy.exam.common.domain.entity.SysDept;
+import com.gkhy.exam.common.domain.entity.SysUser;
import com.gkhy.exam.common.utils.PageUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
-import com.gkhy.exam.system.domain.Correction;
+import com.gkhy.exam.system.domain.DTO.StandingBookImportDTO;
import com.gkhy.exam.system.domain.StandingBook;
+import com.gkhy.exam.system.domain.vo.DeptVo;
import com.gkhy.exam.system.mapper.StandingBookMapper;
+import com.gkhy.exam.system.mapper.SysDeptMapper;
+import com.gkhy.exam.system.mapper.SysUserMapper;
import com.gkhy.exam.system.service.StandingBookService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
import java.time.LocalDateTime;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
* <p>
@@ -28,6 +44,13 @@
@Autowired
private StandingBookMapper standingBookMapper;
+
+ @Autowired
+ private SysDeptMapper sysDeptMapper;
+
+ @Autowired
+
+ private SysUserMapper sysUserMapper;
@Override
public CommonPage selectStandingBookList(StandingBook standingBook) {
PageUtils.startPage();
@@ -71,4 +94,105 @@
}
return CommonResult.failed();
}
+
+ @Override
+ public ImportResult importStandingBooks(Long companyId, MultipartFile file) {
+ ImportResult result = new ImportResult();
+ result.setSuccessCount(0);
+ result.setFailCount(0);
+ result.setErrorMessages(new ArrayList<>());
+
+ SysDept sysDept = new SysDept();
+ sysDept.setCompanyId(companyId);
+ List<DeptVo> deptVos = sysDeptMapper.selectDeptList(sysDept);
+ Map<String, Long> deptNameIdMap = deptVos.stream()
+ .collect(Collectors.toMap(DeptVo::getDeptName, DeptVo::getDeptId));
+
+ LambdaQueryWrapper<SysUser> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(SysUser::getCompanyId, companyId);
+ queryWrapper.eq(SysUser::getDelFlag, 0);
+ List<SysUser> sysUsers = sysUserMapper.selectList(queryWrapper);
+ Map<String, Long> userNameIdMap = sysUsers.stream()
+ .collect(Collectors.toMap(SysUser::getName, SysUser::getId));
+
+ try {
+ // 使用EasyExcel读取文件
+ ReadListener<StandingBookImportDTO> listener = new ReadListener<StandingBookImportDTO>() {
+ @Override
+ public void invoke(StandingBookImportDTO dto, AnalysisContext context) {
+ try {
+ // 转换为实体对象
+ StandingBook standingBook = new StandingBook();
+ standingBook.setCompanyId(companyId);
+ standingBook.setDeptId(deptNameIdMap.get(dto.getDeptName()) == null ? 0L : deptNameIdMap.get(dto.getDeptName()));
+ standingBook.setName(dto.getName());
+ standingBook.setModel(dto.getModel());
+ standingBook.setPersonResponsible(userNameIdMap.get(dto.getPersonResponsible()) == null ? 0L : userNameIdMap.get(dto.getPersonResponsible()));
+ String deviceType = dto.getDeviceType();
+ switch (deviceType) {
+ case "计算机设备":
+ standingBook.setDeviceType(1);
+ break;
+ case "办公自动化设备":
+ standingBook.setDeviceType(2);
+ break;
+ case "外部设备":
+ standingBook.setDeviceType(3);
+ break;
+ default:
+ standingBook.setDeviceType(4);
+ break;
+ }
+ standingBook.setNumber(dto.getNumber());
+ standingBook.setBrand(dto.getBrand());
+ standingBook.setConfidentiality(dto.getConfidentiality());
+ switch (dto.getStatus()) {
+ case "完好":
+ standingBook.setStatus(1);
+ break;
+ case "需整改":
+ standingBook.setStatus(2);
+ break;
+ default:
+ standingBook.setStatus(3);
+ break;
+ }
+ standingBook.setPurpose(dto.getPurpose());
+ standingBook.setLocation(dto.getLocation());
+ standingBook.setUsed(dto.getUsed());
+ standingBook.setRemark(dto.getRemark());
+ standingBook.setCreateTime(LocalDateTime.now());
+ standingBook.setCreateBy(SecurityUtils.getUsername());
+ standingBookMapper.insert(standingBook);
+ result.setSuccessCount(result.getSuccessCount() + 1);
+ } catch (Exception e) {
+ result.getErrorMessages().add("行" + context.readRowHolder().getRowIndex() + "导入失败:" + e.getMessage());
+ result.setFailCount(result.getFailCount() + 1);
+ }
+ }
+
+
+
+
+ @Override
+ public void doAfterAllAnalysed(AnalysisContext context) {
+ // 导入完成后的处理
+ }
+ };
+
+ // 创建读取器
+ ExcelReader excelReader = EasyExcel.read(file.getInputStream(), StandingBookImportDTO.class, listener).build();
+ ReadSheet readSheet = EasyExcel.readSheet(0).build();
+ excelReader.read(readSheet);
+
+ } catch (Exception e) {
+ result.getErrorMessages().add("导入失败:" + e.getMessage());
+ }
+
+ return result;
+ }
+
+
+
+
}
diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/WarehousingRecordServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/WarehousingRecordServiceImpl.java
index 89f254b..c4f48a1 100644
--- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/WarehousingRecordServiceImpl.java
+++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/WarehousingRecordServiceImpl.java
@@ -6,11 +6,14 @@
import com.gkhy.exam.common.api.CommonPage;
import com.gkhy.exam.common.api.CommonResult;
import com.gkhy.exam.common.constant.UserConstant;
+import com.gkhy.exam.common.exception.ApiException;
import com.gkhy.exam.common.utils.PageUtils;
import com.gkhy.exam.common.utils.SecurityUtils;
+import com.gkhy.exam.system.domain.Material;
import com.gkhy.exam.system.domain.OutsourcedUnqualified;
import com.gkhy.exam.system.domain.WarehousingRecord;
import com.gkhy.exam.system.domain.WarehousingRecordDetails;
+import com.gkhy.exam.system.mapper.MaterialMapper;
import com.gkhy.exam.system.mapper.WarehousingRecordDetailsMapper;
import com.gkhy.exam.system.mapper.WarehousingRecordMapper;
import com.gkhy.exam.system.service.WarehousingRecordService;
@@ -37,17 +40,33 @@
private WarehousingRecordMapper warehousingRecordMapper;
@Autowired
private WarehousingRecordDetailsMapper warehousingRecordDetailsMapper;
+ @Autowired
+ private MaterialMapper materialMapper;
@Override
public CommonPage selectWarehousingRecordList(WarehousingRecord warehousingRecord) {
PageUtils.startPage();
List<WarehousingRecord> warehousingRecords = warehousingRecordMapper.selectWarehousingRecordList(warehousingRecord);
+ warehousingRecords.stream().forEach(item -> {
+ List<WarehousingRecordDetails> de = warehousingRecordDetailsMapper.selectList(
+ new LambdaQueryWrapper<>(WarehousingRecordDetails.class).eq(WarehousingRecordDetails::getRecordId, item.getId())
+ .eq(WarehousingRecordDetails::getDelFlag, UserConstant.ENABLE).orderByAsc(WarehousingRecordDetails::getCreateTime));
+ item.setWarehousingRecordDetails(de);
+ });
+ return CommonPage.restPage(warehousingRecords);
+ }
+
+ @Override
+ public CommonPage selectWarehousingRecordDetailList(WarehousingRecord warehousingRecord) {
+ PageUtils.startPage();
+ List<WarehousingRecordDetails> warehousingRecords = warehousingRecordDetailsMapper.selectWarehousingRecordDetailList(warehousingRecord);
return CommonPage.restPage(warehousingRecords);
}
@Override
@Transactional
public CommonResult saveWarehousingRecord(WarehousingRecord warehousingRecord) {
+
List<WarehousingRecordDetails> warehousingRecordDetails = warehousingRecord.getWarehousingRecordDetails();
if (ObjectUtil.isEmpty(warehousingRecordDetails)){
return CommonResult.validateFailed("请选择入库记录详情");
@@ -64,12 +83,19 @@
i = warehousingRecordMapper.updateById(warehousingRecord);
}
if (i > 0){
- batchSave(warehousingRecord.getId(), warehousingRecordDetails,warehousingRecord.getDelDetails());
+ batchSave(warehousingRecord.getId(), warehousingRecordDetails,warehousingRecord.getDelDetails(),warehousingRecord.getMaterialId(),warehousingRecord.getInventory());
}
+
+
return CommonResult.success();
}
- private void batchSave(Long id, List<WarehousingRecordDetails> warehousingRecordDetails,List<Long> delDetails) {
+ private void batchSave(Long id, List<WarehousingRecordDetails> warehousingRecordDetails,List<Long> delDetails,Long materialId,int inventory) {
+
+ Material material = materialMapper.selectById(materialId);
+ if (ObjectUtil.isEmpty(material)){
+ throw new ApiException("物料不存在");
+ }
warehousingRecordDetails.stream().filter(item -> item.getId() == null).forEach(item -> {
item.setRecordId(id);
item.setCreateTime(LocalDateTime.now());
@@ -90,6 +116,12 @@
.set(WarehousingRecordDetails::getUpdateBy, SecurityUtils.getUsername()));
}
+ materialMapper.update(new Material(),
+ new LambdaUpdateWrapper<Material>().eq(Material::getId, materialId)
+ .set(Material::getInventory, inventory)
+ .set(Material::getUpdateTime, LocalDateTime.now())
+ .set(Material::getUpdateBy, SecurityUtils.getUsername()));
+
}
@Override
diff --git a/multi-system/src/main/resources/mapper/system/MaterialMapper.xml b/multi-system/src/main/resources/mapper/system/MaterialMapper.xml
new file mode 100644
index 0000000..e95e6b0
--- /dev/null
+++ b/multi-system/src/main/resources/mapper/system/MaterialMapper.xml
@@ -0,0 +1,19 @@
+<?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.gkhy.exam.system.mapper.MaterialMapper">
+
+ <select id="selectMaterialList" parameterType="com.gkhy.exam.system.domain.Material" resultType="com.gkhy.exam.system.domain.Material">
+ select * from material where del_flag = 0
+ <if test="materialName != null">
+ and material_name like concat('%',#{materialName},'%')
+ </if>
+ <if test="materialUnit != null">
+ and material_unit like concat('%',#{materialUnit},'%')
+ </if>
+ <if test="inventory != null">
+ and inventory = #{inventory}
+ </if>
+ order by update_time desc
+ </select>
+
+</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/WarehousingRecordDetailsMapper.xml b/multi-system/src/main/resources/mapper/system/WarehousingRecordDetailsMapper.xml
index 666339e..56f32b7 100644
--- a/multi-system/src/main/resources/mapper/system/WarehousingRecordDetailsMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/WarehousingRecordDetailsMapper.xml
@@ -2,4 +2,13 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.gkhy.exam.system.mapper.WarehousingRecordDetailsMapper">
+
+ <select id="selectWarehousingRecordDetailList" resultType="com.gkhy.exam.system.domain.WarehousingRecordDetails" parameterType="com.gkhy.exam.system.domain.WarehousingRecord">
+
+ select a.* from warehousing_record_details a
+ left join warehousing_record b on a.record_id = b.id
+ where del_flag = 0 and b.del_flag = 0
+
+ </select>
+
</mapper>
diff --git a/multi-system/src/main/resources/mapper/system/WarehousingRecordMapper.xml b/multi-system/src/main/resources/mapper/system/WarehousingRecordMapper.xml
index 83e45a5..b75a728 100644
--- a/multi-system/src/main/resources/mapper/system/WarehousingRecordMapper.xml
+++ b/multi-system/src/main/resources/mapper/system/WarehousingRecordMapper.xml
@@ -9,6 +9,9 @@
<if test="companyId != null">
and company_id = #{companyId}
</if>
+ <if test="materialId != null">
+ and material_id = #{materialId}
+ </if>
order by create_time desc
</select>
</mapper>
--
Gitblit v1.9.2