From 0756083281dcafd71efcf3fe68cb8875b4881985 Mon Sep 17 00:00:00 2001
From: maven <2163098428@qq.com>
Date: 星期五, 05 九月 2025 10:32:22 +0800
Subject: [PATCH] yys  物资领用模块

---
 src/main/java/com/ruoyi/officesupplies/pojo/OfficeSupplies.java                    |  160 ++++++++++++++++++++++++++
 src/main/java/com/ruoyi/officesupplies/service/impl/OfficeSuppliesServiceImpl.java |   30 +++++
 src/main/java/com/ruoyi/officesupplies/mapper/OfficeSuppliesMapper.java            |   23 +++
 src/main/java/com/ruoyi/officesupplies/service/OfficeSuppliesService.java          |   22 +++
 src/main/resources/mapper/officesupplies/OfficeSuppliesMapper.xml                  |   19 +++
 src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java    |   87 ++++++++++++++
 6 files changed, 341 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java b/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java
new file mode 100644
index 0000000..91243f4
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/controller/OfficeSuppliesController.java
@@ -0,0 +1,87 @@
+package com.ruoyi.officesupplies.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.equipmentenergyconsumption.pojo.EquipmentEnergyConsumption;
+import com.ruoyi.framework.aspectj.lang.annotation.Log;
+import com.ruoyi.framework.aspectj.lang.enums.BusinessType;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.officesupplies.pojo.OfficeSupplies;
+import com.ruoyi.officesupplies.service.OfficeSuppliesService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:16
+ */
+@RestController
+@Api(tags = "鍔炲叕鐗╄祫")
+@RequestMapping("/officeSupplies")
+public class OfficeSuppliesController extends BaseController {
+
+    @Autowired
+    private OfficeSuppliesService officeSuppliesService;
+
+    @GetMapping("/listPage")
+    @ApiOperation("鍔炲叕鐗╄祫-鍒嗛〉鏌ヨ")
+    public AjaxResult listPage(Page page, OfficeSupplies officeSupplies) {
+        return officeSuppliesService.listPage(page, officeSupplies);
+    }
+
+    @PostMapping("/add")
+    @ApiOperation("鍔炲叕鐗╄祫-娣诲姞")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult add(@RequestBody OfficeSupplies officeSupplies) {
+        // 鎸夌収褰撳墠鏃堕棿yyyyMMdd + 褰撳ぉ鏂板鏁伴噺 + 1鐢熸垚缂栧彿
+        // 鑾峰彇褰撳ぉ鏂板鏁伴噺
+        long count = officeSuppliesService.count(new LambdaQueryWrapper<OfficeSupplies>()
+                .gt(OfficeSupplies::getCreateTime, LocalDate.now())
+                .lt(OfficeSupplies::getCreateTime, LocalDate.now().plusDays(1)));
+        String code = "WS" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) +  String.format("%03d", count + 1);
+        officeSupplies.setCode(code);
+        officeSupplies.setStatus(1);
+        officeSupplies.setApplyTime(new Date());
+        return officeSuppliesService.save(officeSupplies) ? success() : error();
+    }
+
+    @PostMapping("/update")
+    @ApiOperation("鍔炲叕鐗╄祫-淇敼")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult update(@RequestBody OfficeSupplies officeSupplies) {
+        return officeSuppliesService.updateById(officeSupplies) ? success() : error();
+    }
+
+    @DeleteMapping("/delete")
+    @ApiOperation("鍔炲叕鐗╄祫-鍒犻櫎")
+    @Transactional(rollbackFor = Exception.class)
+    public AjaxResult delete(@RequestBody List<Long> ids) {
+        if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        return officeSuppliesService.removeBatchByIds(ids) ? success() : error();
+    }
+
+    /**
+     * 瀵煎嚭鍔炲叕鐗╄祫
+     */
+    @Log(title = "瀵煎嚭鍔炲叕鐗╄祫", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    @ApiOperation("瀵煎嚭鍔炲叕鐗╄祫")
+    public void export(HttpServletResponse response) {
+        ExcelUtil<OfficeSupplies> util = new ExcelUtil<OfficeSupplies>(OfficeSupplies.class);
+        List<OfficeSupplies> list = officeSuppliesService.list();
+        util.exportExcel(response, list , "鍔炲叕鐗╄祫");
+    }
+
+}
diff --git a/src/main/java/com/ruoyi/officesupplies/mapper/OfficeSuppliesMapper.java b/src/main/java/com/ruoyi/officesupplies/mapper/OfficeSuppliesMapper.java
new file mode 100644
index 0000000..7d73636
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/mapper/OfficeSuppliesMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.officesupplies.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.officesupplies.pojo.OfficeSupplies;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:13
+ */
+public interface OfficeSuppliesMapper extends BaseMapper<OfficeSupplies> {
+
+    /**
+     * 鍒楄〃鍒嗛〉鏌ヨ
+     *
+     * @param page
+     * @param officeSupplies
+     * @return
+     */
+    IPage<OfficeSupplies> listPage(Page page,@Param("req") OfficeSupplies officeSupplies);
+}
diff --git a/src/main/java/com/ruoyi/officesupplies/pojo/OfficeSupplies.java b/src/main/java/com/ruoyi/officesupplies/pojo/OfficeSupplies.java
new file mode 100644
index 0000000..b693c10
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/pojo/OfficeSupplies.java
@@ -0,0 +1,160 @@
+package com.ruoyi.officesupplies.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import com.ruoyi.sales.pojo.CommonFile;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:02
+ */
+@Data
+@ApiModel
+@TableName("office_supplies")
+public class OfficeSupplies {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty("缂栧彿")
+    @Excel(name = "缂栧彿")
+    private String code;
+
+    @ApiModelProperty("鐗╁搧鍚嶇О")
+    private String itemName;
+
+    @ApiModelProperty("鐢宠浜�")
+    @Excel(name = "鐢宠浜�")
+    private String applicant;
+
+    /**
+     * 閮ㄩ棬
+     */
+    @ApiModelProperty("閮ㄩ棬")
+    @Excel(name = "閮ㄩ棬")
+    private String dept;
+
+    /**
+     * 鐗╄祫绫诲瀷锛�1-鍏朵粬 2-娓呮磥鐢ㄥ搧 3-鐢靛瓙鐢ㄥ搧 4-鐢靛瓙璁惧锛�
+     */
+    @ApiModelProperty("鐗╄祫绫诲瀷锛�1-鍏朵粬 2-娓呮磥鐢ㄥ搧 3-鐢靛瓙鐢ㄥ搧 4-鐢靛瓙璁惧锛�")
+    @Excel(name = "鐗╄祫绫诲瀷", readConverterExp = "1=鍏朵粬,2=娓呮磥鐢ㄥ搧,3=鐢靛瓙鐢ㄥ搧,4=鐢靛瓙璁惧")
+    private Integer materialType;
+
+    /**
+     * 鐢宠鏁伴噺
+     */
+    @ApiModelProperty("鐢宠鏁伴噺")
+    @Excel(name = "鐢宠鏁伴噺")
+    private Integer applyNum;
+
+    /**
+     * 瀹℃壒鎰忚
+     */
+    @ApiModelProperty("瀹℃壒鎰忚")
+//    @Excel(name = "瀹℃壒鎰忚")
+    private String approvalOpinions;
+
+    /**
+     * 鐢宠鍘熷洜
+     */
+    @ApiModelProperty("鐢宠鍘熷洜")
+    @Excel(name = "鐢宠鍘熷洜")
+    private String reason;
+
+
+    /**
+     * 绱ф�ョ▼搴︼紙1-鏅�� 2-绱ф�� 3-闈炲父绱ф�ワ級
+     */
+    @ApiModelProperty("绱ф�ョ▼搴︼紙1-鏅�� 2-绱ф�� 3-闈炲父绱ф�ワ級")
+//    @Excel(name = "绱ф�ョ▼搴�", readConverterExp = "1=鏅��,2=绱ф��,3=闈炲父绱ф��")
+    private Integer urgency;
+
+    /**
+     * 鐘舵�侊紙1-寰呭鎵� 2-宸叉嫆缁� 3-宸查�氳繃 4-宸插彂鏀撅級
+     */
+    @ApiModelProperty("鐘舵�侊紙1-寰呭鎵� 2-宸叉嫆缁� 3-宸查�氳繃 4-宸插彂鏀撅級")
+    @Excel(name = "鐘舵��", readConverterExp = "1=寰呭鎵�,2=宸叉嫆缁�,3=宸查�氳繃,4=宸插彂鏀�")
+    private Integer status;
+
+    /**
+     * 鐢宠鏃堕棿
+     */
+    @ApiModelProperty("鐢宠鏃堕棿")
+    @Excel(name = "鐢宠鏃堕棿" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date applyTime;
+
+
+    /**
+     * 瀹℃壒浜�
+     */
+    @ApiModelProperty("瀹℃壒浜�")
+    @Excel(name = "瀹℃壒浜�")
+    private String approval;
+
+    /**
+     * 瀹℃壒鏃堕棿
+     */
+    @ApiModelProperty("瀹℃壒鏃堕棿")
+    @Excel(name = "瀹℃壒鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date approvalTime;
+
+    /**
+     * 鍙戞斁鏃堕棿
+     */
+    @ApiModelProperty("鍙戞斁鏃堕棿")
+    @Excel(name = "鍙戞斁鏃堕棿", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date issueTime;
+
+    @ApiModelProperty("鍙戞斁浜�")
+//    @Excel(name = "鍙戞斁浜�")
+    private String issueUser;
+
+    /**
+     * 鍒涘缓鑰�
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    /**
+     * 鍒涘缓鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    /**
+     * 淇敼鑰�
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    /**
+     * 淇敼鏃堕棿
+     */
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    /**
+     * 绉熸埛ID
+     */
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/officesupplies/service/OfficeSuppliesService.java b/src/main/java/com/ruoyi/officesupplies/service/OfficeSuppliesService.java
new file mode 100644
index 0000000..3a521b5
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/service/OfficeSuppliesService.java
@@ -0,0 +1,22 @@
+package com.ruoyi.officesupplies.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.officesupplies.pojo.OfficeSupplies;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:14
+ */
+public interface OfficeSuppliesService extends IService<OfficeSupplies> {
+
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param page
+     * @param officeSupplies
+     * @return
+     */
+    AjaxResult listPage(Page page, OfficeSupplies officeSupplies);
+}
diff --git a/src/main/java/com/ruoyi/officesupplies/service/impl/OfficeSuppliesServiceImpl.java b/src/main/java/com/ruoyi/officesupplies/service/impl/OfficeSuppliesServiceImpl.java
new file mode 100644
index 0000000..2ba961f
--- /dev/null
+++ b/src/main/java/com/ruoyi/officesupplies/service/impl/OfficeSuppliesServiceImpl.java
@@ -0,0 +1,30 @@
+package com.ruoyi.officesupplies.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.framework.web.domain.AjaxResult;
+import com.ruoyi.officesupplies.mapper.OfficeSuppliesMapper;
+import com.ruoyi.officesupplies.pojo.OfficeSupplies;
+import com.ruoyi.officesupplies.service.OfficeSuppliesService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author :yys
+ * @date : 2025/9/4 14:15
+ */
+@Service
+@Slf4j
+public class OfficeSuppliesServiceImpl extends ServiceImpl<OfficeSuppliesMapper, OfficeSupplies> implements OfficeSuppliesService {
+
+    @Autowired
+    private OfficeSuppliesMapper officeSuppliesMapper;
+
+    @Override
+    public AjaxResult listPage(Page page, OfficeSupplies officeSupplies) {
+        IPage<OfficeSupplies> list = officeSuppliesMapper.listPage(page, officeSupplies);
+        return AjaxResult.success(list);
+    }
+}
diff --git a/src/main/resources/mapper/officesupplies/OfficeSuppliesMapper.xml b/src/main/resources/mapper/officesupplies/OfficeSuppliesMapper.xml
new file mode 100644
index 0000000..7191aa9
--- /dev/null
+++ b/src/main/resources/mapper/officesupplies/OfficeSuppliesMapper.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.ruoyi.officesupplies.mapper.OfficeSuppliesMapper">
+
+    <select id="listPage" resultType="com.ruoyi.officesupplies.pojo.OfficeSupplies">
+        select * from office_supplies
+        <where>
+            <if test="req.code != null and req.code != ''">
+                and code like concat('%',#{req.code},'%')
+            </if>
+            <if test="req.applicant != null and req.applicant != ''">
+                and applicant like concat('%',#{req.applicant},'%')
+            </if>
+            <if test="req.status != null and req.status != ''">
+                and status = #{req.status}
+            </if>
+        </where>
+    </select>
+</mapper>
\ No newline at end of file

--
Gitblit v1.9.3