zss
2024-12-27 ebede85283906f52dd45d0755d22140538038ac3
完成6.6供应商模块
已修改2个文件
已添加50个文件
88645 ■■■■■ 文件已修改
cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeCalibrationScheduleController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/controller/ProcurementSuppliesContentsController.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/controller/ProcurementSuppliesExpendsController.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/controller/ProcurementSuppliesListController.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/controller/ProcurementSuppliesStoreController.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/controller/SupplierManagementController.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/controller/SuppliersDirectoryContentsController.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/dto/ProcurementSuppliesExpendDto.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/dto/ProcurementSuppliesListDto.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/dto/ProcurementSuppliesListEDto.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/dto/StoreDto.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/dto/SupplierManagementDto.java 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/excel/StoreExcel.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesConsumablesMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesContentsMapper.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesExpendsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesListMapper.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesStoreMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/mapper/SupplierManagementMapper.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/mapper/SuppliersDirectoryContentsMapper.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesConsumables.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesContents.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesExpends.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesList.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesStore.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/pojo/SupplierManagement.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/pojo/SuppliersDirectoryContents.java 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesConsumablesService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesContentsService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesExpendsService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesListService.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesStoreService.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/SupplierManagementService.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/SuppliersDirectoryContentsService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesConsumablesServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesContentsServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesExpendsServiceImpl.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesListServiceImpl.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesStoreServiceImpl.java 147 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/impl/SupplierManagementServiceImpl.java 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/java/com/yuanchu/mom/service/impl/SuppliersDirectoryContentsServiceImpl.java 76 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/mapper/ProcurementSuppliesExpendsMapper.xml 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/mapper/ProcurementSuppliesListMapper.xml 71 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/mapper/ProcurementSuppliesStoreMapper.xml 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/mapper/SupplierManagementMapper.xml 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/mapper/SuppliersDirectoryContentsMapper.xml 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/static/js/device_qr_show.js 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/static/js/echarts.js 85796 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/templates/device_qr_show.html 173 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/templates/sample_qr_show.html 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-server/src/main/resources/templates/word_qr_show.html 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
system-run/src/main/resources/application-dev.yml 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cnas-resource-require/src/main/java/com/yuanchu/mom/controller/FeCalibrationScheduleController.java
@@ -79,8 +79,8 @@
                .doWrite(studentList);
    }
    @ValueClassify(value = "量值溯源计划导入")
    @ApiOperation(value = "importOfValueTraceabilityPlan")
    @ValueClassify(value = "量值溯源计划")
    @ApiOperation(value = "量值溯源计划导入")
    @PostMapping("/importOfValueTraceabilityPlan")
    public void importOfValueTraceabilityPlan(MultipartFile file) throws IOException {
        if (file.isEmpty()) {
cnas-server/src/main/java/com/yuanchu/mom/controller/ProcurementSuppliesContentsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.pojo.ProcurementSuppliesContents;
import com.yuanchu.mom.service.ProcurementSuppliesContentsService;
import com.yuanchu.mom.vo.Result;
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")
//@CustomClazzName(name = "资源要求",index = 8)
@AllArgsConstructor
public class ProcurementSuppliesContentsController {
    private ProcurementSuppliesContentsService procurementSuppliesService;
    @ValueAuth
    @ApiOperation(value = "查询目录列表")
    @GetMapping("/directoryListing")
    public Result directoryListing() {
        return Result.success(procurementSuppliesService.directoryListing());
    }
    @ValueAuth
    @ApiOperation(value = "根据id查询")
    @GetMapping("/selectProcurementSuppliesContentById")
    public Result selectProcurementSuppliesContentById(Integer id) {
        return Result.success(procurementSuppliesService.getById(id));
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "添加子节点")
    @PostMapping("/addProcurementSuppliesContents")
    public Result addProcurementSuppliesContents(@RequestBody ProcurementSuppliesContents procurementSupplies) {
        procurementSupplies.setUpdateTime(LocalDateTime.now());
        procurementSuppliesService.save(procurementSupplies);
        return Result.success(procurementSupplies.getId());
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "更新子节点")
    @PostMapping("/updateProcurementSuppliesContents")
    public Result updateProcurementSuppliesContents(@RequestBody ProcurementSuppliesContents procurementSupplies) {
        return Result.success(procurementSuppliesService.updateById(procurementSupplies));
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "删除子节点")
    @GetMapping("/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();
    }
    @ValueAuth
    @ApiOperation(value = "查询所有节点")
    @GetMapping("/getNodeNames")
    public Result getNodeNames() {
        return Result.success(procurementSuppliesService.getNodeNames());
    }
    @ValueAuth
    @ApiOperation(value = "获取所有人员")
    @GetMapping("/getUserList")
    public Result getUserList() {
        return Result.success(procurementSuppliesService.getUserList());
    }
}
cnas-server/src/main/java/com/yuanchu/mom/controller/ProcurementSuppliesExpendsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,55 @@
package com.yuanchu.mom.controller;
import com.google.protobuf.ServiceException;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.dto.ProcurementSuppliesExpendDto;
import com.yuanchu.mom.service.ProcurementSuppliesExpendsService;
import com.yuanchu.mom.vo.Result;
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")
//@CustomClazzName(name = "资源要求",index = 8)
public class ProcurementSuppliesExpendsController {
    @Autowired
    private ProcurementSuppliesExpendsService procurementSuppliesExpendsService;
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "查询所有记录")
    @GetMapping("/procurementSuppliesExpendlist/{procurementSuppliesListId}")
    public Result procurementSuppliesExpendlist(@PathVariable Long procurementSuppliesListId) {
        return Result.success(procurementSuppliesExpendsService.selectAll(procurementSuppliesListId));
    }
    @ValueClassify("服务和供应品采购")
    @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);
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "删除消耗记录")
    @PostMapping("/deleteProcurementSuppliesExpends")
    public Result deleteProcurementSuppliesExpends(@RequestBody ProcurementSuppliesExpendDto dto) throws ServiceException {
        return Result.success(procurementSuppliesExpendsService.deleteExpends(dto.getExpendId()));
    }
}
cnas-server/src/main/java/com/yuanchu/mom/controller/ProcurementSuppliesListController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.dto.ProcurementSuppliesListDto;
import com.yuanchu.mom.mapper.ProcurementSuppliesListMapper;
import com.yuanchu.mom.mapper.SupplierManagementMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesList;
import com.yuanchu.mom.pojo.SupplierManagement;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ProcurementSuppliesListService;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * æœåŠ¡ä¸Žä¾›åº”å•† è€—材列表 å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 04:04:32
 */
