chenrui
2025-02-27 894e2c6d4d9a6a1d5b8906e83d82c6e190d28f3a
服务和供应品采购代码迁移
已修改2个文件
已添加26个文件
1178 ■■■■■ 文件已修改
cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesContentsController.java 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesExpendsController.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesStoreController.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/controller/SuppliersDirectoryContentsController.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesExpendDto.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/dto/StoreDto.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/excel/StoreExcel.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesConsumablesMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesExpendsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesStoreMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/mapper/SuppliersDirectoryContentsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesConsumables.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesExpends.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesStore.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/pojo/SuppliersDirectoryContents.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesConsumablesService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesExpendsService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesStoreService.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/SuppliersDirectoryContentsService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesConsumablesServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesExpendsServiceImpl.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesStoreServiceImpl.java 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/java/com/ruoyi/require/service/impl/SuppliersDirectoryContentsServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/annotation/ValueTableShow.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-framework/src/main/java/com/ruoyi/framework/common/PrintChina.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-process/src/main/java/com/ruoyi/process/controller/InspectionOrderController.java
@@ -99,10 +99,8 @@
     * @return
     */
    @ApiOperation(value = "委托单查询成品订单")
    @PostMapping("/getInsOrderOnInspection")
    public Result<IPage<InsOrder>> getInsOrderOnInspection(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        InsOrder insOrder = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), InsOrder.class);
    @GetMapping("/getInsOrderOnInspection")
    public Result<IPage<InsOrder>> getInsOrderOnInspection(Page page ,InsOrder insOrder) throws Exception {
        return Result.success(inspectionOrderService.getInsOrderOnInspection(page, insOrder));
    }
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesContentsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,75 @@
package com.ruoyi.require.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.require.pojo.ProcurementSuppliesContents;
import com.ruoyi.require.service.ProcurementSuppliesContentsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
@Api(tags = "服务和供应品采购公司列表")
@RestController
@RequestMapping("/procurementSuppliesContents")
@AllArgsConstructor
public class ProcurementSuppliesContentsController {
    private ProcurementSuppliesContentsService procurementSuppliesService;
    @ApiOperation(value = "查询目录列表")
    @GetMapping("/directoryListing")
    public Result directoryListing() {
        return Result.success(procurementSuppliesService.directoryListing());
    }
    @ApiOperation(value = "根据id查询")
    @GetMapping("/selectProcurementSuppliesContentById")
    public Result selectProcurementSuppliesContentById(Integer id) {
        return Result.success(procurementSuppliesService.getById(id));
    }
    @ApiOperation(value = "添加子节点")
    @PostMapping("/addProcurementSuppliesContents")
    public Result addProcurementSuppliesContents(@RequestBody ProcurementSuppliesContents procurementSupplies) {
        procurementSupplies.setUpdateTime(LocalDateTime.now());
        procurementSuppliesService.save(procurementSupplies);
        return Result.success(procurementSupplies.getId());
    }
    @ApiOperation(value = "更新子节点")
    @PostMapping("/updateProcurementSuppliesContents")
    public Result updateProcurementSuppliesContents(@RequestBody ProcurementSuppliesContents procurementSupplies) {
        return Result.success(procurementSuppliesService.updateById(procurementSupplies));
    }
    @ApiOperation(value = "删除子节点")
    @DeleteMapping("/deleteProcurementSuppliesContentById")
    public Result deleteProcurementSuppliesContentById(Integer id) {
        List<ProcurementSuppliesContents> list = procurementSuppliesService.list(new LambdaQueryWrapper<ProcurementSuppliesContents>()
                .eq(ProcurementSuppliesContents::getParentId, id));
        if(list.size() > 0) {
            throw new ErrorException("该节点含有子节点,请先删除子节点");
        }
        procurementSuppliesService.removeById(id);
        return Result.success();
    }
    @ApiOperation(value = "查询所有节点")
    @GetMapping("/getNodeNames")
    public Result getNodeNames() {
        return Result.success(procurementSuppliesService.getNodeNames());
    }
    @ApiOperation(value = "获取所有人员")
    @GetMapping("/getUserList")
    public Result getUserList() {
        return Result.success(procurementSuppliesService.getUserList());
    }
}
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesExpendsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package com.ruoyi.require.controller;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.require.dto.ProcurementSuppliesExpendDto;
import com.ruoyi.require.service.ProcurementSuppliesExpendsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
 * <p>
 *  å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 03:47:19
 */
