hdy
2025-03-12 f0d048fa2cba4f52066e14d1d31e4f7a2c7a9530
新增导入功能
已修改6个文件
156 ■■■■■ 文件已修改
billion-admin/pom.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/controller/BsBomChildInfoController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/service/IBsBomChildInfoService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-main/src/main/java/com/billion/main/bs/service/impl/BsBomChildInfoServiceImpl.java 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-ui/src/views/main/bs/bomChildInfo/index.vue 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pom.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
billion-admin/pom.xml
@@ -68,6 +68,12 @@
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>3.3.3</version>
        </dependency>
        <dependency>
            <groupId>com.billion</groupId>
            <artifactId>billion-main</artifactId>
        </dependency>
@@ -78,6 +84,7 @@
    </dependencies>
    <build>
        <plugins>
            <plugin>
billion-main/src/main/java/com/billion/main/bs/controller/BsBomChildInfoController.java
@@ -11,6 +11,7 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
@@ -28,6 +29,21 @@
    @Autowired
    private IBsBomChildInfoService bsBomChildInfoService;
    @PostMapping("/importTemplate")
    public void importTemplate(HttpServletResponse response)
    {
        ExcelUtil<BsBomChildInfo> util = new ExcelUtil<BsBomChildInfo>(BsBomChildInfo.class);
        util.importTemplateExcel(response, "bom子表数据");
    }
    @PreAuthorize("@ss.hasPermi('bs:bomChildInfo:import')")
    @PostMapping("/importData")
    public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception
    {
        ExcelUtil<BsBomChildInfo> util = new ExcelUtil<BsBomChildInfo>(BsBomChildInfo.class);
        List<BsBomChildInfo> bomChildList = util.importExcel(file.getInputStream());
        String message = bsBomChildInfoService.importBomChild(bomChildList, updateSupport, "1");
        return success(message);
    }
    /**
     * 查询基础BOM子信息列表
     */