@Api(tags = "服务和供应品采购耗材")
@RestController
@RequestMapping("/procurementSuppliesList")
//@CustomClazzName(name = "资源要求",index = 8)
public class ProcurementSuppliesListController {
    @Autowired
    private ProcurementSuppliesListService procurementSuppliesListService;
    @Autowired
    private ProcurementSuppliesListMapper listMapper;
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private SupplierManagementMapper supplierManagementMapper;
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "分页查询")
    @GetMapping("/procurementSuppliesList")
    public Result<IPage<ProcurementSuppliesListDto>> procurementSuppliesList(Page page, ProcurementSuppliesListDto list) {
        return Result.success(procurementSuppliesListService.selectList(page, list));
    }
    @ValueAuth
    @ApiOperation(value = "根据id查询耗材")
    @GetMapping("/selectProcurementSuppliesListById")
    public Result selectProcurementSuppliesListById(Integer id) {
        ProcurementSuppliesList procurementSuppliesStore = listMapper.selectById(id);
        ProcurementSuppliesListDto dto = new ProcurementSuppliesListDto();
        BeanUtils.copyProperties(procurementSuppliesStore, dto);
        User user = userMapper.selectById(procurementSuppliesStore.getPersonInCharge());
        User updateUser = userMapper.selectById(procurementSuppliesStore.getUpdateUser());
        SupplierManagement supplierManagement = supplierManagementMapper.selectById(procurementSuppliesStore.getSupplier());
        dto.setPersonInChargeName(user.getName());
        dto.setUpdateUserName(updateUser.getName());
        dto.setSupplierName(supplierManagement.getSupplierName());
        return Result.success(dto);
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "新增耗材")
    @PostMapping("/addProcurementSuppliesList")
    public Result addProcurementSuppliesList(@RequestBody ProcurementSuppliesListDto dto) {
        return Result.success(procurementSuppliesListService.addProcurementSuppliesList(dto));
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "编辑耗材")
    @PostMapping("/updateProcurementSuppliesList")
    public Result updateProcurementSuppliesList(@RequestBody ProcurementSuppliesListDto dto) {
        return Result.success(procurementSuppliesListService.updateProcurementSuppliesList(dto));
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "删除耗材")
    @PostMapping("/deleteProcurementSuppliesList")
    public Result deleteProcurementSuppliesList(@RequestBody ProcurementSuppliesListDto dto) {
        return Result.success(listMapper.deleteById(dto.getId()));
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "导出耗材列表")
    @PostMapping("/exportProcurementSuppliesList/{parentId}")
    public void exportProcurementSuppliesList( @PathVariable Integer parentId ,HttpServletResponse response) throws Exception {
        procurementSuppliesListService.exportProcurementSuppliesList(parentId,response);
    }
}
cnas-server/src/main/java/com/yuanchu/mom/controller/ProcurementSuppliesStoreController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.dto.StoreDto;
import com.yuanchu.mom.pojo.ProcurementSuppliesConsumables;
import com.yuanchu.mom.pojo.ProcurementSuppliesStore;
import com.yuanchu.mom.service.ProcurementSuppliesConsumablesService;
import com.yuanchu.mom.service.ProcurementSuppliesStoreService;
import com.yuanchu.mom.utils.JackSonUtil;
import com.yuanchu.mom.vo.Result;
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")
//@CustomClazzName(name = "资源要求",index = 8)
@AllArgsConstructor
public class ProcurementSuppliesStoreController {
    private ProcurementSuppliesStoreService storeService;
    private ProcurementSuppliesConsumablesService consumablesService;
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "耗材入库分页查询")
    @PostMapping("/storeList")
    public Result storeList(@RequestBody Map<String, Object> data) throws Exception {
        Page page = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("page")), Page.class);
        StoreDto storeDto = JackSonUtil.unmarshal(JackSonUtil.marshal(data.get("entity")), StoreDto.class);
        return Result.success(storeService.selectStoreList(page, storeDto));
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "添加耗材入库列表")
    @PostMapping("/addStore")
    public Result addStore(@RequestBody Map<String,Object> map) {
        storeService.addStore(map);
        return Result.success();
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "删除耗材入库")
    @GetMapping("/deleteStore")
    public Result deleteStore(@RequestParam("id") Integer id,@RequestParam("consumablesId") Integer consumablesId) {
        storeService.deleteStore(id,consumablesId);
        return Result.success();
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "更新耗材入库")
        @PostMapping("/updateStore")
    public Result updateStore(@RequestBody Map<String,Object> map) {
        storeService.updateStore(map);
        return Result.success();
    }
    @ValueAuth
    @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);
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel/{parentId}")
    public void exportExcel(@PathVariable Integer parentId, HttpServletResponse response) throws IOException {
        storeService.exportExcel(parentId, response);
    }
}
cnas-server/src/main/java/com/yuanchu/mom/controller/SupplierManagementController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,105 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuanchu.mom.annotation.CustomClazzName;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.pojo.SupplierManagement;
import com.yuanchu.mom.service.ProcurementSuppliesContentsService;
import com.yuanchu.mom.service.SupplierManagementService;
import com.yuanchu.mom.vo.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;
/**
 * <p>
 * å‰ç«¯æŽ§åˆ¶å™¨
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:46:45
 */
