Sfoglia il codice sorgente

物资信息 物资借出归还

车车 1 anno fa
parent
commit
d93093d5d7

+ 126 - 0
ktg-iscs/src/main/java/com/ktg/iscs/controller/IsMaterialsController.java

@@ -0,0 +1,126 @@
+package com.ktg.iscs.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ktg.common.annotation.Log;
+import com.ktg.common.core.controller.BaseController;
+import com.ktg.common.enums.BusinessType;
+import com.ktg.common.pojo.CommonResult;
+import com.ktg.common.utils.poi.ExcelUtil;
+import com.ktg.iscs.domain.IsMaterials;
+import com.ktg.iscs.domain.dto.materials.MaterialsPageDTO;
+import com.ktg.iscs.domain.vo.materials.LoanMaterialDTO;
+import com.ktg.iscs.domain.vo.materials.MaterialsPageVO;
+import com.ktg.iscs.service.IIsMaterialsService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.Parameters;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+/**
+ * 物资Controller
+ *
+ * @author cgj
+ * @date 2024-11-08
+ */
+@Api(tags = "物资")
+@RestController
+@RequestMapping("/iscs/materials")
+public class IsMaterialsController extends BaseController
+{
+    @Autowired
+    private IIsMaterialsService isMaterialsService;
+
+    /**
+     * 查询物资分页
+     */
+    @ApiOperation("查询物资-分页")
+    @Parameters({
+            @Parameter(name = "page", description = "Page"),
+            @Parameter(name = "dto", description = "实体参数")
+    })
+    @PreAuthorize("@ss.hasPermi('iscs:materials:list')")
+    @GetMapping("/getIsMaterialsPage")
+    public CommonResult<Page<MaterialsPageVO>> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto)
+    {
+        Page<MaterialsPageVO> result = isMaterialsService.getIsMaterialsPage(page, dto);
+        return CommonResult.success(result);
+    }
+
+    /**
+     * 导出物资列表
+     */
+    @ApiOperation("导出物资列表")
+    @Parameter(name = "isMaterials", description = "实体参数")
+    @PreAuthorize("@ss.hasPermi('iscs:materials:export')")
+    @Log(title = "物资", businessType = BusinessType.EXPORT)
+    @PostMapping("/exportIsMaterials")
+    public void exportIsMaterials(HttpServletResponse response, IsMaterials isMaterials)
+    {
+        List<IsMaterials> list = isMaterialsService.selectIsMaterialsList(isMaterials);
+        ExcelUtil<IsMaterials> util = new ExcelUtil<IsMaterials>(IsMaterials.class);
+        util.exportExcel(response, list, "物资数据");
+    }
+
+    /**
+     * 获取物资详细信息
+     */
+    @ApiOperation("获取物资详细信息")
+    @Parameter(name = "materialsId", description = "materialsId")
+    @PreAuthorize("@ss.hasPermi('iscs:materials:query')")
+    @GetMapping(value = "/selectIsMaterialsById")
+    public CommonResult<IsMaterials> selectIsMaterialsById(Long materialsId)
+    {
+        return CommonResult.success(isMaterialsService.selectIsMaterialsByMaterialsId(materialsId));
+    }
+
+    /**
+     * 新增物资
+     */
+    @ApiOperation("新增物资")
+    @PreAuthorize("@ss.hasPermi('iscs:materials:add')")
+    @Log(title = "物资", businessType = BusinessType.INSERT)
+    @PostMapping("/insertIsMaterials")
+    public CommonResult<Boolean> insertIsMaterials(@RequestBody @Parameter(name = "isMaterials", description = "新增数据类,放到body") IsMaterials isMaterials)
+    {
+        return CommonResult.success(isMaterialsService.insertIsMaterials(isMaterials) == 1);
+    }
+
+    /**
+     * 修改物资
+     */
+    @ApiOperation("修改物资")
+    @PreAuthorize("@ss.hasPermi('iscs:materials:edit')")
+    @Log(title = "物资", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateIsMaterials")
+    public CommonResult<Boolean> updateIsMaterials(@RequestBody @Parameter(name = "isMaterials", description = "修改数据类,放到body") IsMaterials isMaterials)
+    {
+        return CommonResult.success(isMaterialsService.updateIsMaterials(isMaterials) == 1);
+    }
+
+    @ApiOperation("借出/归还物资")
+    @PreAuthorize("@ss.hasPermi('iscs:materials:loan')")
+    @Log(title = "借出/归还物资", businessType = BusinessType.UPDATE)
+    @PostMapping("/updateIsMaterialById")
+    public CommonResult<Boolean> updateIsMaterialById(@RequestBody @Parameter(name = "isMaterials", description = "修改数据类,放到body") LoanMaterialDTO dto)
+    {
+        return CommonResult.success(isMaterialsService.updateIsMaterialById(dto));
+    }
+
+    /**
+     * 删除物资
+     */
+    @ApiOperation("删除物资")
+    @PreAuthorize("@ss.hasPermi('iscs:materials:remove')")
+    @Log(title = "物资", businessType = BusinessType.DELETE)
+	@PostMapping("/deleteIsMaterialsByMaterialsIds")
+    public CommonResult<Boolean> deleteIsMaterialsByMaterialsIds(String materialsIds)
+    {
+        return CommonResult.success(isMaterialsService.deleteIsMaterialsByMaterialsIds(materialsIds) != 0);
+    }
+}

