/*
|
* Copyright (c) 2018-2025, ztt All rights reserved.
|
*
|
* Redistribution and use in source and binary forms, with or without
|
* modification, are permitted provided that the following conditions are met:
|
*
|
* Redistributions of source code must retain the above copyright notice,
|
* this list of conditions and the following disclaimer.
|
* Redistributions in binary form must reproduce the above copyright
|
* notice, this list of conditions and the following disclaimer in the
|
* documentation and/or other materials provided with the distribution.
|
* Neither the name of the pig4cloud.com developer nor the names of its
|
* contributors may be used to endorse or promote products derived from
|
* this software without specific prior written permission.
|
* Author: ztt
|
*/
|
package com.chinaztt.mes.basic.service.impl;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.io.IoUtil;
|
import cn.hutool.core.util.IdUtil;
|
import cn.hutool.core.util.StrUtil;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.chinaztt.mes.basic.entity.Factory;
|
import com.chinaztt.mes.basic.entity.Warehouse;
|
import com.chinaztt.mes.basic.excel.WarehouseData;
|
import com.chinaztt.mes.basic.mapper.FactoryMapper;
|
import com.chinaztt.mes.basic.mapper.WarehouseMapper;
|
import com.chinaztt.mes.basic.service.WarehouseService;
|
import com.chinaztt.mes.basic.util.DictUtils;
|
import com.chinaztt.ztt.admin.api.entity.SysDictItem;
|
import com.chinaztt.ztt.admin.api.feign.RemoteDictService;
|
import com.chinaztt.ztt.common.core.util.R;
|
import com.chinaztt.ztt.common.oss.OssProperties;
|
import com.chinaztt.ztt.common.oss.service.OssTemplate;
|
import lombok.AllArgsConstructor;
|
import lombok.SneakyThrows;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.stereotype.Service;
|
import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.InputStream;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* 仓库基础数据
|
*
|
* @author sunxl
|
* @date 2020-09-18 09:32:01
|
*/
|
@Service
|
@Slf4j
|
@AllArgsConstructor
|
public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse> implements WarehouseService {
|
private final OssProperties ossProperties;
|
private final OssTemplate minioTemplate;
|
private FactoryMapper factoryMapper;
|
private DictUtils dictUtils;
|
private RemoteDictService remoteDictService;
|
/**
|
* Description: 分页
|
*
|
* @param page
|
* @param warehouse
|
* @return IPage<List<Warehouse>>
|
* @author: fenglang
|
* @date: 2020/8/18 11:06
|
*/
|
@Override
|
public IPage<List<Warehouse>> getWarehouse(Page page, QueryWrapper<Warehouse> warehouse) {
|
return baseMapper.getWarehouse(page,warehouse);
|
}
|
@Override
|
public void deleteWarehouse(Long id) {
|
// 2.删除选中的仓库
|
baseMapper.deleteById(id);
|
|
}
|
|
@Override
|
public R uploadFile(MultipartFile file) {
|
String fileName = IdUtil.simpleUUID() + StrUtil.DOT + FileUtil.extName(file.getOriginalFilename());
|
Map<String, String> resultMap = new HashMap<>(4);
|
resultMap.put("bucketName", ossProperties.getBucketName());
|
resultMap.put("fileName", fileName);
|
resultMap.put("url", String.format("/admin/sys-file/%s/%s", ossProperties.getBucketName(), fileName));
|
|
try {
|
minioTemplate.putObject(ossProperties.getBucketName(), fileName, file.getInputStream());
|
// 文件管理数据记录,收集管理追踪文件
|
}
|
catch (Exception e) {
|
log.error("上传失败", e);
|
return R.failed(e.getLocalizedMessage());
|
}
|
return R.ok(resultMap);
|
}
|
|
@Override
|
@SneakyThrows
|
public R<Boolean> deleteFile(String fileName) {
|
minioTemplate.removeObject(ossProperties.getBucketName(), fileName);
|
return R.ok();
|
}
|
|
@Override
|
public void getFile(String bucket, String url, HttpServletResponse response) {
|
try (InputStream inputStream = minioTemplate.getObject(bucket, url)) {
|
response.setContentType("application/octet-stream; charset=UTF-8");
|
IoUtil.copy(inputStream, response.getOutputStream());
|
}
|
catch (Exception e) {
|
log.error("文件读取异常: {}", e.getLocalizedMessage());
|
}
|
}
|
|
@Override
|
public R<Boolean> deleteByFile(Long id) {
|
baseMapper.deleteWarehouse(id);
|
return R.ok();
|
}
|
|
@Override
|
public void importWarehouseExcel(List<WarehouseData> list) {
|
if (CollectionUtil.isEmpty(list)) {
|
return;
|
}
|
List<SysDictItem> dict = dictUtils.getDict("warehouse_type");
|
List<Factory> factoryList =factoryMapper.selectList(null);
|
for (WarehouseData data :list){
|
Warehouse warehouse = new Warehouse();
|
dict.forEach(a -> {
|
if (a.getLabel().equals(data.getType())){
|
warehouse.setWarehouseType(a.getValue());
|
}
|
});
|
factoryList.forEach(b -> {
|
if (b.getFactoryName().equals(data.getFactoryName())){
|
warehouse.setFactoryId(b.getId());
|
}
|
});
|
if (warehouse.getFactoryId()==null){
|
log.error("工厂:" + data.getWarehouseName() + "不存在");
|
continue;
|
}
|
if(warehouse.getWarehouseType()==null){
|
log.error("仓库类型:" + data.getType() + "不存在");
|
continue;
|
};
|
warehouse.setWarehouseNo(data.getWarehouseNo());
|
warehouse.setWarehouseName(data.getWarehouseName());
|
warehouse.setWarehouseStatus(1);
|
baseMapper.insert(warehouse);
|
}
|
}
|
|
}
|