@Api(tags = "供应商管理")
@RestController
@RequestMapping("/supplierManagement")
@AllArgsConstructor
//@CustomClazzName(name = "供应商管理", index = 10)
public class SupplierManagementController {
    @Autowired
    private SupplierManagementService supplierManagementService;
    @Autowired
    private ProcurementSuppliesContentsService procurementSuppliesContentsService;
    private GetLook getLook;
    @ValueAuth
    @ApiOperation("查询供方名录")
    @GetMapping("/selectSupplierManagementByParentId/{parentId}")
    public Result<List<SupplierManagement>> selectSupplierManagementByParentId(@PathVariable Integer parentId) throws Exception {
        return Result.success(supplierManagementService.selectSupplierManagementByParentId(parentId));
    }
    @ValueClassify(value = "供应商管理")
    @ApiOperation("分页查询合格供方名录")
    @GetMapping("/selectQualifiedSupplierManagementPage")
    public Result<IPage<SupplierManagement>> selectQualifiedSupplierManagement(SupplierManagement supplierManagement, Page page) throws Exception {
        return Result.success(supplierManagementService.selectQualifiedSupplierManagement(page, supplierManagement));
    }
    @ValueAuth
    @ApiOperation("根据ID查询供应商")
    @GetMapping("/selectQualifiedSupplierManagementById/{supplierManagementId}")
    public Result<List<SupplierManagement>> selectQualifiedSupplierManagementById(@PathVariable Integer supplierManagementId) throws Exception {
        return Result.success(supplierManagementService.selectQualifiedSupplierManagementById(supplierManagementId));
    }
    @ValueClassify(value = "供应商管理")
    @ApiOperation("新增供应商")
    @PostMapping("/addSupplierManagement")
    public Result addSupplierManagement(@RequestBody SupplierManagement supplierManagement) {
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectRoleLists");
        supplierManagement.setCreateUser(map1.get("userId"));
        return Result.success(supplierManagementService.save(supplierManagement));
    }
    @ValueClassify(value = "供应商管理")
    @ApiOperation("修改供应商")
    @PostMapping("/updateSupplierManagement")
    public Result updateSupplierManagement(@RequestBody SupplierManagement supplierManagement) {
        return Result.success(supplierManagementService.updateById(supplierManagement));
    }
    @ValueClassify(value = "供应商管理")
    @ApiOperation("删除供应商")
    @PostMapping("/delSupplierManagement/{id}")
    public Result delSupplierManagement(@PathVariable Integer id) {
        return Result.success(supplierManagementService.removeById(id));
    }
    @ValueClassify(value = "供应商管理")
    @ApiOperation("导出供应商")
    @PostMapping("/exportSupplierManagement/{parentId}")
    public void exportSupplierManagement(@PathVariable Integer parentId, HttpServletResponse response) throws Exception {
        supplierManagementService.exportSupplierManagement(parentId, response);
    }
    @ValueAuth
    @ApiOperation("查询全部供方名录")
    @GetMapping("/selectSupplierManagementAll")
    public Result<List<SupplierManagement>> selectSupplierManagementAll() throws Exception {
        return Result.success(supplierManagementService.selectSupplierManagementAll());
    }
}
cnas-server/src/main/java/com/yuanchu/mom/controller/SuppliersDirectoryContentsController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
package com.yuanchu.mom.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.yuanchu.mom.annotation.ValueAuth;
import com.yuanchu.mom.annotation.ValueClassify;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.pojo.SuppliersDirectoryContents;
import com.yuanchu.mom.service.SuppliersDirectoryContentsService;
import com.yuanchu.mom.vo.Result;
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")
//@CustomClazzName(name = "供应商管理", index = 10)
public class SuppliersDirectoryContentsController {
    @Autowired
    private SuppliersDirectoryContentsService suppliersDirectoryContentsService;
    @ValueAuth
    @ApiOperation(value = "查询目录列表")
    @GetMapping("/suppliersDirectoryContentsListing")
    public Result suppliersDirectoryContentsListing() {
        return Result.success(suppliersDirectoryContentsService.directoryListing());
    }
    @ValueAuth
    @ApiOperation(value = "根据id查询")
    @GetMapping("/selectSuppliersDirectoryContentsById")
    public Result selectSuppliersDirectoryContentsById(Integer id) {
        return Result.success(suppliersDirectoryContentsService.getById(id));
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "添加子节点")
    @PostMapping("/addSuppliersDirectoryContents")
    public Result addSuppliersDirectoryContents(@RequestBody SuppliersDirectoryContents suppliersDirectoryContents ) {
        suppliersDirectoryContents.setUpdateTime(LocalDateTime.now());
        suppliersDirectoryContentsService.save(suppliersDirectoryContents);
        return Result.success(suppliersDirectoryContents.getId());
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "更新子节点")
    @PostMapping("/updateSuppliersDirectoryContents")
    public Result updateSuppliersDirectoryContents(@RequestBody SuppliersDirectoryContents suppliersDirectoryContents) {
        return Result.success(suppliersDirectoryContentsService.updateById(suppliersDirectoryContents));
    }
    @ValueClassify("服务和供应品采购")
    @ApiOperation(value = "删除子节点")
    @GetMapping("/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();
    }
    @ValueAuth
    @ApiOperation(value = "查询所有节点")
    @GetMapping("/getSuppliersDirectoryContentsNodeNames")
    public Result getSuppliersDirectoryContentsNodeNames() {
        return Result.success(suppliersDirectoryContentsService.getSuppliersDirectoryContentsNodeNames());
    }
}
cnas-server/src/main/java/com/yuanchu/mom/dto/ProcurementSuppliesExpendDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,11 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.pojo.ProcurementSuppliesExpends;
import lombok.Data;
@Data
public class ProcurementSuppliesExpendDto extends ProcurementSuppliesExpends {
    private String listName; // é¡¹ç›®è€—材名称
    private String enterUserName; // å½•入人名称
    private String updateUserName; // æ›´æ–°äººåç§°
}
cnas-server/src/main/java/com/yuanchu/mom/dto/ProcurementSuppliesListDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package com.yuanchu.mom.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yuanchu.mom.pojo.ProcurementSuppliesList;
import lombok.Data;
@Data
@ExcelIgnoreUnannotated
public class ProcurementSuppliesListDto extends ProcurementSuppliesList {
    @ExcelProperty("参考供应商")
    private String supplierName; // ä¾›åº”商名称
    @ExcelProperty("更新人")
    private String updateUserName; // æ›´æ–°äººåç§°
    @ExcelProperty("负责人")
    private String personInChargeName; // è´Ÿè´£äººåç§°
}
cnas-server/src/main/java/com/yuanchu/mom/dto/ProcurementSuppliesListEDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package com.yuanchu.mom.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ExcelIgnoreUnannotated
public class ProcurementSuppliesListEDto {
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("编号")
    @ExcelProperty("编号")
    private Long id;
    @ApiModelProperty("耗材类型")
    @ExcelProperty("类别")
    private String consumablesType;
    @ApiModelProperty("货号")
    @ExcelProperty("货号")
    private String itemNumber;
    @ApiModelProperty("耗材名称")
    @ExcelProperty("名称")
    private String consumablesName;
    @ApiModelProperty("规格")
    @ExcelProperty("规格")
    private String specifications;
    @ApiModelProperty("计量单位")
    @ExcelProperty("计量单位")
    private String unit;
    @ApiModelProperty("库存下限")
    @ExcelProperty("库存下限")
    private Integer lowerLimit;
    @ApiModelProperty("备注")
    @ExcelProperty("备注")
    private String remark;
    @ApiModelProperty("当前库存数量")
    @ExcelProperty("当前库存")
    private Integer currentAmount;
}
cnas-server/src/main/java/com/yuanchu/mom/dto/StoreDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.dto;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.pojo.ProcurementSuppliesStore;
import lombok.Data;
@Data
public class StoreDto extends ProcurementSuppliesStore {
    @ValueTableShow(value = 2,name = "耗材名称")
    private String consumablesName;
    @ValueTableShow(value = 3,name = "入库数量")
    private Integer storeNumber;
    @ValueTableShow(value = 4,name = "入库总价")
    private Double totalPrice;
    @ValueTableShow(value = 8,name = "登记人")
    private String registrantName;
    @ValueTableShow(value = 5,name = "入库人")
    private String storageUserName;
    private Integer consumablesId;
}
cnas-server/src/main/java/com/yuanchu/mom/dto/SupplierManagementDto.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,82 @@
package com.yuanchu.mom.dto;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.yuanchu.mom.annotation.ValueTableShow;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ExcelIgnoreUnannotated
public class SupplierManagementDto {
    @ApiModelProperty("供应商")
    @ExcelProperty("供应商")
    @ValueTableShow(1)
    private String supplierName;
    @ApiModelProperty("编号")
    @ExcelProperty("编号")
    @ValueTableShow(2)
    private String supplierRef;
    @ApiModelProperty("供应商物品服务名称")
    @ExcelProperty("供应商物品服务名称")
    @ValueTableShow(3)
    private String supplierItemServiceName;
    @ApiModelProperty("邮编")
    @ExcelProperty("邮编")
    @ValueTableShow(4)
    private String postalCode;
    @ApiModelProperty("地址")
    @ExcelProperty("地址")
    @ValueTableShow(4)
    private String adress;
    @ApiModelProperty("联系人")
    @ExcelProperty("联系人")
    @ValueTableShow(5)
    private String contacts;
    @ApiModelProperty("联系电话")
    @ExcelProperty("联系电话")
    @ValueTableShow(6)
    private String phone;
    @ApiModelProperty("户名")
    @ExcelProperty("户名")
    @ValueTableShow(6)
    private String householdName;
    @ApiModelProperty("传真")
    @ExcelProperty("传真")
    @ValueTableShow(7)
    private String fax;
    @ApiModelProperty("开户行")
    @ExcelProperty("开户行")
    @ValueTableShow(8)
    private String openingName;
    @ApiModelProperty("网址")
    @ExcelProperty("网址")
    @ValueTableShow(9)
    private String website;
    @ApiModelProperty("账号")
    @ExcelProperty("账号")
    @ValueTableShow(10)
    private String accountName;
    @ApiModelProperty("email")
    @ExcelProperty("email")
    @ValueTableShow(11)
    private String email;
    @ApiModelProperty("备注")
    @ExcelProperty("备注")
    @ValueTableShow(12)
    private String remarks;
}
cnas-server/src/main/java/com/yuanchu/mom/excel/StoreExcel.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.yuanchu.mom.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-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesConsumablesMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesConsumables;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ProcurementSuppliesConsumablesMapper extends BaseMapper<ProcurementSuppliesConsumables> {
}
cnas-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesContentsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesContents;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface ProcurementSuppliesContentsMapper extends BaseMapper<ProcurementSuppliesContents> {
}
cnas-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesExpendsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesExpends;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 03:47:19
 */
public interface ProcurementSuppliesExpendsMapper extends BaseMapper<ProcurementSuppliesExpends> {
}
cnas-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesListMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.ProcurementSuppliesListDto;
import com.yuanchu.mom.pojo.ProcurementSuppliesList;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 * æœåŠ¡ä¸Žä¾›åº”å•† è€—材列表 Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 04:04:32
 */
public interface ProcurementSuppliesListMapper extends BaseMapper<ProcurementSuppliesList> {
    IPage<ProcurementSuppliesList> selectProcurementSuppliesList(Page page, @Param("ew") ProcurementSuppliesListDto ew);
    ProcurementSuppliesList selectProcurementSuppliesListForUpdate(@Param("id") Long id);
    List<ProcurementSuppliesList> selectProcurementSuppliesListAll(@Param("ew") ProcurementSuppliesListDto ew);
    List<ProcurementSuppliesList> selectProcurementSuppliesListByContentsId(@Param("id") Integer contentsId);
}
cnas-server/src/main/java/com/yuanchu/mom/mapper/ProcurementSuppliesStoreMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.StoreDto;
import com.yuanchu.mom.excel.StoreExcel;
import com.yuanchu.mom.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-server/src/main/java/com/yuanchu/mom/mapper/SupplierManagementMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.SupplierManagement;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
 *  Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:46:45
 */
@Mapper
public interface SupplierManagementMapper extends BaseMapper<SupplierManagement> {
    IPage<SupplierManagement> pageSupplierManagement(Page page, @Param("ew") QueryWrapper<SupplierManagement> supplierManagementQueryWrapper);
    IPage<SupplierManagement> selectQualifiedSupplierManagement(Page page, @Param("ew") QueryWrapper<SupplierManagement> supplierManagementQueryWrapper);
    List<SupplierManagement> selectSupplierManagementAll(@Param("parentId") Integer parentId);
    List<SupplierManagement> selectSupplierManagement(@Param("parentId")Integer parentId);
}
cnas-server/src/main/java/com/yuanchu/mom/mapper/SuppliersDirectoryContentsMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yuanchu.mom.pojo.SuppliersDirectoryContents;
/**
 * <p>
 * æœåŠ¡å’Œä¾›åº”å“é‡‡è´­ç›®å½• Mapper æŽ¥å£
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-12-17 06:14:51
 */
