Browse Source

入库单导入

master
liupopo 3 years ago
parent
commit
2144a3e9a5
  1. 4
      base-ui/src/api/kucun/kucun.js
  2. 19
      base-ui/src/api/kucun/ruku.js
  3. 47
      base-ui/src/views/kucun/rkmx/index.vue
  4. 2
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorage.java
  5. 5
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountService.java
  6. 2
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageGd.java
  7. 32
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLog.java
  8. 18
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErr.java
  9. 8
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErrMapper.java
  10. 8
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErrService.java
  11. 8
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogMapper.java
  12. 8
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogService.java
  13. 19
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageRest.java
  14. 99
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageService.java
  15. 1
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryLog.java
  16. 15
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndex.java
  17. 8
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndexMapper.java
  18. 30
      yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndexService.java

4
base-ui/src/api/kucun/kucun.js

@ -3,7 +3,7 @@ import request from '@/utils/request'
// 条件查询
export function kchz(data) {
return request({
url: '/kucun/kchz',
url: '/ruku/kchz',
method: 'get',
data: data
})
@ -11,7 +11,7 @@ export function kchz(data) {
// 条件查询
export function downloadhz(parm) {
return request({
url: '/kucun/downloadhz',
url: '/ruku/downloadhz',
method: 'get',
responseType: 'blob',
params: parm

19
base-ui/src/api/kucun/ruku.js

@ -0,0 +1,19 @@
import request from '@/utils/request'
// 条件查询
export function kchz(data) {
return request({
url: '/kucun/kchz',
method: 'get',
data: data
})
}
// 条件查询
export function downloadhz(parm) {
return request({
url: '/kucun/downloadhz',
method: 'get',
responseType: 'blob',
params: parm
})
}

47
base-ui/src/views/kucun/rkmx/index.vue

@ -1,8 +1,46 @@
<template>
<div class="app-container">
<div>
<h3>{{ name }}</h3>
</div>
<el-row :gutter="20">
<el-col :span="14">
<el-tabs v-model="tabActiveName">
<el-tab-pane label="入库单上传记录" name="uplog">用户管理</el-tab-pane>
<el-tab-pane label="[112]供应链仓入库明细" name="k112">用户管理</el-tab-pane>
<el-tab-pane label="全部入库明细" name="all">配置管理</el-tab-pane>
</el-tabs>
</el-col>
<el-col :span="10">
<el-card class="box-card">
<div slot="header" class="clearfix"><span>入库单上传</span></div>
<div>
<el-upload
ref="upload"
class="upload-demo"
:action="updateAction"
:on-change="handleChange"
:on-progress="handleProgress"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-success="handleSuccess"
:file-list="fileList"
:auto-upload="false"
:multiple="false"
:limit="1"
>
<el-button slot="trigger" size="small" type="primary">选取文件</el-button>
<el-button style="margin-left: 10px;" size="small" type="success" @click="submitUpload">上传到服务器</el-button>
<div slot="tip" class="el-upload__tip">上传 库存信息查询.xlsx文件</div>
</el-upload>
</div>
<div>
<h3>文件上传结果</h3>
<el-card class="box-card">
<div>{{ uploadResultMesssage }}</div>
</el-card>
</div>
</el-card>
</el-col>
</el-row>
</div>
</template>
@ -12,7 +50,8 @@ export default {
// components: { },
data() {
return {
name: '入库明细'
name: '入库明细',
tabActiveName: 'uplog'
}
},
created() {

2
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorage.java

@ -70,5 +70,5 @@ public class GdInstorage extends EntityWithId {
private String colu20; // 不含税成本
private String colv21; // 进项税率
private String orderDate; // 单据日期
private String storeType; // 门店类型
private String supplierCodeUnified; // 供货商编码统一
}

5
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountService.java

@ -26,6 +26,7 @@
package com.yxt.supervise.portal.biz.gdinstorage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yxt.common.core.result.ResultBean;
import org.springframework.stereotype.Service;
/**
@ -43,4 +44,8 @@ import org.springframework.stereotype.Service;
*/
@Service
public class GdInstorageCountService extends ServiceImpl<GdInstorageCountMapper, GdInstorageCount> {
public ResultBean recount() {
ResultBean rb = ResultBean.fireFail();
return rb.success();
}
}

2
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageGd.java

@ -69,4 +69,6 @@ public class GdInstorageGd extends EntityWithId {
private String colt19; // 成本税额
private String colu20; // 不含税成本
private String colv21; // 进项税率
private String orderDate; // 单据日期
private String supplierCodeUnified; // 供货商编码统一
}

32
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLog.java

@ -0,0 +1,32 @@
package com.yxt.supervise.portal.biz.gdinstorage;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.domain.EntityWithId;
import lombok.Data;
import java.util.Date;
@Data
@TableName("gd_instorage_log")
public class GdInstorageLog extends EntityWithId {
public GdInstorageLog() {
}
public GdInstorageLog(String fileFullPath) {
this.fileFullPath = fileFullPath;
}
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date createTime = new Date(); // 记录创建时间/
private String remarks; // 备注说明/
private String fileFullPath; // 文件完整路径/
private String fileUrl; //文件下载地址
private String outFilePath; // 汇总文件路径
// private String outfile; //输出文件名
private int allNum; // 总记录数/
private int validNum; // 有效记录数/
private long durations; // 程序运行时长/
private int errRowNum; // 出错的条数/
}

18
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErr.java

@ -0,0 +1,18 @@
package com.yxt.supervise.portal.biz.gdinstorage;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.EntityWithId;
import lombok.Data;
import java.util.Date;
@Data
@TableName("gd_instorage_log_err")
public class GdInstorageLogErr extends EntityWithId {
private Date createTime = new Date(); // 记录创建时间',
private String remarks; // 备注说明',
private String fileFullPath; // 文件完整路径',
private String errInfo; // 异常信息',
private String rowContent; // 原记录内容',
private int rowNum; // 出错行数',
}

8
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErrMapper.java

@ -0,0 +1,8 @@
package com.yxt.supervise.portal.biz.gdinstorage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface GdInstorageLogErrMapper extends BaseMapper<GdInstorageLogErr> {
}

8
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErrService.java

@ -0,0 +1,8 @@
package com.yxt.supervise.portal.biz.gdinstorage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class GdInstorageLogErrService extends ServiceImpl<GdInstorageLogErrMapper, GdInstorageLogErr> {
}

8
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogMapper.java

@ -0,0 +1,8 @@
package com.yxt.supervise.portal.biz.gdinstorage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface GdInstorageLogMapper extends BaseMapper<GdInstorageLog> {
}

8
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogService.java

@ -0,0 +1,8 @@
package com.yxt.supervise.portal.biz.gdinstorage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class GdInstorageLogService extends ServiceImpl<GdInstorageLogMapper, GdInstorageLog> {
}

19
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageRest.java

@ -26,10 +26,10 @@
package com.yxt.supervise.portal.biz.gdinstorage;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.portal.biz.gdinventory.GdInventoryLog;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
/**
* Project: yxt_supervise <br/>
@ -45,11 +45,14 @@ import org.springframework.web.bind.annotation.RestController;
* @since 1.0
*/
@RestController("com.yxt.supervise.portal.biz.gdinstorage.GdInstorageRest")
@RequestMapping("gdinstorage")
@RequestMapping("/ruku")
public class GdInstorageRest {
@Autowired
private GdInstorageService gdInstorageService;
@Autowired
private GdInstorageCountService gdInstorageCountService;
@GetMapping("/test")
public ResultBean test() {
@ -72,4 +75,12 @@ public class GdInstorageRest {
return ResultBean.fireSuccess();
}
@PostMapping("/uploadRkmxb")
public ResultBean<GdInstorageLog> uploadGdData(@RequestParam("file") MultipartFile file) {
return gdInstorageService.uploadAndInsert(file);
}
@GetMapping("/recount")
public ResultBean recount() {return gdInstorageCountService.recount();}
}

99
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageService.java

@ -26,15 +26,29 @@
package com.yxt.supervise.portal.biz.gdinstorage;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.sax.handler.RowHandler;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.yxt.common.base.config.component.FileUploadComponent;
import com.yxt.common.core.result.FileUploadResult;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.portal.biz.gdinventory.GdInventoryLog;
import com.yxt.supervise.portal.biz.gdinventory.GdInventoryLogErr;
import com.yxt.supervise.portal.biz.gdinventory.GdInventoryOk;
import com.yxt.supervise.portal.biz.gdoutstorage.GdOutstorageGd;
import com.yxt.supervise.portal.biz.supplierindex.SupplierIndexService;
import org.apache.poi.ss.usermodel.CellStyle;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* Project: yxt_supervise <br/>
@ -52,8 +66,14 @@ import java.util.List;
@Service
public class GdInstorageService extends ServiceImpl<GdInstorageMapper, GdInstorage> {
@Autowired
private FileUploadComponent fileUploadComponent;
@Autowired
private GdInstorageGdService gdInstorageGdService;
@Autowired
private GdInstorageLogService gdInstorageLogService;
@Autowired
private SupplierIndexService supplierIndexService;
public void doimp(String filePath) {
long millis = System.currentTimeMillis();
@ -107,4 +127,83 @@ public class GdInstorageService extends ServiceImpl<GdInstorageMapper, GdInstora
gd.setColv21("" + r.get(22)); // 进项税率
return gd;
}
public ResultBean<GdInstorageLog> uploadAndInsert(MultipartFile file) {
ResultBean rb = ResultBean.fireFail();
ResultBean<FileUploadResult> fub = fileUploadComponent.uploadFile(file, "rkmxb");
String filePath = fub.getData().getFilePath();
String fp = fileUploadComponent.getUploadPath() + filePath;
long millis = System.currentTimeMillis();
GdInstorageLog gdlog = new GdInstorageLog(fp);
ExcelUtil.read07BySax(fp, -1, createRowHandler(gdlog));
// System.out.println("用时:" + (System.currentTimeMillis() - millis));
gdlog.setDurations(System.currentTimeMillis() - millis);
gdInstorageLogService.save(gdlog);
return rb.success().setData(gdlog);
}
private RowHandler createRowHandler(GdInstorageLog gdlog) {
return new RowHandler() {
List<GdInstorageGd> toInsertListGd = new ArrayList<>();
List<GdInstorage> toInsertList = new ArrayList<>();
private List<GdInstorageLogErr> errList = new ArrayList<>();
private int x = 0, y = 0, errnum = 0;
private String odate = null;
private String readOrderDate(String orderdate) {
if (StrUtil.isBlank(orderdate))
return "";
return orderdate.substring(0, 10);
}
@Override
public void handle(int sheetIndex, long rowIndex, List<Object> r) {
if (rowIndex > 0) {
String warehouseCode = "" + r.get(1);
GdInstorageGd gd = rowToEntity(r);
if (StrUtil.isBlank(odate)) {
odate = readOrderDate(gd.getCold3());
}
gd.setOrderDate(odate);
String unifiedCode = supplierIndexService.unifiedCode(gd.getColex());
if (StrUtil.isBlank(unifiedCode)) {
gd.setSupplierCodeUnified(gd.getColex());
} else {
gd.setSupplierCodeUnified(unifiedCode);
}
toInsertListGd.add(gd);
if ("112".equals(warehouseCode.trim())) {
GdInstorage gi = new GdInstorage();
BeanUtil.copyProperties(gd, gi);
toInsertList.add(gi);
y++;
}
x++;
}
}
@Override
public void doAfterAllAnalysed() {
if (toInsertListGd != null && !toInsertListGd.isEmpty()) {
gdInstorageGdService.saveBatch(toInsertListGd);
}
if (toInsertList != null && !toInsertList.isEmpty()) {
GdInstorageService.this.saveBatch(toInsertList);
}
gdlog.setAllNum(x);
gdlog.setValidNum(y);
gdlog.setErrRowNum(errnum);
RowHandler.super.doAfterAllAnalysed();
}
};
}
}

1
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryLog.java

@ -24,6 +24,7 @@ public class GdInventoryLog extends EntityWithId {
private String fileFullPath; // 文件完整路径/
private String outFilePath; // 汇总文件路径
// private String outfile; //输出文件名
private String fileUrl; //文件下载地址
private int allNum; // 总记录数/
private int validNum; // 有效记录数/
private long durations; // 程序运行时长/

15
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndex.java

@ -0,0 +1,15 @@
package com.yxt.supervise.portal.biz.supplierindex;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yxt.common.core.domain.EntityWithId;
import lombok.Data;
@Data
@TableName("supplier_index")
public class SupplierIndex extends EntityWithId {
private String code; // 编码
private String name; // 名称
private String codeUnified; // 统一的编码
private String nameUnified; // 统一的名称
private String remarks; // 备注说明
}

8
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndexMapper.java

@ -0,0 +1,8 @@
package com.yxt.supervise.portal.biz.supplierindex;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SupplierIndexMapper extends BaseMapper<SupplierIndex> {
}

30
yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndexService.java

@ -0,0 +1,30 @@
package com.yxt.supervise.portal.biz.supplierindex;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class SupplierIndexService extends ServiceImpl<SupplierIndexMapper, SupplierIndex> {
private static List<SupplierIndex> cacheList = null;
private static Map<String, String> cacheCodeMap = null;
public String unifiedCode(String code) {
if (cacheCodeMap == null)
cacheCodeMap = initCacheCodeMap();
return cacheCodeMap.get(code);
}
private Map<String, String> initCacheCodeMap() {
Map<String, String> map = new HashMap<>();
if (cacheList == null)
cacheList = this.list();
cacheList.forEach(entity -> map.put(entity.getCode(), entity.getCodeUnified()));
return map;
}
}
Loading…
Cancel
Save