+ 2 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/IsMaterials.java

@@ -70,5 +70,7 @@ public class IsMaterials extends BaseBean
     @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
     private String delFlag;
 
+    @ApiModelProperty(value = "状态(0-借出 1-柜中)")
+    private String loanState;
 
 }

+ 46 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/dto/materials/MaterialsPageDTO.java

@@ -0,0 +1,46 @@
+package com.ktg.iscs.domain.dto.materials;
+
+import com.ktg.common.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 物资对象 is_materials
+ *
+ * @author cgj
+ * @date 2024-11-08
+ */
+@Data
+public class MaterialsPageDTO
+{
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "物资编号")
+    @Excel(name = "物资编号")
+    private String materialsCode;
+
+    @ApiModelProperty(value = "物资名称")
+    @Excel(name = "物资名称")
+    private String materialsName;
+
+    @ApiModelProperty(value = "物资类型ID")
+    private Long materialsTypeId;
+
+    @ApiModelProperty(value = "区域ID")
+    @Excel(name = "区域ID")
+    private Long workareaId;
+
+    @ApiModelProperty(value = "物资柜ID")
+    @Excel(name = "物资柜ID")
+    private Long materialsCabinetId;
+
+    @ApiModelProperty(value = "状态(0-借出 1-柜中)")
+    private String loanState;
+
+    @ApiModelProperty(value = "开始时间")
+    private String startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endTime;
+
+}

+ 35 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/materials/LoanMaterialDTO.java

@@ -0,0 +1,35 @@
+package com.ktg.iscs.domain.vo.materials;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 物资对象 is_materials
+ *
+ * @author cgj
+ * @date 2024-11-08
+ */
+@Data
+public class LoanMaterialDTO
+{
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "物资ID")
+    @TableId(type = IdType.AUTO)
+    private Long materialsId;
+
+    @ApiModelProperty(value = "状态(0-借出 1-柜中)")
+    private String loanState;
+
+    @ApiModelProperty(value = "领取人ID")
+    private Long loanUserId;
+
+    @ApiModelProperty(value = "归还人ID")
+    private Long restitutionUserId;
+
+    @ApiModelProperty(value = "归还柜ID")
+    private Long restitutionToId;
+
+}

+ 82 - 0
ktg-iscs/src/main/java/com/ktg/iscs/domain/vo/materials/MaterialsPageVO.java