public interface SuppliersDirectoryContentsMapper extends BaseMapper<SuppliersDirectoryContents> {
}
cnas-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesConsumables.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,50 @@
package com.yuanchu.mom.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-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesContents.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,42 @@
package com.yuanchu.mom.pojo;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@TableName("procurement_supplies_contents")
@ApiModel("服务和供应品采购表")
public class ProcurementSuppliesContents {
    @TableId(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<ProcurementSuppliesContents> children;
}
cnas-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesExpends.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,53 @@
package com.yuanchu.mom.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-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesList.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.yuanchu.mom.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
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.math.BigDecimal;
import java.time.LocalDateTime;
/**
 * <p>
 * æœåŠ¡ä¸Žä¾›åº”å•† è€—材列表
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 04:04:32
 */
@Getter
@Setter
@TableName("procurement_supplies_list")
@ApiModel(value = "ProcurementSuppliesList对象", description = "服务与供应商 è€—材列表")
public class ProcurementSuppliesList implements Serializable {
    @TableId(value = "id", type = IdType.AUTO)
    @ApiModelProperty("编号")
    @ExcelProperty("编号")
    private Long id;
    @ApiModelProperty("目录id")
    private Long contentsId;
    @ApiModelProperty("耗材类型")
    @ExcelProperty("类别")
    private String consumablesType;
    @ApiModelProperty("货号")
    @ExcelProperty("货号")
    private String itemNumber;
    @ApiModelProperty("耗材名称")
    @ExcelProperty("名称")
    private String consumablesName;
    @ApiModelProperty("规格")
    @ExcelProperty("规格")
    private String specifications;
    @ApiModelProperty("计量单位")
    @ExcelProperty("计量单位")
    private String unit;
    @ApiModelProperty("参考价格")
    private BigDecimal referencePrice;
    @ApiModelProperty("存放位置")
    private Integer contentId;
    @ApiModelProperty("负责人")
    private Integer personInCharge;
    @ApiModelProperty("库存上限")
    private Integer upperLimit;
    @ApiModelProperty("库存下限")
    @ExcelProperty("库存下限")
    private Integer lowerLimit;
    @ApiModelProperty("供应商")
    private Integer supplier;
    @ApiModelProperty("耗材图标")
    private String consumablesIcon;
    @ApiModelProperty("耗材附件")
    private String attachment;
    @ApiModelProperty("备注")
    @ExcelProperty("备注")
    private String remark;
    @TableField(fill = FieldFill.INSERT)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("当前库存数量")
    @ExcelProperty("当前库存")
    private Integer currentAmount;
}
cnas-server/src/main/java/com/yuanchu/mom/pojo/ProcurementSuppliesStore.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,57 @@
package com.yuanchu.mom.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 com.yuanchu.mom.annotation.ValueTableShow;
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("入库单号")
    @ValueTableShow(value = 1,name = "入库单号")
    private String oddNumbers;
    @ApiModelProperty("入库库存")
    private String inventory;
    @ApiModelProperty("入库总金额")
    private Double totalAmount;
    @ApiModelProperty("入库人")
    private Integer storageUser;
    @ApiModelProperty("入库时间")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ValueTableShow(value = 6,name = "入库日期")
    private LocalDate storageTime;
    @ApiModelProperty("入库说明")
    @ValueTableShow(value = 7,name = "说明")
    private String remark;
    @ApiModelProperty("登记人")
    private Integer registrant;
    @ApiModelProperty("登记时间")
    @ValueTableShow(value = 9,name = "登记日期")
    private LocalDate registrantTime;
}
cnas-server/src/main/java/com/yuanchu/mom/pojo/SupplierManagement.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
package com.yuanchu.mom.pojo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.*;
import com.yuanchu.mom.annotation.ValueTableShow;
import com.yuanchu.mom.common.OrderBy;
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 02:46:45
 */
@Getter
@Setter
@TableName("cnas_supplier_management")
@ApiModel(value = "SupplierManagement对象", description = "")
public class SupplierManagement extends OrderBy implements Serializable {
    @ApiModelProperty("主表Id")
    @TableId(value = "supplier_management_id", type = IdType.AUTO)
    private Integer supplierManagementId;
    @ApiModelProperty("供应商")
    @ExcelProperty("供应商")
    @ValueTableShow(1)
    private String supplierName;
    @ApiModelProperty("编号")
    @ExcelProperty("编号")
    @ValueTableShow(2)
    private String supplierRef;
    @ApiModelProperty("供应商物品服务名称")
    @ExcelProperty("供应商物品服务名称")
    @ValueTableShow(3)
    private String supplierItemServiceName;
    @ApiModelProperty("邮编")
    @ExcelProperty("邮编")
    @ValueTableShow(4)
    private String postalCode;
    @ApiModelProperty("地址")
    @ExcelProperty("地址")
    @ValueTableShow(4)
    private String adress;
    @ApiModelProperty("logo")
    private String logo;
    @ApiModelProperty("联系人")
    @ExcelProperty("联系人")
    @ValueTableShow(5)
    private String contacts;
    @ApiModelProperty("联系电话")
    @ExcelProperty("联系电话")
    @ValueTableShow(6)
    private String phone;
    @ApiModelProperty("户名")
    @ExcelProperty("户名")
    @ValueTableShow(6)
    private String householdName;
    @ApiModelProperty("传真")
    @ExcelProperty("传真")
    @ValueTableShow(7)
    private String fax;
    @ApiModelProperty("开户行")
    @ExcelProperty("开户行")
    @ValueTableShow(8)
    private String openingName;
    @ApiModelProperty("网址")
    @ExcelProperty("网址")
    @ValueTableShow(9)
    private String website;
    @ApiModelProperty("账号")
    @ExcelProperty("账号")
    @ValueTableShow(10)
    private String accountName;
    @ApiModelProperty("email")
    @ExcelProperty("email")
    @ValueTableShow(11)
    private String email;
    @ApiModelProperty("备注")
    @ExcelProperty("备注")
    @ValueTableShow()
    private String remarks;
    @ApiModelProperty("附件")
    private String enclosure;
    @ApiModelProperty("状态")
    private String status;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT)
    private Integer createUser;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Integer updateUser;
    @ApiModelProperty("父id")
    private Integer parentId;
}
cnas-server/src/main/java/com/yuanchu/mom/pojo/SuppliersDirectoryContents.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,52 @@
package com.yuanchu.mom.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-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesConsumablesService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,7 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.pojo.ProcurementSuppliesConsumables;
public interface ProcurementSuppliesConsumablesService extends IService<ProcurementSuppliesConsumables> {
}
cnas-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesContentsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.pojo.ProcurementSuppliesContents;
import java.util.List;
import java.util.Map;
public interface ProcurementSuppliesContentsService extends IService<ProcurementSuppliesContents> {
    List<ProcurementSuppliesContents> directoryListing();
    List<Map<String,Object>> getNodeNames();
    List<Map<String,Object>> getUserList();
}
cnas-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesExpendsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.google.protobuf.ServiceException;
import com.yuanchu.mom.dto.ProcurementSuppliesExpendDto;
import com.yuanchu.mom.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-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesListService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,28 @@
package com.yuanchu.mom.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.yuanchu.mom.dto.ProcurementSuppliesListDto;
import com.yuanchu.mom.pojo.ProcurementSuppliesList;
import javax.servlet.http.HttpServletResponse;
/**
 * <p>
 * æœåŠ¡ä¸Žä¾›åº”å•† è€—材列表 æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 04:04:32
 */
public interface ProcurementSuppliesListService extends IService<ProcurementSuppliesList> {
    IPage<ProcurementSuppliesListDto> selectList(Page page, ProcurementSuppliesListDto list);
    public Integer addProcurementSuppliesList(ProcurementSuppliesListDto dto);
    public Integer updateProcurementSuppliesList(ProcurementSuppliesListDto dto);
    void exportProcurementSuppliesList(Integer contentsId,HttpServletResponse response);
}
cnas-server/src/main/java/com/yuanchu/mom/service/ProcurementSuppliesStoreService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.dto.StoreDto;
import com.yuanchu.mom.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);
    Map<String,Object> selectStoreList(Page page, StoreDto storeDto);
    void exportExcel(Integer contentsId, HttpServletResponse response) throws IOException;
}
cnas-server/src/main/java/com/yuanchu/mom/service/SupplierManagementService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,32 @@
package com.yuanchu.mom.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.yuanchu.mom.pojo.SupplierManagement;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
 * <p>
 *  æœåŠ¡ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:46:45
 */
