1.调整订货清单导入逻辑

master
董哲奇 6 months ago
parent 9803a552ad
commit 028c03fd73

@ -0,0 +1,43 @@
package com.dsic.gj_erp;
import cn.hutool.core.util.StrUtil;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;
public class ExcelMergedCellRead {
public static void main(String[] args) throws IOException {
String fileName="E:\\订货清单.xls";
FileInputStream fileInputStream = new FileInputStream(fileName);
Workbook workbook = WorkbookFactory.create(fileInputStream);
Sheet sheet = workbook.getSheetAt(0);
// 获取合并单元格的信息
List<CellRangeAddress> mergedRegions = sheet.getMergedRegions();
for (int i = 0; i < mergedRegions.size(); i++) {
CellRangeAddress cellRangeAddress = mergedRegions.get(i);
// 获取合并单元格的起始行号、结束行号、起始列号、结束列号
int firstRow = cellRangeAddress.getFirstRow();
int lastRow = cellRangeAddress.getLastRow();
int firstCol = cellRangeAddress.getFirstColumn();
int lastCol = cellRangeAddress.getLastColumn();
// 获取合并单元格的值
Row row = sheet.getRow(firstRow);
Cell cell = row.getCell(firstCol);
try {
String mergedCellValue = cell.getStringCellValue();
System.out.println(StrUtil.format("合并单元格的值: {},位于第{}个", mergedCellValue,i));
}catch (Exception ignored){}
}
fileInputStream.close();
}
}