@@ -0,0 +1,82 @@
+package com.ktg.iscs.domain.vo.materials;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ktg.common.annotation.Excel;
+import com.ktg.common.core.domain.model.BaseBean;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 物资对象 is_materials
+ *
+ * @author cgj
+ * @date 2024-11-08
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class MaterialsPageVO extends BaseBean
+{
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "物资ID")
+    @TableId(type = IdType.AUTO)
+    private Long materialsId;
+
+    @ApiModelProperty(value = "物资编号")
+    @Excel(name = "物资编号")
+    private String materialsCode;
+
+    @ApiModelProperty(value = "物资名称")
+    @Excel(name = "物资名称")
+    private String materialsName;
+
+    @ApiModelProperty(value = "物资类型ID")
+    private Long materialsTypeId;
+
+    @ApiModelProperty(value = "物资类型Name")
+    private String materialsTypeName;
+
+    @ApiModelProperty(value = "区域ID")
+    @Excel(name = "区域ID")
+    private Long workareaId;
+
+    @ApiModelProperty(value = "物资柜ID")
+    @Excel(name = "物资柜ID")
+    private Long materialsCabinetId;
+
+    @ApiModelProperty(value = "物资柜Name")
+    private String cabinetName;
+
+    @ApiModelProperty(value = "可用寿命")
+    @Excel(name = "可用寿命")
+    private String serviceLife;
+
+    @ApiModelProperty(value = "剩余寿命")
+    @Excel(name = "剩余寿命")
+    private String availableLife;
+
+    @ApiModelProperty(value = "可用次数")
+    @Excel(name = "可用次数")
+    private Long serviceTimes;
+
+    @ApiModelProperty(value = "剩余次数")
+    @Excel(name = "剩余次数")
+    private Long availableTimes;
+
+    @ApiModelProperty(value = "启用时间")
+    @JsonFormat(timezone="GMT+8", pattern = "yyyy-MM-dd")
+    @Excel(name = "启用时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date startTime;
+
+    @ApiModelProperty(value = "删除标志(0代表存在 2代表删除)")
+    private String delFlag;
+
+    @ApiModelProperty(value = "状态(0-借出 1-柜中)")
+    private String loanState;
+
+}

+ 6 - 0
ktg-iscs/src/main/java/com/ktg/iscs/mapper/IsMaterialsMapper.java

@@ -1,8 +1,12 @@
 package com.ktg.iscs.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ktg.common.mapper.BaseMapperX;
 import com.ktg.iscs.domain.IsMaterials;
+import com.ktg.iscs.domain.dto.materials.MaterialsPageDTO;
+import com.ktg.iscs.domain.vo.materials.MaterialsPageVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -62,4 +66,6 @@ public interface IsMaterialsMapper extends BaseMapperX<IsMaterials>
      * @return 结果
      */
     int deleteIsMaterialsByMaterialsIds(Long[] materialsIds);
+
+    Page<MaterialsPageVO> getIsMaterialsPage(Page<IsMaterials> page, @Param(value = "dto") MaterialsPageDTO dto);
 }

+ 12 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/IIsMaterialsService.java

@@ -1,7 +1,11 @@
 package com.ktg.iscs.service;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ktg.iscs.domain.IsMaterials;
+import com.ktg.iscs.domain.dto.materials.MaterialsPageDTO;
+import com.ktg.iscs.domain.vo.materials.LoanMaterialDTO;
+import com.ktg.iscs.domain.vo.materials.MaterialsPageVO;
 
 import java.util.List;
 
@@ -60,4 +64,12 @@ public interface IIsMaterialsService extends IService<IsMaterials>
      * @return 结果
      */
     int deleteIsMaterialsByMaterialsId(Long materialsId);
+
+    /**
+     * 分页
+     * @return
+     */
+    Page<MaterialsPageVO> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto);
+
+    Boolean updateIsMaterialById(LoanMaterialDTO dto);
 }