@Api(tags = "服务和供应品采购耗材消耗")
@RestController
@RequestMapping("/procurementSuppliesExpends")
public class ProcurementSuppliesExpendsController {
    @Autowired
    private ProcurementSuppliesExpendsService procurementSuppliesExpendsService;
    @ApiOperation(value = "查询所有记录")
    @GetMapping("/procurementSuppliesExpendlist")
    public Result procurementSuppliesExpendlist(Long procurementSuppliesListId) {
        return Result.success(procurementSuppliesExpendsService.selectAll(procurementSuppliesListId));
    }
    @ApiOperation(value = "新增消耗记录")
    @PostMapping("/addProcurementSuppliesExpends")
    public Result addProcurementSuppliesExpends(@RequestBody ProcurementSuppliesExpendDto dto) throws ServiceException {
        Integer added = procurementSuppliesExpendsService.addExpends(dto);
        if ( added == 0) {
            return Result.fail("当前库存不足");
        }
        return Result.success(added);
    }
    @ApiOperation(value = "删除消耗记录")
    @DeleteMapping("/deleteProcurementSuppliesExpends")
    public Result deleteProcurementSuppliesExpends(Long expendId) throws ServiceException {
        return Result.success(procurementSuppliesExpendsService.deleteExpends(expendId));
    }
}
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesListController.java
@@ -79,14 +79,14 @@
    }
    @ApiOperation(value = "删除耗材")
    @PostMapping("/deleteProcurementSuppliesList")
    public Result deleteProcurementSuppliesList(@RequestBody ProcurementSuppliesListDto dto) {
        return Result.success(listMapper.deleteById(dto.getId()));
    @DeleteMapping("/deleteProcurementSuppliesList")
    public Result deleteProcurementSuppliesList(Long id) {
        return Result.success(listMapper.deleteById(id));
    }
    @ApiOperation(value = "导出耗材列表")
    @PostMapping("/exportProcurementSuppliesList/{parentId}")
    public void exportProcurementSuppliesList( @PathVariable Integer parentId ,HttpServletResponse response) throws Exception {
    @GetMapping("/exportProcurementSuppliesList")
    public void exportProcurementSuppliesList(Integer parentId ,HttpServletResponse response) throws Exception {
        procurementSuppliesListService.exportProcurementSuppliesList(parentId,response);
    }
cnas-require/src/main/java/com/ruoyi/require/controller/ProcurementSuppliesStoreController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,80 @@
package com.ruoyi.require.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.utils.JackSonUtil;
import com.ruoyi.require.dto.StoreDto;
import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
import com.ruoyi.require.pojo.ProcurementSuppliesStore;
import com.ruoyi.require.service.ProcurementSuppliesConsumablesService;
import com.ruoyi.require.service.ProcurementSuppliesStoreService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Api(tags = "服务和供应品采购耗材入库")
@RestController
@RequestMapping("/procurementSuppliesStore")
@AllArgsConstructor
public class ProcurementSuppliesStoreController {
    private ProcurementSuppliesStoreService storeService;
    private ProcurementSuppliesConsumablesService consumablesService;
    @ApiOperation(value = "耗材入库分页查询")
    @GetMapping("/storeList")
    public Result storeList(Page page,StoreDto storeDto) throws Exception {
        return Result.success(storeService.selectStoreList(page, storeDto));
    }
    @ApiOperation(value = "添加耗材入库列表")
    @PostMapping("/addStore")
    public Result addStore(@RequestBody Map<String,Object> map) {
        storeService.addStore(map);
        return Result.success();
    }
    @ApiOperation(value = "删除耗材入库")
    @DeleteMapping("/deleteStore")
    public Result deleteStore(@RequestParam("id") Integer id,@RequestParam("consumablesId") Integer consumablesId) {
        storeService.deleteStore(id,consumablesId);
        return Result.success();
    }
    @ApiOperation(value = "更新耗材入库")
        @PostMapping("/updateStore")
    public Result updateStore(@RequestBody Map<String,Object> map) {
        storeService.updateStore(map);
        return Result.success();
    }
    @ApiOperation(value = "根据id查询耗材入库")
    @GetMapping("/selectStoreById")
    public Result selectStore(Integer id) {
        HashMap<String, Object> map = new HashMap<>();
        ProcurementSuppliesStore procurementSuppliesStore = storeService.getById(id);
        List<ProcurementSuppliesConsumables> list = consumablesService.list(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
                .eq(ProcurementSuppliesConsumables::getStoreId, id));
        map.put("store", procurementSuppliesStore);
        map.put("consumables", list);
        return Result.success(map);
    }
    @ApiOperation("导出Excel")
    @GetMapping("/exportExcel")
    public void exportExcel(Integer parentId, HttpServletResponse response) throws IOException {
        storeService.exportExcel(parentId, response);
    }
}
cnas-require/src/main/java/com/ruoyi/require/controller/SuppliersDirectoryContentsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package com.ruoyi.require.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ruoyi.common.core.domain.Result;
import com.ruoyi.framework.exception.ErrorException;
import com.ruoyi.require.pojo.SuppliersDirectoryContents;
import com.ruoyi.require.service.SuppliersDirectoryContentsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
/**
 * <p>
 * æœåŠ¡å’Œä¾›åº”å“é‡‡è´­ç›®å½• å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-12-17 06:14:51
 */
@Api(tags = "供应商管理树")
@RestController
@RequestMapping("/suppliersDirectoryContents")
public class SuppliersDirectoryContentsController {
    @Autowired
    private SuppliersDirectoryContentsService suppliersDirectoryContentsService;
    @ApiOperation(value = "查询目录列表")
    @GetMapping("/suppliersDirectoryContentsListing")
    public Result suppliersDirectoryContentsListing() {
        return Result.success(suppliersDirectoryContentsService.directoryListing());
    }
    @ApiOperation(value = "根据id查询")
    @GetMapping("/selectSuppliersDirectoryContentsById")
    public Result selectSuppliersDirectoryContentsById(Integer id) {
        return Result.success(suppliersDirectoryContentsService.getById(id));
    }
    @ApiOperation(value = "添加子节点")
    @PostMapping("/addSuppliersDirectoryContents")
    public Result addSuppliersDirectoryContents(@RequestBody SuppliersDirectoryContents suppliersDirectoryContents ) {
        suppliersDirectoryContents.setUpdateTime(LocalDateTime.now());
        suppliersDirectoryContentsService.save(suppliersDirectoryContents);
        return Result.success(suppliersDirectoryContents.getId());
    }
    @ApiOperation(value = "更新子节点")
    @PostMapping("/updateSuppliersDirectoryContents")
    public Result updateSuppliersDirectoryContents(@RequestBody SuppliersDirectoryContents suppliersDirectoryContents) {
        return Result.success(suppliersDirectoryContentsService.updateById(suppliersDirectoryContents));
    }
    @ApiOperation(value = "删除子节点")
    @DeleteMapping("/deleteSuppliersDirectoryContentsById")
    public Result deleteSuppliersDirectoryContentsById(Integer id) {
        List<SuppliersDirectoryContents> list = suppliersDirectoryContentsService.list(new LambdaQueryWrapper<SuppliersDirectoryContents>()
                .eq(SuppliersDirectoryContents::getParentId, id));
        if(list.size() > 0) {
            throw new ErrorException("该节点含有子节点,请先删除子节点");
        }
        suppliersDirectoryContentsService.removeById(id);
        return Result.success();
    }
    @ApiOperation(value = "查询所有节点")
    @GetMapping("/getSuppliersDirectoryContentsNodeNames")
    public Result getSuppliersDirectoryContentsNodeNames() {
        return Result.success(suppliersDirectoryContentsService.getSuppliersDirectoryContentsNodeNames());
    }
}
cnas-require/src/main/java/com/ruoyi/require/dto/ProcurementSuppliesExpendDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.ruoyi.require.dto;
import com.ruoyi.require.pojo.ProcurementSuppliesExpends;
import lombok.Data;
@Data
public class ProcurementSuppliesExpendDto extends ProcurementSuppliesExpends {
    private String listName; // é¡¹ç›®è€—材名称
    private String enterUserName; // å½•入人名称
    private String updateUserName; // æ›´æ–°äººåç§°
}
cnas-require/src/main/java/com/ruoyi/require/dto/StoreDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.require.dto;
import com.ruoyi.require.pojo.ProcurementSuppliesStore;
import lombok.Data;
@Data
public class StoreDto extends ProcurementSuppliesStore {
    private String consumablesName;
    private Integer storeNumber;
    private Double totalPrice;
    private String registrantName;
    private String storageUserName;
    private Integer consumablesId;
}
cnas-require/src/main/java/com/ruoyi/require/excel/StoreExcel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.ruoyi.require.excel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.time.LocalDate;
@Data
public class StoreExcel {
    @ExcelProperty("入库单号")
    private String oddNumbers;
    @ExcelProperty("耗材名称")
    private String consumablesName;
    @ExcelProperty("入库数量")
    private Integer storeNumber;
    @ExcelProperty("入库总价")
    private Double totalPrice;
    @ExcelProperty("入库人")
    private String storageUserName;
    @ExcelProperty("入库日期")
    private LocalDate storageTime;
    @ExcelProperty("说明")
    private String remark;
    @ExcelProperty("登记人")
    private String registrantName;
    @ExcelProperty("登记日期")
    private LocalDate registrantTime;
}
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesConsumablesMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.ruoyi.require.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ProcurementSuppliesConsumablesMapper extends BaseMapper<ProcurementSuppliesConsumables> {
}
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesExpendsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.require.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.require.pojo.ProcurementSuppliesExpends;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 03:47:19
 */
public interface ProcurementSuppliesExpendsMapper extends BaseMapper<ProcurementSuppliesExpends> {
}
cnas-require/src/main/java/com/ruoyi/require/mapper/ProcurementSuppliesStoreMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.ruoyi.require.mapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.require.dto.StoreDto;
import com.ruoyi.require.excel.StoreExcel;
import com.ruoyi.require.pojo.ProcurementSuppliesStore;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface ProcurementSuppliesStoreMapper extends BaseMapper<ProcurementSuppliesStore> {
    IPage<StoreDto> selectStoreList(Page page, @Param("ew") QueryWrapper<StoreDto> ew);
    /**
     *       å’Œæ ‘关联的条件,,,目前没有关联关系    WHERE s.contents_id = #{contentsId}
     * @param contentsId
     * @return
     */
    List<StoreExcel> exportExcel(Integer contentsId);
}
cnas-require/src/main/java/com/ruoyi/require/mapper/SuppliersDirectoryContentsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.ruoyi.require.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.require.pojo.SuppliersDirectoryContents;
/**
 * <p>
 * æœåŠ¡å’Œä¾›åº”å“é‡‡è´­ç›®å½• Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-12-17 06:14:51
 */
public interface SuppliersDirectoryContentsMapper extends BaseMapper<SuppliersDirectoryContents> {
}
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesConsumables.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.ruoyi.require.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@TableName("procurement_supplies_consumables")
@ApiModel("耗材采购明细表")
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProcurementSuppliesConsumables {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("耗材主表id")
    private Integer storeId;
    @ApiModelProperty("耗材名称")
    private String consumablesName;
    @ApiModelProperty("单价")
    private Double unitPrice;
    @ApiModelProperty("入库数量")
    private Integer storeNumber;
    @ApiModelProperty("总价")
    private Double totalPrice;
    @ApiModelProperty("货号")
    private String itemNumber;
    @ApiModelProperty("类别")
    private String type;
    @ApiModelProperty("规格")
    private String specifications;
    @ApiModelProperty("参考供应商")
    private String supplier;
    @ApiModelProperty("计量单位")
    private String unit;
}
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesExpends.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.ruoyi.require.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 java.io.Serializable;
import java.time.LocalDateTime;
/**
 * <p>
 *
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 03:47:19
 */
@Getter
@Setter
@TableName("procurement_supplies_expends")
@ApiModel(value = "ProcurementSuppliesExpends对象", description = "")
public class ProcurementSuppliesExpends implements Serializable {
    @ApiModelProperty("主表Id")
    @TableId(value = "expend_id", type = IdType.AUTO)
    private Long expendId;
    @ApiModelProperty("耗材Id")
    private Long listId;
    @ApiModelProperty("消耗数量")
    private Integer amount;
    @ApiModelProperty("录入人id")
    private Integer enterUserId;
    @ApiModelProperty("更新人id")
    private Integer updateUserId;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @ApiModelProperty("创建时间")
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
}
cnas-require/src/main/java/com/ruoyi/require/pojo/ProcurementSuppliesStore.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.ruoyi.require.pojo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
@Data
@TableName("procurement_supplies_store")
@ApiModel("耗材入库表")
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProcurementSuppliesStore implements Serializable {
    @TableId(type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("目录id")
    private Integer contentsId;
    @ApiModelProperty("入库单号")
    private String oddNumbers;
    @ApiModelProperty("入库库存")
    private String inventory;
    @ApiModelProperty("入库总金额")
    private Double totalAmount;
    @ApiModelProperty("入库人")
    private Integer storageUser;
    @ApiModelProperty("入库时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate storageTime;
    @ApiModelProperty("入库说明")
    private String remark;
    @ApiModelProperty("登记人")
    private Integer registrant;
    @ApiModelProperty("登记时间")
    private LocalDate registrantTime;
}
cnas-require/src/main/java/com/ruoyi/require/pojo/SuppliersDirectoryContents.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.ruoyi.require.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;
/**
 * <p>
 * æœåŠ¡å’Œä¾›åº”å“é‡‡è´­ç›®å½•
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-12-17 06:14:51
 */
@Getter
@Setter
@TableName("suppliers_directory_contents")
@ApiModel(value = "SuppliersDirectoryContents对象", description = "服务和供应品采购目录")
public class SuppliersDirectoryContents implements Serializable {
    private static final long serialVersionUID = 1L;
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @ApiModelProperty("节点名称")
    private String nodeName;
    @ApiModelProperty("代号")
    private String code;
    @ApiModelProperty("更新人")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @ApiModelProperty("父节点")
    private Integer parentId;
    @TableField(exist = false)
    private List<SuppliersDirectoryContents> children;
}
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesConsumablesService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.ruoyi.require.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
public interface ProcurementSuppliesConsumablesService extends IService<ProcurementSuppliesConsumables> {
}
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesExpendsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.require.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.require.dto.ProcurementSuppliesExpendDto;
import com.ruoyi.require.pojo.ProcurementSuppliesExpends;
import java.util.List;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 03:47:19
 */
public interface ProcurementSuppliesExpendsService extends IService<ProcurementSuppliesExpends> {
    public List<ProcurementSuppliesExpendDto> selectAll(Long procurementSuppliesListId);
    public Integer addExpends(ProcurementSuppliesExpendDto expendDto) throws ServiceException;
    public Integer deleteExpends(Long id);
}
cnas-require/src/main/java/com/ruoyi/require/service/ProcurementSuppliesStoreService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
package com.ruoyi.require.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.require.dto.StoreDto;
import com.ruoyi.require.pojo.ProcurementSuppliesStore;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Map;
public interface ProcurementSuppliesStoreService extends IService<ProcurementSuppliesStore> {
    void addStore(Map<String,Object> map);
    void updateStore(Map<String,Object> map);
    void deleteStore(Integer id, Integer consumablesId);
    IPage<StoreDto> selectStoreList(Page page, StoreDto storeDto);
    void exportExcel(Integer contentsId, HttpServletResponse response) throws IOException;
}
cnas-require/src/main/java/com/ruoyi/require/service/SuppliersDirectoryContentsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.ruoyi.require.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.require.pojo.SuppliersDirectoryContents;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * æœåŠ¡å’Œä¾›åº”å“é‡‡è´­ç›®å½• æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-12-17 06:14:51
 */
public interface SuppliersDirectoryContentsService extends IService<SuppliersDirectoryContents> {
    ArrayList<SuppliersDirectoryContents> directoryListing();
    List<Map<String, Object>> getSuppliersDirectoryContentsNodeNames();
}
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesConsumablesServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.ruoyi.require.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.require.mapper.ProcurementSuppliesConsumablesMapper;
import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
import com.ruoyi.require.service.ProcurementSuppliesConsumablesService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
public class ProcurementSuppliesConsumablesServiceImpl extends ServiceImpl<ProcurementSuppliesConsumablesMapper, ProcurementSuppliesConsumables>
        implements ProcurementSuppliesConsumablesService {
}
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesExpendsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,90 @@
package com.ruoyi.require.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.User;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.require.dto.ProcurementSuppliesExpendDto;
import com.ruoyi.require.mapper.ProcurementSuppliesExpendsMapper;
import com.ruoyi.require.mapper.ProcurementSuppliesListMapper;
import com.ruoyi.require.pojo.ProcurementSuppliesExpends;
import com.ruoyi.require.pojo.ProcurementSuppliesList;
import com.ruoyi.require.service.ProcurementSuppliesExpendsService;
import com.ruoyi.system.mapper.UserMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
 * <p>
 *  æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 03:47:19
 */
@Service
public class ProcurementSuppliesExpendsServiceImpl extends ServiceImpl<ProcurementSuppliesExpendsMapper, ProcurementSuppliesExpends> implements ProcurementSuppliesExpendsService {
    @Autowired
    private ProcurementSuppliesExpendsMapper expendsMapper;
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private ProcurementSuppliesListMapper listMapper;
    @Override
    public List<ProcurementSuppliesExpendDto> selectAll(Long procurementSuppliesListId) {
        List<ProcurementSuppliesExpendDto> res = new ArrayList<>();
        List<ProcurementSuppliesExpends> list =  expendsMapper.selectList(new QueryWrapper<ProcurementSuppliesExpends>().lambda().eq(ProcurementSuppliesExpends::getListId, procurementSuppliesListId));
        for (ProcurementSuppliesExpends procurementSuppliesExpend : list) {
            ProcurementSuppliesExpendDto dto = new ProcurementSuppliesExpendDto();
            BeanUtils.copyProperties(procurementSuppliesExpend, dto);
            User enterUser = userMapper.selectById(procurementSuppliesExpend.getEnterUserId());
            User updateUser = userMapper.selectById(procurementSuppliesExpend.getUpdateUserId());
            dto.setEnterUserName(enterUser.getName());
            dto.setUpdateUserName(updateUser.getName());
            res.add(dto);
        }
        return res;
    }
    @Override
    @Transactional
    public Integer addExpends(ProcurementSuppliesExpendDto expendDto) throws ServiceException {
        ProcurementSuppliesList list = listMapper.selectProcurementSuppliesListForUpdate(expendDto.getListId());
        ProcurementSuppliesExpends expends = new ProcurementSuppliesExpends();
        BeanUtils.copyProperties(expendDto, expends);
        expends.setEnterUserId(SecurityUtils.getUserId().intValue());
        expends.setUpdateUserId(SecurityUtils.getUserId().intValue());
        if (list.getCurrentAmount() < expendDto.getAmount()) {
            return 0;
        }
        list.setCurrentAmount(list.getCurrentAmount() - expendDto.getAmount());
        listMapper.updateById(list);
        return expendsMapper.insert(expends);
    }
    @Override
    @Transactional
    public Integer deleteExpends(Long id) {
        ProcurementSuppliesExpends expend = expendsMapper.selectById(id);
        ProcurementSuppliesList list = listMapper.selectProcurementSuppliesListForUpdate(expend.getListId());
        list.setCurrentAmount(list.getCurrentAmount() + expend.getAmount());
        list.setUpdateUser(SecurityUtils.getUserId().intValue());
        listMapper.updateById(list);
        return expendsMapper.deleteById(id);
    }
}
cnas-require/src/main/java/com/ruoyi/require/service/impl/ProcurementSuppliesStoreServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,125 @@
package com.ruoyi.require.service.impl;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.utils.QueryWrappers;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.framework.common.PrintChina;
import com.ruoyi.require.dto.StoreDto;
import com.ruoyi.require.excel.StoreExcel;
import com.ruoyi.require.mapper.ProcurementSuppliesConsumablesMapper;
import com.ruoyi.require.mapper.ProcurementSuppliesStoreMapper;
import com.ruoyi.require.pojo.ProcurementSuppliesConsumables;
import com.ruoyi.require.pojo.ProcurementSuppliesStore;
import com.ruoyi.require.service.ProcurementSuppliesStoreService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@Service
@AllArgsConstructor
public class ProcurementSuppliesStoreServiceImpl extends ServiceImpl<ProcurementSuppliesStoreMapper, ProcurementSuppliesStore>
        implements ProcurementSuppliesStoreService {
    private ProcurementSuppliesConsumablesMapper consumablesMapper;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void addStore(Map<String,Object> map) {
        ProcurementSuppliesStore procurementSuppliesStore = JSONObject.parseObject(JSONObject.toJSONString(map.get("store")), ProcurementSuppliesStore.class);
        procurementSuppliesStore.setRegistrant(SecurityUtils.getUserId().intValue());
        procurementSuppliesStore.setRegistrantTime(LocalDate.now());
        baseMapper.insert(procurementSuppliesStore);
        List<ProcurementSuppliesConsumables> list = JSON.parseArray(JSONObject.toJSONString(map.get("consumables")), ProcurementSuppliesConsumables.class);
        // ç”Ÿæˆè´§å·
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMdd");
        if(!Objects.isNull(list) && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                list.get(i).setStoreId(procurementSuppliesStore.getId());
                String itemNumber ="HCRK" + LocalDate.now().format(dateTimeFormatter) +  String.format("%03d", i);
                list.get(i).setItemNumber(itemNumber);
                consumablesMapper.insert(list.get(i));
            }
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateStore(Map<String,Object> map) {
        ProcurementSuppliesStore procurementSuppliesStore = JSONObject.parseObject(JSONObject.toJSONString(map.get("store")), ProcurementSuppliesStore.class);
        baseMapper.updateById(procurementSuppliesStore);
        List<ProcurementSuppliesConsumables> list = JSON.parseArray(JSONObject.toJSONString(map.get("consumables")), ProcurementSuppliesConsumables.class);
        consumablesMapper.delete(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
                .eq(ProcurementSuppliesConsumables::getStoreId, procurementSuppliesStore.getId()));
        if(!Objects.isNull(list) && list.size() > 0) {
            for (int i = 0; i < list.size(); i++) {
                list.get(i).setId(null);
                list.get(i).setStoreId(procurementSuppliesStore.getId());
                consumablesMapper.insert(list.get(i));
            }
        }
    }
    @Override
    public void deleteStore(Integer id, Integer consumablesId) {
        consumablesMapper.deleteById(consumablesId);
        List<ProcurementSuppliesConsumables> consumables = consumablesMapper.selectList(new LambdaQueryWrapper<ProcurementSuppliesConsumables>()
                .eq(ProcurementSuppliesConsumables::getStoreId, id));
        // åˆ¤æ–­æ˜¯å¦è¿˜æœ‰è€—材 æ²¡æœ‰å°±å°†ä¸»è¡¨Store删除
        if(CollectionUtils.isEmpty(consumables)) {
            baseMapper.deleteById(id);
        }
    }
    @Override
    public  IPage<StoreDto> selectStoreList(Page page, StoreDto storeDto) {
        IPage<StoreDto> iPage = baseMapper.selectStoreList(page, QueryWrappers.queryWrappers(storeDto));
        return iPage;
    }
    /**
     * å¯¼å‡ºexcel
     * @param contentsId
     * @param response
     */
    @Override
    public void exportExcel(Integer contentsId, HttpServletResponse response) throws IOException {
        List<StoreExcel> storeExcels = baseMapper.exportExcel(contentsId);
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        // è¿™é‡ŒURLEncoder.encode可以防止中文乱码 å½“ç„¶å’Œeasyexcel没有关系
        String fileName = null;
        try {
            fileName = URLEncoder.encode("耗材入库", "UTF-8");
        } catch (UnsupportedEncodingException e) {
            throw new RuntimeException(e);
        }
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
        WriteSheet writeSheet = EasyExcel.writerSheet(0, "耗材入库").head(StoreExcel.class).build();
        excelWriter.write(storeExcels, writeSheet);
        excelWriter.finish();
    }
}
cnas-require/src/main/java/com/ruoyi/require/service/impl/SuppliersDirectoryContentsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package com.ruoyi.require.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.require.mapper.SuppliersDirectoryContentsMapper;
import com.ruoyi.require.pojo.SuppliersDirectoryContents;
import com.ruoyi.require.service.SuppliersDirectoryContentsService;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * <p>
 * æœåŠ¡å’Œä¾›åº”å“é‡‡è´­ç›®å½• æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-12-17 06:14:51
 */
@Service
public class SuppliersDirectoryContentsServiceImpl extends ServiceImpl<SuppliersDirectoryContentsMapper, SuppliersDirectoryContents> implements SuppliersDirectoryContentsService {
    @Override
    public ArrayList<SuppliersDirectoryContents> directoryListing() {
        ArrayList<SuppliersDirectoryContents> list = new ArrayList<>();
        // æŸ¥å‡ºä¸€çº§ç›®å½•
        List<SuppliersDirectoryContents> firstLevel = baseMapper.selectList(new LambdaQueryWrapper<SuppliersDirectoryContents>()
                .isNull(SuppliersDirectoryContents::getParentId));
        // æŸ¥å‡ºå«æœ‰çˆ¶èŠ‚ç‚¹çš„ å¹¶é€šè¿‡çˆ¶èŠ‚ç‚¹åˆ†ç»„
        List<SuppliersDirectoryContents> seconds = baseMapper.selectList(new LambdaQueryWrapper<SuppliersDirectoryContents>()
                .isNotNull(SuppliersDirectoryContents::getParentId));
        if(firstLevel.size() > 0){
            Map<Integer, List<SuppliersDirectoryContents>> collect = seconds.stream()
                    .collect(Collectors.groupingBy(SuppliersDirectoryContents::getParentId));
            // æ ¹æ®åˆ†ç»„çš„key èµ‹å€¼å¯¹åº”çš„children
            for (int i = 0; i < firstLevel.size(); i++) {
                recursion(firstLevel.get(i),collect);
                list.add(firstLevel.get(i));
            }
        }
        return list;
    }
    @Override
    public List<Map<String, Object>> getSuppliersDirectoryContentsNodeNames() {
        List<SuppliersDirectoryContents> procurementSuppliesContents = baseMapper.selectList(null);
        List<Map<String, Object>> collect = new ArrayList<>();
        if(procurementSuppliesContents.size() > 0) {
            collect = procurementSuppliesContents.stream().map(item -> {
                HashMap<String, Object> map = new HashMap<>();
                map.put("id", item.getId());
                map.put("nodeName", item.getNodeName());
                return map;
            }).collect(Collectors.toList());
        }
        return collect;
    }
    public SuppliersDirectoryContents recursion(SuppliersDirectoryContents firstLevel, Map<Integer, List<SuppliersDirectoryContents>> collect) {
        // å°†çˆ¶èŠ‚ç‚¹çš„children赋值
        if(collect.containsKey(firstLevel.getId())) {
            List<SuppliersDirectoryContents> procurementSupplies = collect.get(firstLevel.getId());
            firstLevel.setChildren(procurementSupplies);
            for (int i = 0; i < procurementSupplies.size(); i++) {
                recursion(procurementSupplies.get(i),collect);
            }
        }
        return firstLevel;
    }
}
cnas-require/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
<?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.require.mapper.ProcurementSuppliesStoreMapper">
    <resultMap id="map" type="com.ruoyi.require.dto.StoreDto">
        <id column="id" property="id"/>
        <result column="consumables_id" property="consumablesId"/>
        <result column="odd_numbers" property="oddNumbers"/>
        <result column="consumables_name" property="consumablesName"/>
        <result column="store_number" property="storeNumber"/>
        <result column="total_price" property="totalPrice"/>
        <result column="storage_user" property="storageUser"/>
        <result column="storage_time" property="storageTime"/>
        <result column="remark" property="remark"/>
        <result column="registrant" property="registrant"/>
        <result column="registrant_time" property="registrantTime"/>
        <result column="storageUserName" property="storageUserName"/>
        <result column="registrantName" property="registrantName"/>
    </resultMap>
    <resultMap id="storeExcelMap" type="com.ruoyi.require.excel.StoreExcel">
        <result column="odd_numbers" property="oddNumbers"/>
        <result column="consumables_name" property="consumablesName"/>
        <result column="store_number" property="storeNumber"/>
        <result column="total_price" property="totalPrice"/>
        <result column="storage_time" property="storageTime"/>
        <result column="remark" property="remark"/>
        <result column="registrant_time" property="registrantTime"/>
        <result column="storageUserName" property="storageUserName"/>
        <result column="registrantName" property="registrantName"/>
    </resultMap>
    <select id="selectStoreList" resultMap="map">
select * from (
        SELECT
        s.id,
        c.id AS consumables_id,
        s.contents_id,
        s.odd_numbers,
        c.consumables_name,
        c.store_number,
        c.total_price,
        s.storage_user,
        s.storage_time,
        s.remark,
        s.registrant,
        s.registrant_time,
        u.name AS storageUserName,
        u1.name AS registrantName
        FROM
        `procurement_supplies_store` s
        LEFT JOIN procurement_supplies_consumables c ON s.id = c.store_id
        LEFT JOIN user u ON u.id = s.storage_user
        LEFT JOIN user u1 ON u1.id = s.registrant
        )a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="exportExcel" resultMap="storeExcelMap">
        SELECT * FROM (
                          SELECT
                              s.odd_numbers,
                              c.consumables_name,
                              c.store_number,
                              c.total_price,
                              s.storage_time,
                              s.remark,
                              s.registrant_time,
                              u.name AS storageUserName,
                              u1.name AS registrantName
                          FROM
                              `procurement_supplies_store` s
                                  LEFT JOIN procurement_supplies_consumables c ON s.id = c.store_id
                                  LEFT JOIN user u ON u.id = s.storage_user
                                  LEFT JOIN user u1 ON u1.id = s.registrant
                      ) a
    </select>
</mapper>
ruoyi-framework/src/main/java/com/ruoyi/framework/annotation/ValueTableShow.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
package com.ruoyi.framework.annotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface ValueTableShow {
    int value() default 1;
    String name() default "";
    int width() default 0;
}
ruoyi-framework/src/main/java/com/ruoyi/framework/common/PrintChina.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,60 @@
package com.ruoyi.framework.common;
import com.ruoyi.framework.annotation.ValueTableShow;
import io.swagger.annotations.ApiModelProperty;
import java.lang.reflect.Field;
import java.util.*;
/*李林
* é€šè¿‡æ³¨è§£å¿«é€Ÿç”Ÿæˆtable表头*/
public class PrintChina {
    public static <T> List<Map<String, Object>> printChina(Class<T> tClass) {
        //将实体类的属性和注释转换成参数
        List<Field> fieldList = new ArrayList<>();
        while (tClass != null){
            fieldList.addAll(new ArrayList<>(Arrays.asList(tClass.getDeclaredFields())));
            tClass = (Class<T>) tClass.getSuperclass();
        }
        Field[] fields = new Field[fieldList.size()];
        fieldList.toArray(fields);
        ArrayList<Map<String, Object>> list = new ArrayList<>();
        for (Field field : fields) {
            Map<String, Object> soundVo = new HashMap<>();
            boolean bool = field.isAnnotationPresent(ApiModelProperty.class);
            boolean bool2 = field.isAnnotationPresent(ValueTableShow.class);
            if (bool2) {
                int order = field.getAnnotation(ValueTableShow.class).value();
                String value = field.getAnnotation(ValueTableShow.class).name();
                int width = field.getAnnotation(ValueTableShow.class).width();
                if (bool){
                    value = value.isEmpty() ? field.getAnnotation(ApiModelProperty.class).value() : value;
                }
                soundVo.put("label", field.getName());
                soundVo.put("value", value);
                if(width>0){
                    soundVo.put("width", width);
                }
                soundVo.put("order", order + "");
                if(list.isEmpty()){
                    list.add(soundVo);
                }else{
                    boolean isAdd = false;
                    for (int i = 0; i < list.size(); i++) {
                        Map<String, Object> map = list.get(i);
                        if(order < Integer.parseInt(map.get("order").toString())){
                            list.add(i, soundVo);
                            isAdd = true;
                            break;
                        }
                    }
                    if (!isAdd) list.add(soundVo);
                }
            }
        }
        return list;
    }
}