@ -10,6 +10,7 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
@ -42,40 +43,40 @@ public class DmDhqdp implements Serializable {
private String wpxh;
@ApiModelProperty(value = "厚度mm")
private Double thickness;
private BigDecimal thickness;
@ApiModelProperty(value = "宽度mm")
private Double width;
private BigDecimal width;
@ApiModelProperty(value = "长度mm")
private Double length;
private BigDecimal length;
@ApiModelProperty(value = "重量吨/张")
private Double weight;
private BigDecimal weight;
@ApiModelProperty(value = "设计数量张")
private Double sjsl;
private BigDecimal sjsl;
@ApiModelProperty(value = "裕量张")
private Double yl;
private BigDecimal yl;
@ApiModelProperty(value = "总数量张")
private Double zsl;
private BigDecimal zsl;
@ApiModelProperty(value = "总重量吨")
private Double zzl;
private BigDecimal zzl;
@ApiModelProperty(value = "利库数量张")
private Double lksl;
private BigDecimal lksl;
@ApiModelProperty(value = "利库重量吨")
private Double lkzl;
private BigDecimal lkzl;
@ApiModelProperty(value = "实订数量张")
private Double sdzs;
private BigDecimal sdzs;
@ApiModelProperty(value = "实订重量吨")
private Double sdzl;
private BigDecimal sdzl;
@ApiModelProperty(value = "备注")
private String bz;
@ -88,5 +89,10 @@ public class DmDhqdp implements Serializable {
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
private String plzlsl;//批量组立数量
private String kdzlsl;//跨道组立数量
private String ptybsl;//平铁用板数量
@TableField(exist = false)
private String xh;//序号列用于去除合计行
}

@ -2,6 +2,8 @@ package com.dsic.gj_erp.service.jhgk.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.fastjson.JSONObject;
@ -12,14 +14,19 @@ import com.dsic.gj_erp.mapper.jhgk.DmDhqdpMapper;
import com.dsic.gj_erp.service.jhgk.DmDhqdpService;
import com.google.common.collect.Maps;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* <p>
@ -43,18 +50,116 @@ public class DmDhqdpServiceImpl extends ServiceImpl<DmDhqdpMapper, DmDhqdp> impl
if (StringUtils.isNotEmpty(json.getString("Zt"))) {
queryWrapper.eq("ZT", json.getString("Zt"));
}
List<DmDhqdp> dmDhqdps=dmDhqdpMapper.selectList(queryWrapper);
return dmDhqdps;
queryWrapper.orderByAsc("wpxh");
return dmDhqdpMapper.selectList(queryWrapper);
}
@Override
@Transactional
public List<DmDhqdp> save(List<DmDhqdp> dmDhqdps) {
saveBatch(dmDhqdps);
return dmDhqdps;
}
@Override
@Transactional
public List<DmDhqdp> upload(MultipartFile file, HttpServletRequest req) throws IOException {
Workbook workbook = WorkbookFactory.create(file.getInputStream());
Sheet sheet = workbook.getSheetAt(0);
List<CellRangeAddress> mergedRegions = sheet.getMergedRegions();
if (mergedRegions.size() > 74) {
String ddh = null;
String dcch = null;
String qc = null;
CellRangeAddress ddhAddr = mergedRegions.get(68);
if (ddhAddr != null) {
ddh = this.getMergedData(sheet, ddhAddr);
}
CellRangeAddress chAddr = mergedRegions.get(74);
if (chAddr != null) {
dcch = this.getMergedData(sheet, chAddr);
}
CellRangeAddress qcAddr = mergedRegions.get(75);
if (qcAddr != null) {
qc = this.getMergedData(sheet, qcAddr);
qc=StrUtil.subBetween(qc, "", "");
}
if (StrUtil.isAllNotEmpty(dcch, ddh)) {
List<DmDhqdp> list = new ArrayList<>();
List<DmDhqdp> dmDhqdps = this.readExcel(file, dcch, ddh, qc, 1, req);
List<DmDhqdp> dmDhqdps1 = this.readExcel(file, dcch, ddh, qc, 2, req);
if (ObjUtil.isNotEmpty(dmDhqdps)) {
list.addAll(dmDhqdps);
}
if (ObjUtil.isNotEmpty(dmDhqdps1)) {
list.addAll(dmDhqdps1);
}
this.saveBatch(list.stream().filter(item->StrUtil.isNotEmpty(item.getDcCh())).collect(Collectors.toList()));
return list;
}
}
return null;
}
private String getMergedData(Sheet sheet, CellRangeAddress addr) {
int firstRow = addr.getFirstRow();
int firstCol = addr.getFirstColumn();
Row row = sheet.getRow(firstRow);
Cell cell = row.getCell(firstCol);
try {
return cell.getStringCellValue();
} catch (Exception ignored) {
}
return null;
}
@Transactional
public List<DmDhqdp> readExcel(MultipartFile file, String dcch, String ddh, String qc, int sheet, HttpServletRequest req) throws IOException {
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
Map<String, String> alias = Maps.newLinkedHashMap();
alias.put("序号\nNo.", "xh");
alias.put("材质\nMATERIAL", "wpxh");
alias.put("厚度\r\nTHICK.\nmm", "thickness");
alias.put("宽度\r\nWIDTH\nmm", "width");
alias.put("长度\r\nLENGTH\nmm", "length");
alias.put("重量\r\n吨/张\nWEIGHT\nTON/PIECE\r", "weight");
alias.put("设计数量\n张\nDESIGN\nPIECE", "sjsl");
alias.put("裕量\n张\nMARGIN\nPIECE", "yl");
alias.put("总数量\n张\nTOTAL\nPIECE", "zsl");
alias.put("总重量\n吨\nTOTAL\nTON ", "zzl");
alias.put("利库数量\n张\nSTORE\nPIECE", "lksl");
alias.put("利库重量\n吨\nSTORE\nTON", "lkzl");
alias.put("实订数量\n张\nORDER\nPIECE", "sdzs");
alias.put("实订重量\n吨\nORDER\nTON", "sdzl");
alias.put("备注\nNOTE", "bz");
alias.put("批量组立数量", "plzlsl");
alias.put("跨道组立数量", "kdzlsl");
alias.put("平铁用板数量", "ptybsl");
reader.setHeaderAlias(alias);
reader.setSheet(sheet);
List<DmDhqdp> dmDhqdps = reader.read(1, 2, DmDhqdp.class);
String day = DateUtil.format(DateUtil.date(), "yyyy/MM/dd");
String user = (String) req.getAttribute("yhms");
this.remove(new QueryWrapper<DmDhqdp>().eq("Dc_ch", dcch)
.eq("qdh", ddh)
.eq("qc", qc));
dmDhqdps.stream().filter(item->StrUtil.isNotEmpty(item.getXh())&&!item.getXh().contains("合计"))
.forEach(l -> {
l.setDcCh(dcch);
l.setQdh(ddh);
l.setQc(qc);
l.setDrr(user);
l.setDrrq(day);
});
return dmDhqdps;
}
@Transactional
public List<DmDhqdp> upload1(MultipartFile file, HttpServletRequest req) throws IOException {
ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
Map<String, String> alias = Maps.newLinkedHashMap();
alias.put("船号", "dcCh");
@ -127,6 +232,7 @@ public class DmDhqdpServiceImpl extends ServiceImpl<DmDhqdpMapper, DmDhqdp> impl
}
@Override
@Transactional
public void sh(List<DmDhqdp> dmDhqdps) {
dmDhqdps.forEach(dmZrcjh -> {
dmZrcjh.setZt("2");
@ -135,6 +241,7 @@ public class DmDhqdpServiceImpl extends ServiceImpl<DmDhqdpMapper, DmDhqdp> impl
}
@Override
@Transactional
public void tj(List<DmDhqdp> dmXbjhs) {
dmXbjhs.forEach(dmZrcjh -> {
String zt = dmZrcjh.getZt();

@ -22,8 +22,8 @@ spring.servlet.multipart.enabled = true
server.port=8081
spring.datasource.master.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.datasource.master.url=jdbc:sqlserver://192.127.0.3:1433;DatabaseName=GJ_ERP_java
spring.datasource.master.jdbc-url=jdbc:sqlserver://192.127.0.3:1433;DatabaseName=GJ_ERP_java
spring.datasource.master.url=jdbc:sqlserver://192.127.0.3:1433;DatabaseName=GJ_ERP
spring.datasource.master.jdbc-url=jdbc:sqlserver://192.127.0.3:1433;DatabaseName=GJ_ERP
spring.datasource.master.username=sa
spring.datasource.master.password=gjerp
spring.datasource.master.initialize=true

Loading…
Cancel
Save