+ 57 - 0
ktg-iscs/src/main/java/com/ktg/iscs/service/impl/IsMaterialsServiceImpl.java

@@ -1,15 +1,25 @@
 package com.ktg.iscs.service.impl;
 
 import cn.hutool.core.lang.Assert;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ktg.common.core.text.Convert;
 import com.ktg.common.utils.DateUtils;
 import com.ktg.iscs.domain.IsMaterials;
+import com.ktg.iscs.domain.IsMaterialsLoan;
+import com.ktg.iscs.domain.dto.materials.MaterialsPageDTO;
+import com.ktg.iscs.domain.vo.materials.LoanMaterialDTO;
+import com.ktg.iscs.domain.vo.materials.MaterialsPageVO;
 import com.ktg.iscs.mapper.IsMaterialsMapper;
+import com.ktg.iscs.service.IIsMaterialsLoanService;
 import com.ktg.iscs.service.IIsMaterialsService;
+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 java.util.Date;
 import java.util.List;
 
 /**
@@ -23,6 +33,8 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
 {
     @Autowired
     private IsMaterialsMapper isMaterialsMapper;
+    @Autowired
+    private IIsMaterialsLoanService iIsMaterialsLoanService;
 
     /**
      * 查询物资
@@ -99,4 +111,49 @@ public class IsMaterialsServiceImpl extends ServiceImpl<IsMaterialsMapper, IsMat
     {
         return isMaterialsMapper.deleteIsMaterialsByMaterialsId(materialsId);
     }
+
+    @Override
+    public Page<MaterialsPageVO> getIsMaterialsPage(Page<IsMaterials> page, MaterialsPageDTO dto) {
+        return isMaterialsMapper.getIsMaterialsPage(page, dto);
+    }
+
+    @Transactional
+    @Override
+    public Boolean updateIsMaterialById(LoanMaterialDTO dto) {
+        // 1.断言判断
+        Assert.notNull(dto.getMaterialsId(), "请告诉我需要借出/归还的物资!");
+        Assert.isFalse(StringUtils.isBlank(dto.getLoanState()), "请告诉我是借出还是归还!");
+        // 2.开始更新物资状态
+        update(Wrappers.<IsMaterials>lambdaUpdate()
+                .eq(IsMaterials::getMaterialsId, dto.getMaterialsId())
+                .set(IsMaterials::getLoanState, dto.getLoanState())
+                .set(IsMaterials::getUpdateTime, new Date()));
+        // 3.物资信息
+        IsMaterials materials = getById(dto.getMaterialsId());
+        Assert.notNull(materials, "该物资不存在!");
+        Date date = new Date();
+        // 4.开始更新借出表信息
+        if ("0".equals(dto.getLoanState())) {
+            // 4.1开始新增记录表
+            IsMaterialsLoan addMaterialsLoan = new IsMaterialsLoan();
+            addMaterialsLoan.setMaterialsId(dto.getMaterialsId());
+            addMaterialsLoan.setLoanUserId(dto.getLoanUserId());
+            addMaterialsLoan.setLoanFromId(materials.getMaterialsCabinetId());
+            addMaterialsLoan.setLoanTime(date);
+            addMaterialsLoan.setReminderTime(date);
+            iIsMaterialsLoanService.save(addMaterialsLoan);
+        } else if ("1".equals(dto.getLoanState())) {
+            // 4.2开始更新记录表
+            IsMaterialsLoan materialsLoan = iIsMaterialsLoanService.getOne(Wrappers.<IsMaterialsLoan>lambdaQuery()
+                    .eq(IsMaterialsLoan::getMaterialsId, dto.getMaterialsId())
+                    .orderByDesc(IsMaterialsLoan::getMaterialsLoanId)
+                    .last("limit 1"));
+            iIsMaterialsLoanService.update(Wrappers.<IsMaterialsLoan>lambdaUpdate()
+                    .eq(IsMaterialsLoan::getMaterialsLoanId, materialsLoan.getMaterialsId())
+                    .set(IsMaterialsLoan::getRestitutionUserId, dto.getRestitutionUserId())
+                    .set(IsMaterialsLoan::getRestitutionToId, dto.getRestitutionToId())
+                    .set(IsMaterialsLoan::getRestitutionTime, date));
+        }
+        return true;
+    }
 }

+ 40 - 1
ktg-iscs/src/main/resources/mapper/IsMaterialsMapper.xml

@@ -22,10 +22,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <result property="createTime"    column="create_time"    />
         <result property="updateTime"    column="update_time"    />
         <result property="updateBy"    column="update_by"    />
+        <result property="loanState"    column="loan_state"    />
     </resultMap>
 
     <sql id="selectIsMaterialsVo">
-        select materials_id, materials_code, materials_name, materials_type_id, workarea_id, materials_cabinet_id, service_life, available_life, service_times, available_times, start_time, remark, del_flag, create_by, create_time, update_time, update_by from is_materials
+        select materials_id, materials_code, materials_name, materials_type_id, workarea_id, materials_cabinet_id, service_life, available_life, service_times, available_times, start_time, remark, del_flag, create_by, create_time, update_time, update_by, loan_state from is_materials
     </sql>
 
     <select id="selectIsMaterialsList" parameterType="IsMaterials" resultMap="IsMaterialsResult">
@@ -68,6 +69,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time,</if>
             <if test="updateTime != null">update_time,</if>
             <if test="updateBy != null">update_by,</if>
+            <if test="loanState != null and loanState != ''">loan_state,</if>
          </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="materialsCode != null and materialsCode != ''">#{materialsCode},</if>
@@ -86,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">#{createTime},</if>
             <if test="updateTime != null">#{updateTime},</if>
             <if test="updateBy != null">#{updateBy},</if>
+            <if test="loanState != null and loanState != ''">loan_state,</if>
          </trim>
     </insert>
 
@@ -108,6 +111,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="createTime != null">create_time = #{createTime},</if>
             <if test="updateTime != null">update_time = #{updateTime},</if>
             <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="loanState != null and loanState != ''">loan_state = #{loanState},</if>
         </trim>
         where materials_id = #{materialsId}
     </update>
@@ -122,4 +126,39 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             #{materialsId}
         </foreach>
     </delete>
+
+    <select id="getIsMaterialsPage" resultType="com.ktg.iscs.domain.vo.materials.MaterialsPageVO">
+        SELECT
+            m.*,
+            t.materials_type_name,
+            c.cabinet_name
+        FROM
+            is_materials m
+        LEFT JOIN is_materials_type t ON t.materials_type_id = m.materials_type_id
+        LEFT JOIN is_materials_cabinet c ON c.cabinet_id = m.materials_cabinet_id
+        <where>
+            <if test="dto.materialsCode != null and dto.materialsCode.trim != ''">
+                and m.materials_code like concat('%',#{dto.materialsCode},'%')
+            </if>
+            <if test="dto.materialsName != null and dto.materialsName.trim != ''">
+                and m.materials_name like concat('%',#{dto.materialsName},'%')
+            </if>
+            <if test="dto.loanState != null and dto.loanState.trim != ''">
+                and m.loan_state = #{dto.loanState}
+            </if>
+            <if test="dto.materialsCabinetId != null">
+                and m.materials_cabinet_id = #{dto.materialsCabinetId}
+            </if>
+            <if test="dto.materialsTypeId != null">
+                and m.materials_type_id = #{dto.materialsTypeId}
+            </if>
+            <if test="dto.startTime != null and dto.startTime.trim != ''">
+                and m.create_time &gt;= #{dto.startTime}
+            </if>
+            <if test="dto.endTime != null and dto.endTime.trim != ''">
+                and m.create_time &lt;= #{dto.endTime}
+            </if>
+        </where>
+        ORDER BY m.materials_id DESC
+    </select>
 </mapper>