billion-main/src/main/java/com/billion/main/bs/service/IBsBomChildInfoService.java
@@ -61,4 +61,5 @@
     */
    public int deleteBsBomChildInfoById(Long id);
    void insertBatch(List<BsBomChildInfo> confList);
    public String importBomChild(List<BsBomChildInfo> bomChildList, Boolean isUpdateSupport, String operName);
}
billion-main/src/main/java/com/billion/main/bs/service/impl/BsBomChildInfoServiceImpl.java
@@ -1,12 +1,16 @@
package com.billion.main.bs.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.billion.common.exception.ServiceException;
import com.billion.common.utils.StringUtils;
import com.billion.common.utils.bean.BeanValidators;
import com.billion.main.bs.domain.BsBomChildInfo;
import com.billion.main.bs.mapper.BsBomChildInfoMapper;
import com.billion.main.bs.service.IBsBomChildInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.validation.Validator;
import java.util.List;
/**
@@ -19,6 +23,48 @@
public class BsBomChildInfoServiceImpl extends ServiceImpl<BsBomChildInfoMapper, BsBomChildInfo> implements IBsBomChildInfoService
{
    @Autowired
    protected Validator validator;
    @Autowired
    private IBsBomChildInfoService bsBomChildInfoService;
    @Override
    public String importBomChild(List<BsBomChildInfo> bomChildList, Boolean isUpdateSupport, String operName)
    {
        if (StringUtils.isNull(bomChildList) || bomChildList.size() == 0)
        {
            throw new ServiceException("导入数据不能为空!");
        }
        StringBuilder successMsg = new StringBuilder();
        for (BsBomChildInfo list : bomChildList)
        {
            try
            {
                BeanValidators.validateWithException(validator, list);
                BsBomChildInfo bsBomChildInfo = new BsBomChildInfo();
                bsBomChildInfo.setProductCode(list.getProductCode());
                bsBomChildInfo.setProductName(list.getProductName());
                bsBomChildInfo.setLocationCode(list.getLocationCode());
                bsBomChildInfo.setLocationName(list.getLocationName());
                bsBomChildInfo.setMaterialCode(list.getMaterialCode());
                bsBomChildInfo.setMaterialName(list.getMaterialName());
                bsBomChildInfo.setCostQty(list.getCostQty());
                bsBomChildInfo.setBomCode(list.getBomCode());
                bsBomChildInfoService.insertBsBomChildInfo(bsBomChildInfo);
                successMsg.append( " 更新成功");
            }
            catch (Exception e)
            {
                String msg =  " 导入失败";
                log.error(msg, e);
            }
        }
        return successMsg.toString();
    }
    @Autowired
    private BsBomChildInfoMapper bsBomChildInfoMapper;
    /**
billion-ui/src/views/main/bs/bomChildInfo/index.vue
@@ -81,6 +81,16 @@
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="info"
          plain
          icon="el-icon-upload2"
          size="mini"
          @click="handleImport"
          v-hasPermi="['system:user:import']"
        >导入</el-button>
      </el-col>
      <el-col :span="1.5">
        <el-button
          type="warning"
          plain
          icon="el-icon-download"
@@ -186,6 +196,38 @@
        <el-button @click="cancel">取 消</el-button>
      </div>
    </el-dialog>
    <!-- 用户导入对话框 -->
    <el-dialog :title="upload.title" :visible.sync="upload.open" width="400px" append-to-body>
      <el-upload
        ref="upload"
        :limit="1"
        accept=".xlsx, .xls"
        :headers="upload.headers"
        :action="upload.url + '?updateSupport=' + upload.updateSupport"
        :disabled="upload.isUploading"
        :on-progress="handleFileUploadProgress"
        :on-success="handleFileSuccess"
        :auto-upload="false"
        drag
      >
        <i class="el-icon-upload"></i>
        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
        <div class="el-upload__tip text-center" slot="tip">
          <div class="el-upload__tip" slot="tip">
            <el-checkbox v-model="upload.updateSupport" /> 是否更新已经存在的数据
          </div>
          <span>仅允许导入xls、xlsx格式文件。</span>
          <el-link type="primary" :underline="false" style="font-size:12px;vertical-align: baseline;" @click="importTemplate">下载模板</el-link>
        </div>
      </el-upload>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="submitFileForm">确 定</el-button>
        <el-button @click="upload.open = false">取 消</el-button>
      </div>
    </el-dialog>
  </div>
</template>
@@ -193,6 +235,7 @@
import { listBomChildInfo, getBomChildInfo, delBomChildInfo, addBomChildInfo, updateBomChildInfo } from "@/api/main/bs/bomChildInfo";
import { listBomInfo } from "@/api/main/bs/bomInfo";
import ItemSelect from "@/components/itemSelect/single.vue";
import {getToken} from "@/utils/auth";
export default {
  name: "BomChildInfo",
@@ -240,7 +283,19 @@
        productCode: "",
        productName: ""
      },
      // 用户导入参数
      upload: {
        open: false,
        title: "",
        // 是否禁用上传
        isUploading: false,
        // 是否更新已经存在的用户数据
        updateSupport: 0,
        // 设置上传的请求头部
        headers: { Authorization: "Bearer " + getToken() },
        // 上传的地址
        url: process.env.VUE_APP_BASE_API + "/bs/bomChildInfo/importData"
      },
      // 表单参数
      form: {},
      // 表单校验
@@ -388,7 +443,33 @@
      this.download('bs/bomChildInfo/export', {
        ...this.queryParams
      }, `bomChildInfo_${new Date().getTime()}.xlsx`)
    }
    },
    /** 导入按钮操作 */
    handleImport() {
      this.upload.title = "数据导入";
      this.upload.open = true;
    },
    // 文件上传中处理
    handleFileUploadProgress(event, file, fileList) {
      this.upload.isUploading = true;
    },
    // 文件上传成功处理
    handleFileSuccess(response, file, fileList) {
      this.upload.open = false;
      this.upload.isUploading = false;
      this.$refs.upload.clearFiles();
      this.$alert("<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" + response.msg + "</div>", "导入结果", { dangerouslyUseHTMLString: true });
      this.getList();
    },
    // 提交上传文件
    submitFileForm() {
      this.$refs.upload.submit();
    },
    /** 下载模板操作 */
    importTemplate() {
      this.download('bs/bomChildInfo/importTemplate', {
      }, `bom_child_${new Date().getTime()}.xlsx`)
    },
  }
};
</script>
pom.xml
@@ -285,4 +285,5 @@
        </pluginRepository>
    </pluginRepositories>
</project>