Commit d6b2d97c sunke

哈曼出入库日志导出

1 个父辈 84015f9c
......@@ -62,6 +62,17 @@ public abstract class AbstractBaseDao implements IBaseDao {
}
@Override
public <T extends BasePo> T findOneByCondition(String key, String value) {
return findOneByCondition(new String[]{key}, new String[]{value});
}
@Override
public <T extends BasePo> List<T> findListByCondition(String key, String value) {
return findListByCondition(new String[]{key},new String[]{value});
}
@Override
public <T extends BasePo> T findOneByCondition(String[] keys, String[] values) {
if (keys.length != values.length || keys.length == 0) {
return null;
......@@ -75,6 +86,7 @@ public abstract class AbstractBaseDao implements IBaseDao {
return (T) getMongoTemplate().findOne(query, getEntityClass());
}
@Override
public <T extends BasePo> List<T> findListByCondition(String[] keys, String[] values) {
if (keys.length != values.length || keys.length == 0) {
return null;
......
......@@ -21,6 +21,10 @@ public interface IBaseDao {
<T extends BasePo> T findOne(Query query);
<T extends BasePo> T findOneByCondition(String key, String value);
<T extends BasePo> List<T> findListByCondition(String key, String value);
public <T extends BasePo> T findOneByCondition(String[] keys, String[] values);
public <T extends BasePo> List<T> findListByCondition(String[] keys, String[] values);
......
......@@ -97,12 +97,30 @@ public class DateUtil {
/**
* 获取距离今天dayFromToday 天的不带时间的日期(今天是0,昨天是-1,明天是1)
*/
public static Date getNoTimeFromToday(int dayFromToday){
public static Date addDaysFromToday(int dayFromToday){
Calendar c = noTimeCalendar();
c.add(Calendar.DAY_OF_YEAR, dayFromToday);
return c.getTime();
}
/**
* 获取距离今天monthFromToday 月的不带时间的日期
*/
public static Date addMonthsFromToday(int monthFromToday){
Calendar c = noTimeCalendar();
c.add(Calendar.MONTH, monthFromToday);
return c.getTime();
}
/**
* 获取距离今天yearFromToday 年的不带时间的日期
*/
public static Date addYearsFromToday(int yearFromToday){
Calendar c = noTimeCalendar();
c.add(Calendar.YEAR, yearFromToday);
return c.getTime();
}
private static Calendar noTimeCalendar(){
Calendar c = Calendar.getInstance();
c.set(Calendar.HOUR, 0);
......
......@@ -242,11 +242,22 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
if(pageable != null){
page.withSort(pageable.getSort());
}
//Excel一个Sheet允许最大行数为1048575
int totalCount = 0;
int currentSheet = 1;
while (true){
List<List<Object>> data = excelDownLoad.getPageData(query,page);
if(data == null || data.isEmpty()){
log.info("导出完成,共有["+totalCount+"]条数据");
break;
}
totalCount = totalCount + data.size();
int sheetIndex = totalCount/1000000 + 1;
if(sheetIndex != currentSheet){
log.info("Sheet"+currentSheet+"已写入[" + totalCount + "]行数据,开始写入到Sheet"+sheetIndex);
currentSheet = sheetIndex;
writeSheet = EasyExcel.writerSheet("Sheet"+ sheetIndex).build();
}
excelWriter.write(data, writeSheet);
page = page.next();
}
......
......@@ -11,7 +11,10 @@ import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.language.service.nanager.ILanguageMsgManager;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto;
import com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper;
import com.neotel.smfcore.core.system.rest.bean.query.TaskQueryCondition;
......@@ -42,9 +45,7 @@ import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.*;
@Slf4j
......@@ -55,6 +56,9 @@ import java.util.Set;
public class TaskController {
@Autowired
ILanguageMsgManager languageMsgManager;
@Autowired
private TaskService taskService;
@Autowired
......@@ -106,56 +110,58 @@ public class TaskController {
@PreAuthorize("@el.check('taskLog')")
public void download(HttpServletResponse response, TaskQueryCondition criteria, Pageable pageable, HttpServletRequest request) throws IOException {
Query query = getQuery(criteria);
//dataLogManager.download(query, pageable, response,request.getLocale());
// FileUtil.downloadExcel(query, pageable, response, new IExcelDownLoad() {
// @Override
// public List<List<String>> getHeader() {
// List<List<String>> header = new ArrayList<>();
// header.add(Lists.newArrayList("类型"));
// header.add(Lists.newArrayList("单号"));
// header.add(Lists.newArrayList("料仓名称"));
// header.add(Lists.newArrayList("条码编号"));
// header.add(Lists.newArrayList("料件编号"));
// header.add(Lists.newArrayList("批次"));
// header.add(Lists.newArrayList("数量"));
// header.add(Lists.newArrayList("用户"));
//
// header.add(Lists.newArrayList("供应商"));
// header.add(Lists.newArrayList("来源二"));
// header.add(Lists.newArrayList("状态"));
// header.add(Lists.newArrayList("更新时间"));
// return header;
// }
//
// @Override
// public List<List<Object>> getPageData(Query query, Pageable pageable) {
// List<List<Object>> dataList = new ArrayList<>();
// List<DataLog> dataLogList = dataLogManager.findByQuery(query, pageable);
// DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// for (DataLog dataLog : dataLogList) {
// List<Object> data = new ArrayList<>();
//
// data.add(dataLog.getDetailTypeStr());//"类型"
// data.add(dataLog.getSourceName());//"单号"
// data.add(dataLog.getPosName());//"料仓名称"
// data.add(dataLog.getBarcode());//"条码编号"
// data.add(dataLog.getPartNumber());//"料件编号"
// data.add(dataLog.getBatchInfo());//"批次"
// data.add(dataLog.getReelQty());//"数量"
// data.add(dataLog.getOperator());//"用户"
//
// data.add(dataLog.getProvider());//"供应商"
// data.add(dataLog.getSubSourceInfo());//"来源二"
// data.add(dataLog.getStatusStr());//"状态"
// String updateTimeStr = dateFormat.format(dataLog.getUpdateDate());
// data.add(updateTimeStr);//"更新时间"
// dataList.add(data);
// }
// return dataList;
// }
// });
Locale locale = request.getLocale();
log.info("开始导出出入库日志");
FileUtil.downloadExcel(query, pageable, response, new IExcelDownLoad() {
@Override
public List<List<String>> getHeader() {
List<List<String>> header = new ArrayList<>();
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.barcode",locale,"条码编号")));
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.partNumber",locale,"料件编号")));
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.posName",locale,"料仓名称")));
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.amount",locale,"数量")));
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.type",locale,"类型")));
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.orderSource",locale,"来源")));
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.status",locale,"状态")));
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.operator",locale,"操作人")));
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.createDate",locale,"创建时间")));
header.add(Lists.newArrayList(MessageUtils.getSmfClientMsg("smfclient.NeoLight.updateDate",locale,"更新时间")));
return header;
}
@Override
public List<List<Object>> getPageData(Query query, Pageable pageable) {
List<List<Object>> dataList = new ArrayList<>();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<DataLog> dataLogs = dataLogManager.findByQuery(query,pageable);
for (DataLog dataLog : dataLogs) {
String createDate = dateFormat.format(dataLog.getCreateDate());
String updateDate = dateFormat.format(dataLog.getUpdateDate());
List<Object> data = new ArrayList<>();
data.add(dataLog.getBarcode());
data.add(dataLog.getPartNumber());
data.add(dataLog.getPosName() + " " + dataLog.getStorageName());
data.add(dataLog.getNum());
String typeKey = "NeoLight.logType." + dataLog.getType();
String typeMsg = MessageUtils.getSmfClientMsg(typeKey,locale,typeKey);
data.add(typeMsg);
data.add(dataLog.getSourceName());
String status = dataLog.getStatus().toLowerCase();
String statusKey = "NeoLight.logStatus." + status;
String statusMsg = MessageUtils.getSmfClientMsg(statusKey,locale,statusKey);
data.add(statusMsg);
data.add(dataLog.getOperator());
data.add(createDate);
data.add(updateDate);
dataList.add(data);
}
return dataList;
}
});
log.info("出入库日志导出完成");
}
@ApiOperation("获取某个分组队列中的任务")
......
......@@ -3,11 +3,15 @@ package com.neotel.smfcore.core.system.service.manager;
import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.micron20031.bean.SpDailyLog;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import java.util.Date;
import java.util.List;
public interface IDataLogManager extends IBaseManager<DataLog> {
List<DataLog> findByQuery(Query query, Pageable pageable);
List<DataLog> findUnFinishedTasks();
List<SpDailyLog> getSpDailyLogs(Date start, Date end, String inoutType);
......
......@@ -47,6 +47,11 @@ public class DataLogManagerImpl implements IDataLogManager {
}
@Override
public List<DataLog> findByQuery(Query query, Pageable pageable) {
return dataLogDao.findByQuery(query, pageable);
}
@Override
public List<DataLog> findByQuery(Query query) {
return dataLogDao.findByQuery(query);
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!