public interface SupplierManagementService extends IService<SupplierManagement> {
    List<SupplierManagement> selectSupplierManagement(SupplierManagement supplierManagement);
    void exportSupplierManagement(Integer parentId, HttpServletResponse response);
    IPage<SupplierManagement> selectQualifiedSupplierManagement(Page page, SupplierManagement supplierManagement);
    List<SupplierManagement> selectQualifiedSupplierManagementById(Integer supplierManagementId);
    List<SupplierManagement> selectSupplierManagementByParentId(Integer parentId);
    List<SupplierManagement> selectSupplierManagementAll();
}
cnas-server/src/main/java/com/yuanchu/mom/service/SuppliersDirectoryContentsService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.yuanchu.mom.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yuanchu.mom.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-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesConsumablesServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.ProcurementSuppliesConsumablesMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesConsumables;
import com.yuanchu.mom.service.ProcurementSuppliesConsumablesService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
public class ProcurementSuppliesConsumablesServiceImpl extends ServiceImpl<ProcurementSuppliesConsumablesMapper, ProcurementSuppliesConsumables>
        implements ProcurementSuppliesConsumablesService {
}
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesContentsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.ProcurementSuppliesContentsMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesContents;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ProcurementSuppliesContentsService;
import lombok.AllArgsConstructor;
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;
@Service
@AllArgsConstructor
public class ProcurementSuppliesContentsServiceImpl extends ServiceImpl<ProcurementSuppliesContentsMapper, ProcurementSuppliesContents>
        implements ProcurementSuppliesContentsService {
    private UserMapper userMapper;
    @Override
    public List<ProcurementSuppliesContents> directoryListing() {
        ArrayList<ProcurementSuppliesContents> list = new ArrayList<>();
        // æŸ¥å‡ºä¸€çº§ç›®å½•
        List<ProcurementSuppliesContents> firstLevel = baseMapper.selectList(new LambdaQueryWrapper<ProcurementSuppliesContents>()
                .isNull(ProcurementSuppliesContents::getParentId));
        // æŸ¥å‡ºå«æœ‰çˆ¶èŠ‚ç‚¹çš„ å¹¶é€šè¿‡çˆ¶èŠ‚ç‚¹åˆ†ç»„
        List<ProcurementSuppliesContents> seconds = baseMapper.selectList(new LambdaQueryWrapper<ProcurementSuppliesContents>()
                .isNotNull(ProcurementSuppliesContents::getParentId));
        if(firstLevel.size() > 0){
            Map<Integer, List<ProcurementSuppliesContents>> collect = seconds.stream()
                    .collect(Collectors.groupingBy(ProcurementSuppliesContents::getParentId));
            // æ ¹æ®åˆ†ç»„çš„key èµ‹å€¼å¯¹åº”çš„children
            for (int i = 0; i < firstLevel.size(); i++) {
                recursion(firstLevel.get(i),collect);
                list.add(firstLevel.get(i));
            }
        }
        return list;
    }
    // é€’归赋值children
    public ProcurementSuppliesContents recursion(ProcurementSuppliesContents firstLevel, Map<Integer, List<ProcurementSuppliesContents>> collect) {
        // å°†çˆ¶èŠ‚ç‚¹çš„children赋值
        if(collect.containsKey(firstLevel.getId())) {
            List<ProcurementSuppliesContents> procurementSupplies = collect.get(firstLevel.getId());
            firstLevel.setChildren(procurementSupplies);
            for (int i = 0; i < procurementSupplies.size(); i++) {
                recursion(procurementSupplies.get(i),collect);
            }
        }
        return firstLevel;
    }
    @Override
    public List<Map<String, Object>> getNodeNames() {
        List<ProcurementSuppliesContents> 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;
    }
    @Override
    public List<Map<String, Object>> getUserList() {
        // 0 åœç”¨
        List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getState, 1));
        List<Map<String, Object>> collect = new ArrayList<>();
        if(users.size() > 0) {
            collect = users.stream().map(item -> {
                HashMap<String, Object> map = new HashMap<>();
                map.put("id", item.getId());
                map.put("nodeName", item.getName());
                return map;
            }).collect(Collectors.toList());
        }
        return collect;
    }
}
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesExpendsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,95 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.protobuf.ServiceException;
import com.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.dto.ProcurementSuppliesExpendDto;
import com.yuanchu.mom.mapper.ProcurementSuppliesExpendsMapper;
import com.yuanchu.mom.mapper.ProcurementSuppliesListMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesExpends;
import com.yuanchu.mom.pojo.ProcurementSuppliesList;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ProcurementSuppliesExpendsService;
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;
    @Autowired
    private GetLook getLook;
    @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);
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
        expends.setEnterUserId(map1.get("userId"));
        expends.setUpdateUserId(map1.get("userId"));
        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());
        Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId(null);
        list.setUpdateUser(map1.get("userId"));
        listMapper.updateById(list);
        return expendsMapper.deleteById(id);
    }
}
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesListServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,124 @@
package com.yuanchu.mom.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.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.dto.ProcurementSuppliesListDto;
import com.yuanchu.mom.dto.ProcurementSuppliesListEDto;
import com.yuanchu.mom.exception.ErrorException;
import com.yuanchu.mom.mapper.ProcurementSuppliesListMapper;
import com.yuanchu.mom.mapper.SupplierManagementMapper;
import com.yuanchu.mom.mapper.UserMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesList;
import com.yuanchu.mom.pojo.SupplierManagement;
import com.yuanchu.mom.pojo.User;
import com.yuanchu.mom.service.ProcurementSuppliesListService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
/**
 * <p>
 * æœåŠ¡ä¸Žä¾›åº”å•† è€—材列表 æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 04:04:32
 */
