1.线表增加版本号比对数据获取功能,数据显示暂未实现

master
董哲奇 6 months ago
parent 99f4fdfe24
commit 0c0e1725a6

@ -1,6 +1,9 @@
package com.dsic.gj_erp.controller.jhgk; package com.dsic.gj_erp.controller.jhgk;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.dsic.gj_erp.bean.ResultBean; import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmXbjh; import com.dsic.gj_erp.bean.jhgk.DmXbjh;
@ -11,7 +14,10 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -44,6 +50,16 @@ public class DmXbjhController {
return new ResultBean(dmXbjhs); return new ResultBean(dmXbjhs);
} }
@GetMapping("getVersion")
public ResultBean<?> getVersion(String nf){
return new ResultBean<>(dmXbjhService.getVersion(nf));
}
@GetMapping("getByVersion")
public ResultBean<?> getByVersion(String nf,String version){
return new ResultBean<>(dmXbjhService.getByVersion(nf,version));
}
@ApiOperation(value = "批量保存") @ApiOperation(value = "批量保存")
@PostMapping(value = "/save") @PostMapping(value = "/save")
public ResultBean save(@RequestBody JSONObject dmXbjhs) { public ResultBean save(@RequestBody JSONObject dmXbjhs) {
@ -57,5 +73,6 @@ public class DmXbjhController {
dmXbjhService.tj(dmXbjhs); dmXbjhService.tj(dmXbjhs);
return new ResultBean(); return new ResultBean();
} }
} }

@ -6,6 +6,8 @@ import com.dsic.gj_erp.bean.jhgk.DmXbjh;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -25,4 +27,8 @@ public interface DmXbjhService extends IService<DmXbjh> {
void save(JSONObject dmXbjhs); void save(JSONObject dmXbjhs);
void tj(List<DmXbjh> dmXbjhs); void tj(List<DmXbjh> dmXbjhs);
List<HashMap<String, Object>> getVersion(String nf);
Map<String, List<DmXbjh>> getByVersion(String startTime, String _version);
} }

