houjie
2023-09-01 2f3d91bdb79235cd9c3dcbfed2493adf1bd94d6a
lxzn-module-eam/src/main/java/org/jeecg/modules/spare/controller/SparesPartInventoryController.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -10,19 +11,23 @@
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.eam.entity.MaintenanceOrderActualWorkingHour;
import org.jeecg.modules.base.entity.*;
import org.jeecg.modules.base.service.*;
import org.jeecg.modules.spare.entity.SparePart;
import org.jeecg.modules.spare.entity.SparesPartInventory;
import org.jeecg.modules.spare.service.ISparePartService;
import org.jeecg.modules.spare.service.ISparesPartInventoryService;
import org.jeecg.modules.spare.vo.AuxiliaryUnitVo;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -42,6 +47,20 @@
    private ISparesPartInventoryService sparesPartInventoryService;
    @Autowired
    private ISparePartService sparePartService;
    @Autowired
    private IUnitService unitService;
    @Autowired
    private ISupplierService supplierService;
    @Autowired
    private IWarehouseService warehouseService;
    @Autowired
    private IWarehouseAreaService warehouseAreaService;
    @Autowired
    private IWarehouseLocationService warehouseLocationService;
    /**
     * 分页列表查询
@@ -167,10 +186,74 @@
     * @param response
     * @return
     */
    /**
     * 导入
     *
     * @return
     */
    @RequestMapping(value = "/importExcel/{mainId}")
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response, @PathVariable("mainId") String mainId) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
            // 获取上传文件对象
            MultipartFile file = entity.getValue();
            ImportParams params = new ImportParams();
            params.setTitleRows(2);
            params.setHeadRows(1);
            params.setNeedSave(true);
            try {
                List<SparesPartInventory> list = ExcelImportUtil.importExcel(file.getInputStream(), SparesPartInventory.class, params);
                long start = System.currentTimeMillis();
                for (int i = 0; i < list.size(); i++) {
                    SparesPartInventory sparesPartInventory = list.get(i);
                    sparesPartInventory.setSparePartId(mainId);
                    String mainUnitName = sparesPartInventory.getMainUnitId();
                    String supplierName = sparesPartInventory.getSupplierId();
                    String warehouseName = sparesPartInventory.getWarehouseId();
                    String warehouseAreaName = sparesPartInventory.getWarehouseAreaId();
                    String warehouseLocationName = sparesPartInventory.getWarehouseLocationId();
                    Supplier supplierId = supplierService.getByName(supplierName);
                    Unit unitById = unitService.getUnitByName(mainUnitName);
                    Warehouse warehouseId = warehouseService.getByName(warehouseName);
                    WarehouseArea warehouseAreaId = warehouseAreaService.getByName(warehouseAreaName);
                    WarehouseLocation warehouseLocationId = warehouseLocationService.getByName(warehouseLocationName);
                    if (!StringUtils.isNotEmpty(unitById.getId()))
                        return Result.error("文件导入失败: 第" + (i + 1) + "行单位不存在");
                    if (!StringUtils.isNotEmpty(supplierId.getId()))
                        return Result.error("文件导入失败: 第" + (i + 1) + "行供应商不存在");
                    if (!StringUtils.isNotEmpty(warehouseId.getId()))
                        return Result.error("文件导入失败: 第" + (i + 1) + "行仓库不存在");
                    if (!StringUtils.isNotEmpty(warehouseAreaId.getId()))
                        return Result.error("文件导入失败: 第" + (i + 1) + "行库区不存在");
                    if (!StringUtils.isNotEmpty(warehouseLocationId.getId()))
                        return Result.error("文件导入失败: 第" + (i + 1) + "行库位不存在");
                    list.get(i).setMainUnitId(unitById.getId());
                    list.get(i).setSupplierId(supplierId.getId());
                    list.get(i).setSupplierId(warehouseId.getId());
                    list.get(i).setSupplierId(warehouseAreaId.getId());
                    list.get(i).setSupplierId(warehouseLocationId.getId());
                    if (!StringUtils.isNotEmpty(sparesPartInventory.getBatchNum()))
                        return Result.error("文件导入失败: 第" + (i + 1) + "行批次号不能为空");
                    if (sparesPartInventory.getMainQuantity() <= 0)
                        return Result.error("文件导入失败: 第" + (i + 1) + "行数量不能为小于等于0");
                }
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, SparesPartInventory.class);
                sparesPartInventoryService.saveBatch(list);
                log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
                return Result.OK("文件导入成功!数据行数:" + list.size());
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                return Result.error("文件导入失败:" + e.getMessage());
            } finally {
                try {
                    file.getInputStream().close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return Result.error("文件导入失败!");
    }