@Service
public class ProcurementSuppliesListServiceImpl extends ServiceImpl<ProcurementSuppliesListMapper, ProcurementSuppliesList> implements ProcurementSuppliesListService {
    @Autowired
    private UserMapper userMapper;
    @Autowired
    private SupplierManagementMapper supplierManagementMapper;
    @Autowired
    private ProcurementSuppliesListMapper procurementSuppliesListMapper;
    @Override
    public IPage<ProcurementSuppliesListDto> selectList(Page page, ProcurementSuppliesListDto list) {
        IPage<ProcurementSuppliesList> iPage = baseMapper.selectProcurementSuppliesList(page, list);
        IPage<ProcurementSuppliesListDto> result = new Page<>();
        List<ProcurementSuppliesListDto> dtos = new ArrayList<>();
        BeanUtils.copyProperties(iPage, result);
        for (int i = 0; i < iPage.getRecords().size(); i++) {
            ProcurementSuppliesList record = iPage.getRecords().get(i);
            ProcurementSuppliesListDto dto = new ProcurementSuppliesListDto();
            BeanUtils.copyProperties(record, dto);
            if (record.getPersonInCharge() != 0) {
                User user = userMapper.selectById(record.getPersonInCharge());
                dto.setPersonInChargeName(user.getName());
            }
            if (record.getUpdateUser() != 0) {
                User updateUser = userMapper.selectById(record.getUpdateUser());
                dto.setUpdateUserName(updateUser.getName());
            }
            if (record.getSupplier() != 0) {
                SupplierManagement supplierManagement = supplierManagementMapper.selectById(record.getSupplier());
                dto.setSupplierName(supplierManagement.getSupplierName());
            }
            dtos.add(dto);
        }
        result.setRecords(dtos);
        return result;
    }
    @Override
    public Integer addProcurementSuppliesList(ProcurementSuppliesListDto dto) {
        ProcurementSuppliesList list = new ProcurementSuppliesList();
        BeanUtils.copyProperties(dto, list);
        return baseMapper.insert(list);
    }
    @Override
    public Integer updateProcurementSuppliesList(ProcurementSuppliesListDto dto) {
        ProcurementSuppliesList list = new ProcurementSuppliesList();
        BeanUtils.copyProperties(dto, list);
        return baseMapper.updateById(list);
    }
    @Override
    public void exportProcurementSuppliesList(Integer contentsId,HttpServletResponse response) {
        List<ProcurementSuppliesList> data = procurementSuppliesListMapper.selectProcurementSuppliesListByContentsId(contentsId);
        if (contentsId==0){
            data = procurementSuppliesListMapper.selectList(null);
        }
        if (data.size()==0) {
            throw new ErrorException("无数据");
        }
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        // è¿™é‡ŒURLEncoder.encode可以防止中文乱码 å½“ç„¶å’Œeasyexcel没有关系
        try {
            String fileName = URLEncoder.encode("耗材列表", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet writeSheet = EasyExcel.writerSheet(0, "耗材列表").head(ProcurementSuppliesListEDto.class).build();
            excelWriter.write(data, writeSheet);
            // å…³é—­æµ
            excelWriter.finish();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            throw new ErrorException("导出失败");
        } catch (IOException e) {
            e.printStackTrace();
            throw new ErrorException("导出失败");
        }
    }
}
cnas-server/src/main/java/com/yuanchu/mom/service/impl/ProcurementSuppliesStoreServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,147 @@
package com.yuanchu.mom.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.conditions.query.QueryWrapper;
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.yuanchu.mom.common.GetLook;
import com.yuanchu.mom.common.PrintChina;
import com.yuanchu.mom.dto.StoreDto;
import com.yuanchu.mom.excel.StoreExcel;
import com.yuanchu.mom.mapper.ProcurementSuppliesConsumablesMapper;
import com.yuanchu.mom.mapper.ProcurementSuppliesStoreMapper;
import com.yuanchu.mom.pojo.ProcurementSuppliesConsumables;
import com.yuanchu.mom.pojo.ProcurementSuppliesList;
import com.yuanchu.mom.pojo.ProcurementSuppliesStore;
import com.yuanchu.mom.service.ProcurementSuppliesListService;
import com.yuanchu.mom.service.ProcurementSuppliesStoreService;
import com.yuanchu.mom.utils.QueryWrappers;
import lombok.AllArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.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 GetLook getLook;
    private ProcurementSuppliesConsumablesMapper consumablesMapper;
    @Autowired
    private ProcurementSuppliesListService procurementSuppliesListService;
    @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(getLook.selectPowerByMethodAndUserId(null).get("userId"));
        procurementSuppliesStore.setRegistrantTime(LocalDate.now());
        if (Objects.isNull(procurementSuppliesStore.getId())) {
            baseMapper.insert(procurementSuppliesStore);
        } else {
            baseMapper.updateById(procurementSuppliesStore);
        }
        List<ProcurementSuppliesConsumables> list = JSON.parseArray(JSONObject.toJSONString(map.get("consumables")), ProcurementSuppliesConsumables.class);
        for (ProcurementSuppliesConsumables consumables : list) {
            ProcurementSuppliesList one = procurementSuppliesListService.getOne(new QueryWrapper<ProcurementSuppliesList>().lambda()
                    .eq(ProcurementSuppliesList::getConsumablesName, consumables.getConsumablesName()));
            one.setCurrentAmount(one.getCurrentAmount() + consumables.getStoreNumber());
            procurementSuppliesListService.updateById(one);
        }
        // ç”Ÿæˆè´§å·
        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 Map<String, Object> selectStoreList(Page page, StoreDto storeDto) {
        Map<String, Object> map = new HashMap<>();
        map.put("head", PrintChina.printChina(StoreDto.class));
        IPage<StoreDto> iPage = baseMapper.selectStoreList(page, QueryWrappers.queryWrappers(storeDto));
        map.put("body", iPage);
        return map;
    }
    /**
     * å¯¼å‡º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-server/src/main/java/com/yuanchu/mom/service/impl/SupplierManagementServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
package com.yuanchu.mom.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.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.yuanchu.mom.dto.SupplierManagementDto;
import com.yuanchu.mom.mapper.SupplierManagementMapper;
import com.yuanchu.mom.pojo.SupplierManagement;
import com.yuanchu.mom.service.SupplierManagementService;
import com.yuanchu.mom.utils.QueryWrappers;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.List;
/**
 * <p>
 * æœåŠ¡å®žçŽ°ç±»
 * </p>
 *
 * @author èŠ¯å¯¼è½¯ä»¶ï¼ˆæ±Ÿè‹ï¼‰æœ‰é™å…¬å¸
 * @since 2024-11-15 02:46:45
 */
@Service
public class SupplierManagementServiceImpl extends ServiceImpl<SupplierManagementMapper, SupplierManagement> implements SupplierManagementService {
    @Autowired
    private  SupplierManagementMapper supplierManagementMapper;
    public SupplierManagementServiceImpl(SupplierManagementMapper supplierManagementMapper) {
        this.supplierManagementMapper = supplierManagementMapper;
    }
    @Override
    public List<SupplierManagement> selectSupplierManagement( SupplierManagement supplierManagement) {
        return this.list();
    }
    @Override
    public void exportSupplierManagement(Integer parentId, HttpServletResponse response) {
        List<SupplierManagement> data = supplierManagementMapper.selectSupplierManagementAll(parentId);
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("UTF-8");
        // è¿™é‡ŒURLEncoder.encode可以防止中文乱码 å½“ç„¶å’Œeasyexcel没有关系
        try {
            String fileName = URLEncoder.encode("供应商管理", "UTF-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
            // æ–°å»ºExcelWriter
            ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()).build();
            WriteSheet writeSheet = EasyExcel.writerSheet(0, "供应商管理").head(SupplierManagementDto.class).build();
            excelWriter.write(data, writeSheet);
            // å…³é—­æµ
            excelWriter.finish();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        } catch (IOException e) {
            e.printStackTrace();
            throw new RuntimeException("导出失败");
        }
    }
    @Override
    public IPage<SupplierManagement> selectQualifiedSupplierManagement(Page page, SupplierManagement supplierManagement) {
        return baseMapper.selectQualifiedSupplierManagement(page, QueryWrappers.queryWrappers(supplierManagement));
    }
    @Override
    public List<SupplierManagement> selectQualifiedSupplierManagementById(Integer supplierManagementId) {
        return this.list(new QueryWrapper<SupplierManagement>().lambda().eq(SupplierManagement::getSupplierManagementId , supplierManagementId));
    }
    @Override
    public List<SupplierManagement> selectSupplierManagementByParentId(Integer parentId) {
        return supplierManagementMapper.selectSupplierManagement(parentId);
    }
    @Override
    public List<SupplierManagement> selectSupplierManagementAll() {
        return supplierManagementMapper.selectList(null);
    }
}
cnas-server/src/main/java/com/yuanchu/mom/service/impl/SuppliersDirectoryContentsServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,76 @@
package com.yuanchu.mom.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yuanchu.mom.mapper.SuppliersDirectoryContentsMapper;
import com.yuanchu.mom.pojo.SuppliersDirectoryContents;
import com.yuanchu.mom.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-server/src/main/resources/mapper/ProcurementSuppliesExpendsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
<?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.yuanchu.mom.mapper.ProcurementSuppliesExpendsMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcurementSuppliesExpends">
        <id column="expend_id" property="expendId" />
        <result column="list_id" property="listId" />
        <result column="amount" property="amount" />
        <result column="enter_user_id" property="enterUserId" />
        <result column="update_user_id" property="updateUserId" />
        <result column="update_time" property="updateTime" />
        <result column="create_time" property="createTime" />
    </resultMap>
</mapper>
cnas-server/src/main/resources/mapper/ProcurementSuppliesListMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,71 @@
<?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.yuanchu.mom.mapper.ProcurementSuppliesListMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.ProcurementSuppliesList">
        <id column="id" property="id" />
        <result column="contents_id" property="contentsId" />
        <result column="consumables_type" property="consumablesType" />
        <result column="item_number" property="itemNumber" />
        <result column="consumables_name" property="consumablesName" />
        <result column="specifications" property="specifications" />
        <result column="unit" property="unit" />
        <result column="reference_price" property="referencePrice" />
        <result column="content_id" property="contentId" />
        <result column="person_in_charge" property="personInCharge" />
        <result column="upper_limit" property="upperLimit" />
        <result column="lower_limit" property="lowerLimit" />
        <result column="supplier" property="supplier" />
        <result column="consumables_icon" property="consumablesIcon" />
        <result column="attachment" property="attachment" />
        <result column="remark" property="remark" />
        <result column="create_time" property="createTime" />
        <result column="update_time" property="updateTime" />
        <result column="update_user" property="updateUser" />
        <result column="current_amount" property="currentAmount" />
    </resultMap>
    <select id="selectProcurementSuppliesList" resultMap="BaseResultMap">
        select * from procurement_supplies_list
        <where>
            <if test="ew.contentsId != null and ew.contentsId != ''">
                and contents_id = ${ew.contentsId}
            </if>
        </where>
    </select>
    <select id="selectProcurementSuppliesListForUpdate" resultMap="BaseResultMap">
        select * from procurement_supplies_list where id = ${id} for update
    </select>
    <select id="selectProcurementSuppliesListAll" resultMap="BaseResultMap">
        select
            contents_id,item_number, consumables_type, consumables_name, specifications, supplier, upper_limit,
        lower_limit, unit, remark, person_in_charge, update_user, update_time
        from procurement_supplies_list
        <where>
            <if test="ew.contentsId != null and ew.contentsId != ''">
                and contents_id = ${ew.contentsId}
            </if>
        </where>
    </select>
    <select id="selectProcurementSuppliesListByContentsId"
            resultType="com.yuanchu.mom.pojo.ProcurementSuppliesList">
        select id,
               item_number,
               consumables_type,
               consumables_name,
               specifications,
               lower_limit,
               unit,
               remark
        from procurement_supplies_list
        where contents_id = ${id}
           or contents_id in
              (SELECT id
               FROM `procurement_supplies_contents`
               WHERE id = ${id}
                  OR parent_id = ${id})
    </select>
</mapper>
cnas-server/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.yuanchu.mom.mapper.ProcurementSuppliesStoreMapper">
    <resultMap id="map" type="com.yuanchu.mom.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.yuanchu.mom.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>
cnas-server/src/main/resources/mapper/SupplierManagementMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,86 @@
<?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.yuanchu.mom.mapper.SupplierManagementMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.SupplierManagement">
        <id column="supplier_management_id" property="supplierManagementId" />
        <result column="supplier_name" property="supplierName" />
        <result column="supplier_ref" property="supplierRef" />
        <result column="supplier_item_service_name" property="supplierItemServiceName" />
        <result column="postal_code" property="postalCode" />
        <result column="adress" property="adress" />
        <result column="logo" property="logo" />
        <result column="contacts" property="contacts" />
        <result column="phone" property="phone" />
        <result column="household_name" property="householdName" />
        <result column="fax" property="fax" />
        <result column="opening_name" property="openingName" />
        <result column="website" property="website" />
        <result column="account_name" property="accountName" />
        <result column="email" property="email" />
        <result column="remarks" property="remarks" />
        <result column="enclosure" property="enclosure" />
        <result column="create_time" property="createTime" />
        <result column="create_user" property="createUser" />
        <result column="update_time" property="updateTime" />
        <result column="update_user" property="updateUser" />
        <result column="status" property="status" />
        <result column="parent_id" property="parentId" />
    </resultMap>
    <select id="pageSupplierManagement" resultType="com.yuanchu.mom.pojo.SupplierManagement">
        select *
        from (select *
        from cnas_supplier_management
        order by create_time desc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectQualifiedSupplierManagement" resultType="com.yuanchu.mom.pojo.SupplierManagement">
        select *
        from (select *
        from cnas_supplier_management
        where status = 0
        order by create_time desc
        ) a
        <if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
            ${ew.customSqlSegment}
        </if>
    </select>
    <select id="selectSupplierManagementAll" resultType="com.yuanchu.mom.pojo.SupplierManagement">
        SELECT csm.supplier_name,
        csm.supplier_ref,
        csm.supplier_item_service_name,
        csm.postal_code,
        csm.adress,
        csm.contacts,
        csm.phone,
        csm.household_name,
        csm.fax,
        csm.opening_name,
        csm.website,
        csm.account_name,
        csm.email
        FROM cnas_supplier_management csm
        <where>
            <if test="parentId != null and parentId != 0">
                csm.parent_id in (select id
                from suppliers_directory_contents
                where id = #{parentId}
                or parent_id = #{parentId})
            </if>
        </where>
    </select>
    <select id="selectSupplierManagement" resultType="com.yuanchu.mom.pojo.SupplierManagement">
        select
            *
        from cnas_supplier_management csm
        where
            csm.parent_id = #{parentId} or
            csm.parent_id in
        (select id from suppliers_directory_contents where id = #{parentId} or parent_id = #{parentId})
    </select>
</mapper>
cnas-server/src/main/resources/mapper/SuppliersDirectoryContentsMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,15 @@
<?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.yuanchu.mom.mapper.SuppliersDirectoryContentsMapper">
    <!-- é€šç”¨æŸ¥è¯¢æ˜ å°„结果 -->
    <resultMap id="BaseResultMap" type="com.yuanchu.mom.pojo.SuppliersDirectoryContents">
        <id column="id" property="id" />
        <result column="node_name" property="nodeName" />
        <result column="code" property="code" />
        <result column="update_user" property="updateUser" />
        <result column="update_time" property="updateTime" />
        <result column="parent_id" property="parentId" />
    </resultMap>
</mapper>
cnas-server/src/main/resources/static/js/device_qr_show.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
initCharts()
function initCharts(){
    var progress = document.getElementById("progress").value
    var chartDom = document.getElementById('chartContainer');
    var myChart = echarts.init(chartDom);
    var option;
    option = {
        series: [
            {
                type: 'gauge',
                axisLine: {
                    lineStyle: {
                        width: 15,
                        color: [
                            [0.3, '#21a700'],
                            [0.7, '#0066ff'],
                            [1, '#d80000']
                        ]
                    }
                },
                radius: '100%',
                startAngle: 180,
                endAngle: 0,
                center: ['50%','70%'],
                pointer: {
                    itemStyle: {
                        color: 'auto'
                    }
                },
                axisTick: {
                    distance: -15,
                    length: 7,
                    lineStyle: {
                        color: '#fff',
                        width: 1
                    }
                },
                splitLine: {
                    distance: -45,
                    length: 45,
                    lineStyle: {
                        color: '#fff',
                        width: 2
                    }
                },
                axisLabel: {
                    color: 'inherit',
                    distance: 20,
                    fontSize: 10
                },
                detail: {
                    valueAnimation: true,
                    formatter: '{value} %',
                    color: 'inherit'
                },
                data: [
                    {
                        value: progress
                    }
                ]
            }
        ]
    };
    option && myChart.setOption(option);
    window.onresize = function() {
        myChart.resize();
    };
}
function hasDownload(){
    var isDownload = true
    var downloadUrl = document.getElementById("downloadUrl").value
    var xhr = new XMLHttpRequest();
    xhr.open("GET", downloadUrl, false);
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status !== 200) {
            // è¯·æ±‚失败
            isDownload = false
            alert("未上传证书")
        }
    };
    xhr.send();
    return isDownload
}
cnas-server/src/main/resources/static/js/echarts.js
¶Ô±ÈÐÂÎļþ
ÎļþÌ«´ó
cnas-server/src/main/resources/templates/device_qr_show.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,173 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>设备运行总览</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body {
            -webkit-text-size-adjust: 100%!important;
            text-size-adjust: 100%!important;
            -moz-text-size-adjust: 100%!important;
        }
        .main{
            width: 100%;
            background-color: #f5f7fa;
            padding:10px 0;
        }
        .chartContainer{
            width:92%;
            margin-left:4%;
            height:200px;
            background-color: #fff;
            border-radius: 5px;
        }
        .info{
            width:92%;
            margin-left:4%;
            height:calc(100% - 230px);
            background-color: #fff;
            margin-top: 10px;
            padding-bottom: 10px;
            border-radius: 5px;
        }
        .info div{
            display: flex;
            width: 92%;
            margin-left: 4%;
            border-bottom: 1px solid #dddddd;
            height: 40px;
        }
        .info div span{
            width:100px;
            color: #797979;
            font-size: clamp(0.563rem, -2.813rem + 15vw, 0.75rem) !important;
            line-height: 40px;
        }
        .info div p{
            width:calc(100% - 100px);
            height:40px;
            font-size: clamp(0.563rem, -2.813rem + 15vw, 0.75rem) !important;
            font-weight: bold;
            line-height: 40px;
            text-align: right;
        }
        .success{
            color:#21a700
        }
        .failed{
            color:#d80000
        }
        .other{
            color: #e8a849;
        }
        .stop{
            color: lightgray;
        }
        .download-link{
            text-decoration:none;
            width:80px;
            height:25px;
            margin:7.5px 10px;
            background-color: #0066ff;
            color:#fff;
            font-size:clamp(0.563rem, -2.813rem + 15vw, 0.75rem) !important;
            border:none;
            border-radius: 3px;
            line-height: 25px;
            text-align: center;
        }
        .insProduct{
            overflow-x: scroll;
            overflow-y: hidden;
            display: inline-block
        }
        .info div:last-child{
            white-space: nowrap;
        }
    </style>
</head>
<body>
    <input type="hidden" id="progress" th:value="${progress}">
    <div class="main">
        <div class="chartContainer" id="chartContainer" ></div>
        <div class="info">
            <div>
                <span>设备名称</span>
                <p th:text="${deviceName}"></p>
            </div>
            <div>
                <span>设备编号</span>
                <p th:text="${deviceCode}"></p>
            </div>
            <div>
                <span>启用时长(å¹´)</span>
                <p th:text="${usedYears}"></p>
            </div>
            <div>
                <span>设备运行状态</span>
                <p th:if="${runStatus==0}" class="success">正常</p>
                <p th:if="${runStatus==1}" class="other">ç»´ä¿®</p>
                <p th:if="${runStatus==2}" class="stop">停用</p>
                <p th:if="${runStatus==3}" class="failed">报废</p>
            </div>
            <div>
                <span>
                    æœ€è¿‘校准日期
                </span>
                <input type="hidden" id="downloadUrl" th:value="${downloadUrl}">
                <a th:href="${downloadUrl}" onclick="return hasDownload()" download="attachment.jpg" rel="noopener noreferrer" class="download-link">证书下载</a>
                <p th:text="${lastCalibrationDate}"></p>
            </div>
            <div>
                <span>下次校准日期</span>
                <p th:text="${nextCalibrationDate}"></p>
            </div>
            <div>
                <span>校准总结论</span>
                <p th:if="${calibrateStatus=='合格'}" class="success" th:text="${calibrateStatus}"></p>
                <p th:if="${calibrateStatus=='不合格'}" class="failed" th:text="${calibrateStatus}"></p>
                <p th:if="${calibrateStatus=='其他'}" class="other" th:text="${calibrateStatus}"></p>
            </div>
            <div>
                <span>最近核查日期</span>
                <p th:text="${lastExamineDate}"></p>
            </div>
            <div>
                <span>下次核查日期</span>
                <p th:text="${nextExamineDate}"></p>
            </div>
            <div>
                <span>核查总结论</span>
                <p th:if="${examineStatus=='合格'}" class="success" th:text="${examineStatus}"></p>
                <p th:if="${examineStatus=='不合格'}" class="failed" th:text="${examineStatus}"></p>
                <p th:if="${examineStatus=='其他'}" class="other" th:text="${examineStatus}"></p>
            </div>
            <div>
                <span>最近维护日期</span>
                <p th:text="${maintenanceDate}"></p>
            </div>
            <div>
                <span>下次维护日期</span>
                <p th:text="${nextMaintenanceDate}"></p>
            </div>
            <div>
                <span>维护类型</span>
                <p th:text="${maintenanceType}"></p>
            </div>
            <div>
                <span>测量项目</span>
                <p th:text="${insProduct}" class="insProduct"></p>
            </div>
        </div>
    </div>
</body>
<script  th:src="@{/static/js/echarts.js}"></script>
<script th:src="@{/static/js/device_qr_show.js}"></script>
</html>
cnas-server/src/main/resources/templates/sample_qr_show.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,46 @@
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
    <title>样品信息</title>
    <style>
    </style>
</head>
<body>
<p>
    <span style="font-weight: bold">样品编号:</span>
    <span th:text="${sampleCode}"></span>
</p>
<p>
    <span  style="font-weight: bold">委托单号:</span>
    <span th:text="${entrustCode}"></span>
</p>
<p>
    <span  style="font-weight: bold">规格型号:</span>
    <span th:text="${model}"></span>
</p>
<p>
    <span  style="font-weight: bold">样品名称:</span>
    <span th:text="${sample}"></span>
</p>
<p>
    <span  style="font-weight: bold">检测项目:</span>
    <span th:text="${inspectionItem}"></span>
</p>
<p>
    <span  style="font-weight: bold">样品状态:</span>
    <input type="checkbox" disabled name="insState" value="0" th:checked="${insState == 0}">
    <label>待检</label>
    <input type="checkbox" disabled name="insState" value="1" th:checked="${insState == 1}">
    <label>在检</label>
    <input type="checkbox" disabled name="insState" value="2" th:checked="${insState == 2}">
    <label>已检</label>
    <input type="checkbox" disabled name="isLeave" value="1" th:checked="${isLeave == 1}">
    <label>留样</label>
</p>
</body>
</html>
cnas-server/src/main/resources/templates/word_qr_show.html
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>检测报告</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        .descriptions {
            width: 65%;
            text-align: left;
        }
        .descriptions-title {
            width: 35%;
            text-align: center;
        }
        .table {
            font-size: 1em;
            color: #1c2023;
            border-collapse: collapse;
            width: 100%;
        }
        .table tr {
            height: 3em;
        }
        table tr:nth-child(odd) .descriptions-title{
            background-color: #dddddd;
        }
        table tr:nth-child(odd) .descriptions{
            background-color: #f0f0f0;
        }
    </style>
</head>
<body>
<h4 th:text="'报告编号:' + ${entrustCode}"></h4>
<table class="table">
    <tr>
        <td class="descriptions-title">试 æ · å ç§°<br/>Name of Product</td>
        <td class="descriptions">
            <p>
                <span th:text="${productName}"></span>
                <br/>
                <span th:text="${productNameEn}"></span>
            </p>
        </td>
    </tr>
    <tr>
        <td class="descriptions-title">型 å·<br/>Type and Size</td>
        <td class="descriptions" th:text="${insOrderModel}"></td>
    </tr>
    <tr>
        <td class="descriptions-title">委 æ‰˜ å• ä½<br/>Client</td>
        <td class="descriptions">
            <p>
                <span th:text="${company}"></span>
                <br/>
                <span th:text="${companyEn}"></span>
            </p>
        </td>
    </tr>
    <tr>
        <td class="descriptions-title">检 éªŒ ç±» åˆ«<br/>Kind of Test</td>
        <td class="descriptions">
            <p>
                <span th:text="${orderType}"></span>
                <br/>
                <span th:text="${orderTypeEn}"></span>
            </p>
        </td>
    </tr>
    <tr>
        <td class="descriptions-title">收 æ · æ—¥ æœŸ<br/>Received date</td>
        <td class="descriptions">
            <p>
                <span th:text="${getTime}"></span>
                <br/>
                <span th:text="${getTimeEn}"></span>
            </p>
        </td>
    </tr>
    <tr>
        <td class="descriptions-title">ç­¾ å‘ æ—¥ æœŸ<br/>Date of issue</td>
        <td class="descriptions">
            <p>
                <span th:text="${issuingDate}"></span>
                <br/>
                <span th:text="${issuingDateEn}"></span>
            </p>
        </td>
    </tr>
</table>
</body>
</html>
system-run/src/main/resources/application-dev.yml
@@ -42,13 +42,13 @@
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
#    url: jdbc:mysql://localhost:3306/center-lims?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#    url: jdbc:mysql://10.1.13.77:3306/center-lims?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    url: jdbc:mysql://192.168.22.29:3306/center-lims?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#    username: remote_user
    username: root
    url: jdbc:mysql://10.1.13.77:3306/center-lims?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
#    url: jdbc:mysql://192.168.22.29:3306/center-lims?useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
    username: remote_user
#    username: root
#    password: 123456
#    password: zttZTT123!
    password: Dq<)dAiAczXs
    password: zttZTT123!
#    password: Dq<)dAiAczXs
    druid:
      #   Druid数据源配置
      initialSize: 5 # åˆå§‹è¿žæŽ¥æ•°