diff --git a/base-ui/src/api/kucun/kucun.js b/base-ui/src/api/kucun/kucun.js index d47a2144..9714e462 100644 --- a/base-ui/src/api/kucun/kucun.js +++ b/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 diff --git a/base-ui/src/api/kucun/ruku.js b/base-ui/src/api/kucun/ruku.js new file mode 100644 index 00000000..d47a2144 --- /dev/null +++ b/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 + }) +} diff --git a/base-ui/src/views/kucun/rkmx/index.vue b/base-ui/src/views/kucun/rkmx/index.vue index e0e3a8b6..973b02c8 100644 --- a/base-ui/src/views/kucun/rkmx/index.vue +++ b/base-ui/src/views/kucun/rkmx/index.vue @@ -1,8 +1,46 @@ - - {{ name }} - + + + + 用户管理 + 用户管理 + 配置管理 + + + + + + 入库单上传 + + + 选取文件 + 上传到服务器 + 上传 《库存信息查询.xlsx》文件 + + + + 文件上传结果 + + {{ uploadResultMesssage }} + + + + + @@ -12,7 +50,8 @@ export default { // components: { }, data() { return { - name: '入库明细' + name: '入库明细', + tabActiveName: 'uplog' } }, created() { diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorage.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorage.java index dc2121d3..7be30410 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorage.java +++ b/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; // 供货商编码统一 } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountService.java index e7a02be4..58f8c514 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageCountService.java +++ b/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 { + public ResultBean recount() { + ResultBean rb = ResultBean.fireFail(); + return rb.success(); + } } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageGd.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageGd.java index 82a9b2d2..2e4fc659 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageGd.java +++ b/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; // 供货商编码统一 } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLog.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLog.java new file mode 100644 index 00000000..3f9357e3 --- /dev/null +++ b/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; // 出错的条数/ +} diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErr.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErr.java new file mode 100644 index 00000000..5f73bc18 --- /dev/null +++ b/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; // 出错行数', +} diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErrMapper.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErrMapper.java new file mode 100644 index 00000000..92612841 --- /dev/null +++ b/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 { +} diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErrService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogErrService.java new file mode 100644 index 00000000..afb2bfe5 --- /dev/null +++ b/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 { +} diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogMapper.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogMapper.java new file mode 100644 index 00000000..dbae97cf --- /dev/null +++ b/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 { +} diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageLogService.java new file mode 100644 index 00000000..776dbbb8 --- /dev/null +++ b/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 { +} diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageRest.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageRest.java index 74c82032..6724d92a 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageRest.java +++ b/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 @@ -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 uploadGdData(@RequestParam("file") MultipartFile file) { + return gdInstorageService.uploadAndInsert(file); + } + + @GetMapping("/recount") + public ResultBean recount() {return gdInstorageCountService.recount();} } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageService.java index 42408a26..265b5bff 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinstorage/GdInstorageService.java +++ b/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 @@ -52,8 +66,14 @@ import java.util.List; @Service public class GdInstorageService extends ServiceImpl { + @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 uploadAndInsert(MultipartFile file) { + ResultBean rb = ResultBean.fireFail(); + + ResultBean 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 toInsertListGd = new ArrayList<>(); + List toInsertList = new ArrayList<>(); + private List 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 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(); + } + }; + } } diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryLog.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryLog.java index b2b9cc65..f98fb360 100644 --- a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/gdinventory/GdInventoryLog.java +++ b/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; // 程序运行时长/ diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndex.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndex.java new file mode 100644 index 00000000..e504373d --- /dev/null +++ b/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; // 备注说明 +} diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndexMapper.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndexMapper.java new file mode 100644 index 00000000..6999ae04 --- /dev/null +++ b/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 { +} diff --git a/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndexService.java b/yxt_supervise/supervise-portal/supervise-portal-biz/src/main/java/com/yxt/supervise/portal/biz/supplierindex/SupplierIndexService.java new file mode 100644 index 00000000..38242c51 --- /dev/null +++ b/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 { + + private static List cacheList = null; + private static Map cacheCodeMap = null; + + public String unifiedCode(String code) { + if (cacheCodeMap == null) + cacheCodeMap = initCacheCodeMap(); + return cacheCodeMap.get(code); + } + + private Map initCacheCodeMap() { + Map map = new HashMap<>(); + if (cacheList == null) + cacheList = this.list(); + cacheList.forEach(entity -> map.put(entity.getCode(), entity.getCodeUnified())); + return map; + } + +}