@ -3,7 +3,6 @@ package com.dsic.gj_erp.service.jhgk.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
@ -48,6 +47,7 @@ public class DmXbjhServiceImpl extends ServiceImpl<DmXbjhMapper, DmXbjh> impleme
@Override @Override
public Map<String, List<DmXbjh>> getList(JSONObject json) { public Map<String, List<DmXbjh>> getList(JSONObject json) {
QueryWrapper<DmXbjh> queryWrapper = new QueryWrapper<>(); QueryWrapper<DmXbjh> queryWrapper = new QueryWrapper<>();
if (StringUtils.isNotEmpty(json.getString("dcCh"))) { if (StringUtils.isNotEmpty(json.getString("dcCh"))) {
queryWrapper.eq("dc_ch", json.getString("dcCh")); queryWrapper.eq("dc_ch", json.getString("dcCh"));
@ -55,6 +55,7 @@ public class DmXbjhServiceImpl extends ServiceImpl<DmXbjhMapper, DmXbjh> impleme
if (StringUtils.isNotEmpty(json.getString("Zt"))) { if (StringUtils.isNotEmpty(json.getString("Zt"))) {
queryWrapper.eq("zt", json.getString("Zt")); queryWrapper.eq("zt", json.getString("Zt"));
} }
if (StringUtils.isNotEmpty(json.getString("nf"))) { if (StringUtils.isNotEmpty(json.getString("nf"))) {
String nf = json.getString("nf"); String nf = json.getString("nf");
String startTime = nf.split("~")[0]; String startTime = nf.split("~")[0];
@ -77,6 +78,64 @@ public class DmXbjhServiceImpl extends ServiceImpl<DmXbjhMapper, DmXbjh> impleme
return collect; return collect;
} }
public Map<String, List<DmXbjh>> getByVersion(String startTime,String _version){
List<HashMap<String, Object>> version = this.getVersion(startTime);
if (ObjectUtil.isNotEmpty(version)&&!version.get(version.size()-1).get("version").equals(_version)) {
List<DmXbjh> dmXbjhs = new ArrayList<>();
for (HashMap<String, Object> map : version) {
if (map.get("version").equals(_version)) {
String fileName = (String) map.get("fileName");
File file = FileUtil.file(xbjhPath, fileName);
if (file.exists()) {
JSONObject jsonObject = this.readFile(file);
for (String key : jsonObject.keySet()) {
JSONArray jsonArray = jsonObject.getJSONArray(key);
for (Object object : jsonArray) {
DmXbjh dmXbjh = modelMapper.map(object, DmXbjh.class);
dmXbjh.setDcCh(key);
dmXbjhs.add(dmXbjh);
}
}
}
}
}
Map<String, List<DmXbjh>> map = dmXbjhs.stream()
.collect(Collectors.groupingBy(DmXbjh::getDcCh));
//对map的value进行排序并返回降序以后的map集合
LinkedHashMap<String, List<DmXbjh>> collect = map.entrySet().stream().sorted((entry1, entry2) -> {
Double zl1 = entry1.getValue().stream().filter(l -> ObjectUtil.isNotEmpty(l.getZl())).mapToDouble(DmXbjh::getZl).sum();
Double zl2 = entry2.getValue().stream().filter(l -> ObjectUtil.isNotEmpty(l.getZl())).mapToDouble(DmXbjh::getZl).sum();
//降序排序
return zl2.compareTo(zl1);
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
return collect;
}
return null;
}
public List<HashMap<String, Object>> getVersion(String nf){
if (nf==null){
return null;
}
File[] files = FileUtil.ls(xbjhPath);
List<HashMap<String, Object>> versions = new ArrayList<>();
for (File file : files) {
String name = FileUtil.getPrefix(file.getName());
String[] s = name.split("_");
if (nf.equals(s[0])){
HashMap<String, Object> map = new HashMap<>();
map.put("fileName", file.getName());
map.put("version", s[1]);
versions.add(map);
}
}
return versions;
}
public JSONObject readFile(File file){
return ExcelUtil.readDmXbjh(file);
}
@Override @Override
@Transactional @Transactional

@ -1,5 +1,6 @@
package com.dsic.gj_erp.util; package com.dsic.gj_erp.util;
import cn.hutool.core.io.FileUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
@ -9,6 +10,7 @@ import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@ -187,49 +189,66 @@ public class ExcelUtil {
public static JSONObject readDmXbjh(MultipartFile file) { public static JSONObject readDmXbjh(MultipartFile file) {
try { try {
Workbook workbook=isWorkBook(file); Workbook workbook=isWorkBook(file);
// 获取第一张表 return read(workbook);
Sheet sheet = workbook.getSheetAt(0); } catch (IOException e) {
Row monthRow=sheet.getRow(2); throw new RuntimeException(e);
Map<Integer,String> monthMap=new HashMap<>(); }
for (int index = 0; index < monthRow.getPhysicalNumberOfCells(); index++){
Cell cell = monthRow.getCell(index); }
// 转换为字符串类型
cell.setCellType(CellType.STRING); public static JSONObject readDmXbjh(File file) {
monthMap.put(index,cell.toString()); try {
Workbook workbook=isWorkBook(file);
return read(workbook);
} catch (Exception e) {
return null;
}
}
private static JSONObject read(Workbook workbook){
// 获取第一张表
Sheet sheet = workbook.getSheetAt(0);
Row monthRow=sheet.getRow(2);
Map<Integer,String> monthMap=new HashMap<>();
for (int index = 0; index < monthRow.getPhysicalNumberOfCells(); index++){
Cell cell = monthRow.getCell(index);
// 转换为字符串类型
cell.setCellType(CellType.STRING);
monthMap.put(index,cell.toString());
}
// String year="";
// List<Map<String,Object>> mapList=new ArrayList<>();
// List<DmXbjh> dmXbjhs=new ArrayList<>();
JSONObject jsonObject=new JSONObject();
for (int i = 3; i < sheet.getPhysicalNumberOfRows(); i++) {
Row row = sheet.getRow(i);
String dcch=row.getCell(0).toString();
if (dcch.contains("待接")||dcch.contains("已接")||dcch.contains("合计")){
break;
} }
// String year="";
// List<Map<String,Object>> mapList=new ArrayList<>();
// List<DmXbjh> dmXbjhs=new ArrayList<>();
JSONObject jsonObject=new JSONObject();
for (int i = 3; i < sheet.getPhysicalNumberOfRows(); i++) {
Row row = sheet.getRow(i);
String dcch=row.getCell(0).toString();
if (dcch.contains("待接")||dcch.contains("已接")||dcch.contains("合计")){
break;
}
// Map<String,Object> map=new HashMap<>(); // Map<String,Object> map=new HashMap<>();
// map.put("dcCh",dcch); // map.put("dcCh",dcch);
List<Map> mapList=new ArrayList<>(); List<Map> mapList=new ArrayList<>();
for (int index = 1; index < row.getPhysicalNumberOfCells(); index++) { for (int index = 1; index < row.getPhysicalNumberOfCells(); index++) {
Cell cell = row.getCell(index); Cell cell = row.getCell(index);
cell.setCellType(CellType.STRING); cell.setCellType(CellType.STRING);
String month=monthMap.get(index); String month=monthMap.get(index);
if (month.contains("计")){ if (month.contains("计")){
continue; continue;
} }
String cl=cell+""; String cl=cell+"";
String year=getMergedRegionValue(sheet,1,index).toString(); String year=getMergedRegionValue(sheet,1,index).toString();
// DmXbjh dmXbjh=new DmXbjh(); // DmXbjh dmXbjh=new DmXbjh();
Map map=new HashMap(); Map map=new HashMap();
map.put("zt","0"); map.put("zt","0");
map.put("nf",year.replace("年","")); map.put("nf",year.replace("年",""));
map.put("yf",String.format("%02d", Integer.parseInt(month.replace("月","")))); map.put("yf",String.format("%02d", Integer.parseInt(month.replace("月",""))));
if (StringUtils.isNotEmpty(cl)){ if (StringUtils.isNotEmpty(cl)){
map.put("zl",Double.parseDouble(cl)); map.put("zl",Double.parseDouble(cl));
}else { }else {
map.put("zl",0.0); map.put("zl",0.0);
} }
// dmXbjh.setZt("0"); // dmXbjh.setZt("0");
// dmXbjh.setNf(year.replace("年","")); // dmXbjh.setNf(year.replace("年",""));
// dmXbjh.setYf(String.format("%02d", Integer.parseInt(month.replace("月","")))); // dmXbjh.setYf(String.format("%02d", Integer.parseInt(month.replace("月",""))));
@ -241,20 +260,14 @@ public class ExcelUtil {
// dmXbjh.setDcCh(dcch); // dmXbjh.setDcCh(dcch);
// dmXbjhs.add(dmXbjh); // dmXbjhs.add(dmXbjh);
mapList.add(map); mapList.add(map);
// map.put("cl"+year.replace("年","")+String.format("%02d", Integer.parseInt(month.replace("月",""))),cl); // map.put("cl"+year.replace("年","")+String.format("%02d", Integer.parseInt(month.replace("月",""))),cl);
}
// mapList.add(map);
jsonObject.put(dcch,mapList);
} }
return jsonObject; // mapList.add(map);
// return mapList; jsonObject.put(dcch,mapList);
// return dmXbjhs;
} catch (Exception e) {
e.printStackTrace();
return null;
} }
return jsonObject;
} }
public static String date(String strDate){ public static String date(String strDate){
@ -300,6 +313,20 @@ public class ExcelUtil {
} }
return workbook; return workbook;
} }
public static Workbook isWorkBook(File file) throws IOException {
Workbook workbook;// = new XSSFWorkbook(inputStream);
// 截取路径名 . 后面的后缀名判断是xls还是xlsx
// 如果这个判断不对就把equals换成 equalsIgnoreCase()
Pattern pattern = Pattern.compile(".*\\.xls");
Matcher matcher = pattern.matcher(FileUtil.getSuffix(file.getName()));
if (matcher.matches()){
workbook = new HSSFWorkbook(FileUtil.getInputStream(file));
}else{
workbook = new XSSFWorkbook(FileUtil.getInputStream(file));
}
return workbook;
}
/** /**
* *
* @param sheet * @param sheet

Loading…
Cancel
Save