Commit e72e0052 sunke

工单出库挑料逻辑修改

1 个父辈 c80451cc
package com.neotel.smfcore.common.base;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import java.util.List;
public interface IExcelDownLoad {
List<List<String>> getHeader();
List<List<Object>> getPageData(Query query, Pageable pageable);
}
...@@ -19,6 +19,10 @@ import cn.hutool.core.io.IoUtil; ...@@ -19,6 +19,10 @@ import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.poi.excel.BigExcelWriter; import cn.hutool.poi.excel.BigExcelWriter;
import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.neotel.smfcore.common.base.IExcelDownLoad;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.core.language.util.MessageUtils; import com.neotel.smfcore.core.language.util.MessageUtils;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -26,6 +30,9 @@ import org.apache.poi.util.IOUtils; ...@@ -26,6 +30,9 @@ import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.streaming.SXSSFSheet; import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.servlet.ServletOutputStream; import javax.servlet.ServletOutputStream;
...@@ -36,6 +43,7 @@ import java.net.URLEncoder; ...@@ -36,6 +43,7 @@ import java.net.URLEncoder;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
...@@ -209,6 +217,35 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { ...@@ -209,6 +217,35 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
return null; return null;
} }
public static void downloadExcel(Query query, Pageable pageable, HttpServletResponse response, IExcelDownLoad excelDownLoad) throws IOException {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
//String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");
String fileName = SYS_TEM_DIR + IdUtil.fastSimpleUUID() + ".xlsx";
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
// 这里 需要指定写用哪个class去写
try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).head(excelDownLoad.getHeader()).build()) {
// 这里注意 如果同一个sheet只要创建一次
WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
// 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来
PageRequest page = PageRequest.ofSize(10000);
if(pageable != null){
page.withSort(pageable.getSort());
}
while (true){
List<List<Object>> data = excelDownLoad.getPageData(query,page);
if(data == null || data.isEmpty()){
break;
}
excelWriter.write(data, writeSheet);
page = page.next();
}
}
}
/** /**
* 导出excel * 导出excel
*/ */
......
...@@ -316,10 +316,9 @@ public class StoragePosController { ...@@ -316,10 +316,9 @@ public class StoragePosController {
@ApiOperation("导出查找出库列表") @ApiOperation("导出查找出库列表")
@GetMapping(value = "/find/download") @GetMapping(value = "/find/download")
@PreAuthorize("@el.check('checkOut')") @PreAuthorize("@el.check('checkOut')")
public void download(HttpServletResponse response, StoragePosFindCriteria criteria,HttpServletRequest request) throws IOException { public void download(HttpServletResponse response, StoragePosFindCriteria criteria,Pageable pageable, HttpServletRequest request) throws IOException {
Query query=getPosFindCriteria(criteria); Query query=getPosFindCriteria(criteria);
List<StoragePos> storagePos = storagePosManager.findByQuery(query ); storagePosManager.download(query,pageable,response,request.getLocale());
storagePosManager.download(storagePos, response,request.getLocale());
} }
//UID出库 //UID出库
@ApiOperation("查找出库列表") @ApiOperation("查找出库列表")
......
...@@ -8,6 +8,8 @@ import com.neotel.smfcore.core.storage.bean.InventoryItem; ...@@ -8,6 +8,8 @@ import com.neotel.smfcore.core.storage.bean.InventoryItem;
import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE; import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
...@@ -59,7 +61,7 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> { ...@@ -59,7 +61,7 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
public void updateBarcodeMsd(String pn,String msl,String thickness); public void updateBarcodeMsd(String pn,String msl,String thickness);
void download(List<StoragePos> storagePos, HttpServletResponse response, Locale locale) throws IOException; void download(Query query, Pageable pageable, HttpServletResponse response, Locale locale) throws IOException;
List<StoragePos> findPosList(String storageId, List<String> posNames); List<StoragePos> findPosList(String storageId, List<String> posNames);
......
...@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import com.neotel.smfcore.common.base.IExcelDownLoad;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.DateUtil; import com.neotel.smfcore.common.utils.DateUtil;
...@@ -495,41 +496,63 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -495,41 +496,63 @@ public class StoragePosManagerImpl implements IStoragePosManager {
} }
@Override @Override
public void download(List<StoragePos> storagePos, HttpServletResponse response,Locale locale) throws IOException { public void download(Query query, Pageable pageable, HttpServletResponse response,Locale locale) throws IOException {
FileUtil.downloadExcel(query,pageable,response, new IExcelDownLoad() {
String barcodeStr= MessageUtils.getText("smfcore.storagePos.barcode",locale,"条码编号"); @Override
String partNumberStr= MessageUtils.getText("smfcore.storagePos.partNumber",locale,"物料编号"); public List<List<String>> getHeader() {
String proDateStr= MessageUtils.getText("smfcore.storagePos.proDate",locale,"生产日期"); String barcodeStr= MessageUtils.getText("smfcore.storagePos.barcode",locale,"条码编号");
String expireDateStr= MessageUtils.getText("smfcore.storagePos.expireDate",locale,"过期时间"); String partNumberStr= MessageUtils.getText("smfcore.storagePos.partNumber",locale,"物料编号");
String posNameStr= MessageUtils.getText("smfcore.storagePos.posName",locale,"库位号"); String providerStr= MessageUtils.getText("smfcore.barcode.provider",locale,"供应商");
String lockNameStr= MessageUtils.getText("smfcore.storagePos.lockName",locale,"工单号"); String batchStr= MessageUtils.getText("smfcore.barcode.batch",locale,"批次");
String amountStr= MessageUtils.getText("smfcore.storagePos.amount",locale,"数量"); String proDateStr= MessageUtils.getText("smfcore.storagePos.proDate",locale,"生产日期");
String putInTimeStr= MessageUtils.getText("smfcore.storagePos.putInTime",locale,"首次入库时间"); String expireDateStr= MessageUtils.getText("smfcore.storagePos.expireDate",locale,"过期时间");
String putInDateStr= MessageUtils.getText("smfcore.storagePos.putInDate",locale,"入库时间"); String posNameStr= MessageUtils.getText("smfcore.storagePos.posName",locale,"库位号");
String lockNameStr= MessageUtils.getText("smfcore.storagePos.lockName",locale,"工单号");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS"); String amountStr= MessageUtils.getText("smfcore.storagePos.amount",locale,"数量");
List<Map<String, Object>> list = new ArrayList<>(); String distanceStr= MessageUtils.getText("smfcore.storagePos.distance",locale,"间距");
for (StoragePos pos : storagePos) { String putInTimeStr= MessageUtils.getText("smfcore.storagePos.putInTime",locale,"首次入库时间");
String putInDateStr= MessageUtils.getText("smfcore.storagePos.putInDate",locale,"入库时间");
List<List<String>> header = new ArrayList<>();
Map<String, Object> map = new LinkedHashMap<>(); header.add(Lists.newArrayList(barcodeStr));
map.put(barcodeStr, pos.getBarcode().getBarcode()); header.add(Lists.newArrayList(partNumberStr));
map.put(partNumberStr, pos.getBarcode().getPartNumber()); header.add(Lists.newArrayList(providerStr));
String proDate = pos.getBarcode().getProduceDate() == null ? "" : dateFormat.format(pos.getBarcode().getProduceDate()); header.add(Lists.newArrayList(batchStr));
map.put(proDateStr, proDate); header.add(Lists.newArrayList(posNameStr));
map.put(expireDateStr, pos.getBarcode().getExpireDate()); header.add(Lists.newArrayList(amountStr));
map.put(posNameStr, pos.getPosName()); header.add(Lists.newArrayList(distanceStr));
map.put(lockNameStr, pos.getBarcode().getLockName());
map.put(amountStr, pos.getBarcode().getAmount()); header.add(Lists.newArrayList(putInTimeStr));
String putInTime = (pos.getBarcode().getPutInTime() == -1) ? "" : dateFormat.format(new Date(pos.getBarcode().getPutInTime())); header.add(Lists.newArrayList(putInDateStr));
if(ObjectUtil.isNotEmpty(putInTime)){ return header;
putInTime=dateFormat.format(pos.getBarcode().getPutInDate());
} }
map.put(putInTimeStr, putInTime);
map.put(putInDateStr, dateFormat.format(pos.getBarcode().getPutInDate())); @Override
list.add(map); public List<List<Object>> getPageData(Query query, Pageable pageable) {
} List<List<Object>> dataList = new ArrayList<>();
FileUtil.downloadExcel(list, response); List<StoragePos> storagePos = storagePosDao.findByQuery(query, pageable);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
for (StoragePos pos : storagePos) {
List<Object> data = new ArrayList<>();
data.add(pos.getBarcode().getBarcode());
data.add(pos.getBarcode().getPartNumber());
data.add(pos.getBarcode().getProvider());
data.add(pos.getBarcode().getBatch());
data.add(pos.getPosName());
data.add(pos.getBarcode().getAmount());
data.add(pos.getBarcode().getDistance());
String putInTime = (pos.getBarcode().getPutInTime() == -1) ? "" : dateFormat.format(new Date(pos.getBarcode().getPutInTime()));
if(ObjectUtil.isNotEmpty(putInTime)){
putInTime=dateFormat.format(pos.getBarcode().getPutInDate());
}
data.add(putInTime);
data.add(dateFormat.format(pos.getBarcode().getPutInDate()));
dataList.add(data);
}
return dataList;
}
});
} }
/** /**
* 查找同尺寸连续的库位,合并库位放置料盘,仅用于智能料架 * 查找同尺寸连续的库位,合并库位放置料盘,仅用于智能料架
...@@ -600,10 +623,10 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -600,10 +623,10 @@ public class StoragePosManagerImpl implements IStoragePosManager {
} }
Query q = new Query(c); Query q = new Query(c);
//数量从大到小,出库先进先出 //数量从大到小,出库先进先出
Sort sort = Sort.by(Sort.Direction.DESC, "barcode.amount"); Sort amountSort = Sort.by(Sort.Direction.DESC, "barcode.amount");
sort.and(Sort.by(Sort.Direction.ASC, "barcode.batch")); Sort batchSort = Sort.by(Sort.Direction.ASC, "barcode.batch");
//sort.and(Sort.by(Sort.Direction.ASC, "canCheckOutTime")); //sort.and(Sort.by(Sort.Direction.ASC, "canCheckOutTime"));
q.with(sort); q.with(amountSort).with(batchSort);
List<StoragePos> posList = storagePosDao.findByQuery(q); List<StoragePos> posList = storagePosDao.findByQuery(q);
if (posList == null || posList.size() <= 0) { if (posList == null || posList.size() <= 0) {
log.info("findOrderItemInStorage 挑料 partNumber=" + pn + ",未找到可以出库的物料 "); log.info("findOrderItemInStorage 挑料 partNumber=" + pn + ",未找到可以出库的物料 ");
......
...@@ -17,6 +17,7 @@ import com.neotel.smfcore.core.system.rest.bean.dto.SettingsDto; ...@@ -17,6 +17,7 @@ import com.neotel.smfcore.core.system.rest.bean.dto.SettingsDto;
import com.neotel.smfcore.core.system.rest.bean.dto.SysSettingsDto; import com.neotel.smfcore.core.system.rest.bean.dto.SysSettingsDto;
import com.neotel.smfcore.core.system.rest.bean.mapstruct.SettingsMapper; import com.neotel.smfcore.core.system.rest.bean.mapstruct.SettingsMapper;
import com.neotel.smfcore.core.system.service.po.Settings; import com.neotel.smfcore.core.system.service.po.Settings;
import com.neotel.smfcore.security.annotation.AnonymousGetMapping;
import com.neotel.smfcore.security.rest.bean.dto.MenuDto; import com.neotel.smfcore.security.rest.bean.dto.MenuDto;
import com.neotel.smfcore.security.rest.bean.query.UserQueryCriteria; import com.neotel.smfcore.security.rest.bean.query.UserQueryCriteria;
import com.neotel.smfcore.security.service.po.Menu; import com.neotel.smfcore.security.service.po.Menu;
...@@ -57,8 +58,7 @@ public class SettingsController { ...@@ -57,8 +58,7 @@ public class SettingsController {
private String version; private String version;
@ApiOperation("获取系统设置信息") @ApiOperation("获取系统设置信息")
@GetMapping("/sysSettings") @AnonymousGetMapping("/sysSettings")
@PreAuthorize("@el.check('sysSetting')")
public SysSettingsDto getSysSettings() { public SysSettingsDto getSysSettings() {
Settings settings = dataCache.getSettings(); Settings settings = dataCache.getSettings();
...@@ -82,8 +82,7 @@ public class SettingsController { ...@@ -82,8 +82,7 @@ public class SettingsController {
} }
@ApiOperation("获取出库策略信息") @ApiOperation("获取出库策略信息")
@GetMapping("/checkoutSettings") @AnonymousGetMapping("/checkoutSettings")
@PreAuthorize("@el.check('outSetting')")
public Map<String,String> getCheckOutSettings() { public Map<String,String> getCheckOutSettings() {
String outSet = dataCache.getCheckOutType().name(); String outSet = dataCache.getCheckOutType().name();
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
...@@ -105,8 +104,7 @@ public class SettingsController { ...@@ -105,8 +104,7 @@ public class SettingsController {
@ApiOperation("获取工单设置") @ApiOperation("获取工单设置")
@GetMapping("/order") @AnonymousGetMapping("/order")
@PreAuthorize("@el.check('orderSetting')")
public OrderSetting getOrderSetting() { public OrderSetting getOrderSetting() {
OrderSetting orderSetting = dataCache.getOrderSetting(); OrderSetting orderSetting = dataCache.getOrderSetting();
orderSetting.setShowLightType(false); orderSetting.setShowLightType(false);
......
...@@ -11,6 +11,7 @@ import com.neotel.smfcore.core.barcode.bean.CodeBean; ...@@ -11,6 +11,7 @@ import com.neotel.smfcore.core.barcode.bean.CodeBean;
import com.neotel.smfcore.core.barcode.utils.CodeResolve; import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.storage.rest.query.StoragePosFindCriteria;
import com.neotel.smfcore.core.storage.service.po.Storage; import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto; 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.mapstruct.TaskMapper;
...@@ -36,6 +37,8 @@ import org.springframework.util.ObjectUtils; ...@@ -36,6 +37,8 @@ import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -64,17 +67,8 @@ public class TaskController { ...@@ -64,17 +67,8 @@ public class TaskController {
@Autowired @Autowired
protected CodeResolve codeResolve; protected CodeResolve codeResolve;
// @ApiOperation("导出用户数据")
// @GetMapping(value = "/download")
// @PreAuthorize("@el.check('user:list')")
// public void download(HttpServletResponse response, UserQueryCriteria criteria) throws IOException {
// userService.download(userService.queryAll(criteria), response);
// }
@ApiOperation("查询出入库日志") private Query getQuery(TaskQueryCondition criteria){
@GetMapping("/history")
@PreAuthorize("@el.check('taskLog')")
public PageData<TaskDto> query(TaskQueryCondition criteria, Pageable pageable) {
String barcode = criteria.getBarcode(); String barcode = criteria.getBarcode();
if(Strings.isNotBlank(barcode)){ if(Strings.isNotBlank(barcode)){
CodeBean codebean = codeResolve.resolveSingleCode(criteria.getBarcode()); CodeBean codebean = codeResolve.resolveSingleCode(criteria.getBarcode());
...@@ -111,12 +105,28 @@ public class TaskController { ...@@ -111,12 +105,28 @@ public class TaskController {
}else if(finished){ }else if(finished){
query.addCriteria(Criteria.where("status").in(OP_STATUS.END.name(), OP_STATUS.FINISHED.name())); query.addCriteria(Criteria.where("status").in(OP_STATUS.END.name(), OP_STATUS.FINISHED.name()));
} }
return query;
}
@ApiOperation("查询出入库日志")
@GetMapping("/history")
@PreAuthorize("@el.check('taskLog')")
public PageData<TaskDto> query(TaskQueryCondition criteria, Pageable pageable) {
Query query = getQuery(criteria);
// query.with(Sort.by(Sort.Direction.DESC,"updateDate","createDate")); // query.with(Sort.by(Sort.Direction.DESC,"updateDate","createDate"));
PageData<DataLog> taskList = dataLogManager.findByPage(query, pageable); PageData<DataLog> taskList = dataLogManager.findByPage(query, pageable);
PageData<TaskDto> result= taskMapper.toDto(taskList); PageData<TaskDto> result= taskMapper.toDto(taskList);
return result; return result;
} }
@ApiOperation("导出查找出入库日志")
@GetMapping(value = "/history/download")
@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());
}
@ApiOperation("获取某个分组队列中的任务") @ApiOperation("获取某个分组队列中的任务")
@GetMapping("/{groupId}") @GetMapping("/{groupId}")
@PreAuthorize("@el.check('taskLog')") @PreAuthorize("@el.check('taskLog')")
......
...@@ -2,11 +2,18 @@ package com.neotel.smfcore.core.system.service.manager; ...@@ -2,11 +2,18 @@ package com.neotel.smfcore.core.system.service.manager;
import com.neotel.smfcore.common.base.IBaseManager; import com.neotel.smfcore.common.base.IBaseManager;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List; import java.util.List;
import java.util.Locale;
public interface IDataLogManager extends IBaseManager<DataLog> { public interface IDataLogManager extends IBaseManager<DataLog> {
List<DataLog> findUnFinishedTasks(); List<DataLog> findUnFinishedTasks();
DataLog findLastOutTask(String barcode,boolean addOutbound); DataLog findLastOutTask(String barcode,boolean addOutbound);
void download(Query query, Pageable pageable, HttpServletResponse response, Locale locale) throws IOException;
} }
package com.neotel.smfcore.core.system.service.manager.impl; package com.neotel.smfcore.core.system.service.manager.impl;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.base.IExcelDownLoad;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.dao.IDataLogDao; import com.neotel.smfcore.core.system.service.dao.IDataLogDao;
import com.neotel.smfcore.core.system.service.manager.IDataLogManager; import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
...@@ -13,9 +19,11 @@ import org.springframework.data.mongodb.core.query.Criteria; ...@@ -13,9 +19,11 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import javax.servlet.http.HttpServletResponse;
import java.util.Calendar; import java.io.IOException;
import java.util.List; import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@Service @Service
public class DataLogManagerImpl implements IDataLogManager { public class DataLogManagerImpl implements IDataLogManager {
...@@ -82,4 +90,54 @@ public class DataLogManagerImpl implements IDataLogManager { ...@@ -82,4 +90,54 @@ public class DataLogManagerImpl implements IDataLogManager {
DataLog dataLog = dataLogDao.findOne(query); DataLog dataLog = dataLogDao.findOne(query);
return dataLog; return dataLog;
} }
@Override
public void download(Query query, Pageable pageable, HttpServletResponse response, Locale locale) throws IOException {
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 = dataLogDao.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());//"状态"
data.add("更新时间");
dataList.add(data);
}
return dataList;
}
});
}
} }
...@@ -467,6 +467,36 @@ public class DataLog extends BasePo implements Serializable { ...@@ -467,6 +467,36 @@ public class DataLog extends BasePo implements Serializable {
} }
} }
public String getDetailTypeStr(){
int detailType = getDetailType();
String detailTypeStr = "";
//1=普通入库,2=并盘入库,3=截料入库,4=退料入库
if(detailType == 1){
detailTypeStr = "普通入库";
}else if(detailType == 2){
detailTypeStr = "并盘入库";
}else if(detailType == 3){
detailTypeStr = "截料入库";
}else if(detailType == 4){
detailTypeStr = "退料入库";
}else if(detailType == 100){
//0普通出库,1并盘出库 ,2湿敏出库 3线边仓间转储出库 ,10=工单出库
// * 4=转外协出库,发运单出库,成本中心领料:对应4,预留单出库;
detailTypeStr = "普通出库";
}else if(detailType == 101){
detailTypeStr = "并盘出库";
}else if(detailType == 102){
detailTypeStr = "湿敏出库";
}else if(detailType == 103){
detailTypeStr = "线边仓间转储出库";
}else if(detailType == 104){
detailTypeStr = "预留单出库";
}else if(detailType == 110){
detailTypeStr = "工单出库";
}
return detailTypeStr;
}
public int getReelQty(){ public int getReelQty(){
if(type == OP.PUT_IN){ if(type == OP.PUT_IN){
return num; return num;
...@@ -474,4 +504,13 @@ public class DataLog extends BasePo implements Serializable { ...@@ -474,4 +504,13 @@ public class DataLog extends BasePo implements Serializable {
return 0 - num; return 0 - num;
} }
} }
public String getStatusStr() {
String statusStr = "";
String statusValue = getStatus();
if(statusValue.equals(OP_STATUS.WAIT)){
statusStr = "等待中";
}
return statusStr;
}
} }
...@@ -92,6 +92,7 @@ public class MenuController { ...@@ -92,6 +92,7 @@ public class MenuController {
Query query = QueryHelp.getQuery(criteria); Query query = QueryHelp.getQuery(criteria);
query.addCriteria(Criteria.where("type").ne(2)); query.addCriteria(Criteria.where("type").ne(2));
//Query query=new Query(Criteria.where("type").ne(2)); //Query query=new Query(Criteria.where("type").ne(2));
menuManager.download(menuManager.findByQuery(query), response,request.getLocale()); menuManager.download(menuManager.findByQuery(query), response,request.getLocale());
} }
...@@ -102,8 +103,7 @@ public class MenuController { ...@@ -102,8 +103,7 @@ public class MenuController {
public ResponseEntity<Object> query(@RequestParam String pid,HttpServletRequest servletRequest) { public ResponseEntity<Object> query(@RequestParam String pid,HttpServletRequest servletRequest) {
List<Menu> menus=menuManager.getMenusByPid(pid); List<Menu> menus=menuManager.getMenusByPid(pid);
Locale locale=servletRequest.getLocale(); Locale locale=servletRequest.getLocale();
for (Menu menu :menus for (Menu menu :menus) {
) {
menu.UpdateTitle(locale); menu.UpdateTitle(locale);
} }
List<MenuDto> dtos=menuMapper.toDto(menus); List<MenuDto> dtos=menuMapper.toDto(menus);
......
...@@ -129,7 +129,7 @@ public class UserController { ...@@ -129,7 +129,7 @@ public class UserController {
if(resources.getGroups()==null){ if(resources.getGroups()==null){
resources.setGroups(new HashSet<String>()); resources.setGroups(new HashSet<String>());
} }
resources.setEnabled(false); resources.setEnabled(true);
if(resources.getCheckCode()==null){ if(resources.getCheckCode()==null){
resources.setCheckCode(""); resources.setCheckCode("");
} }
......
...@@ -81,21 +81,21 @@ public class UserDetailsServiceImpl implements UserDetailsService { ...@@ -81,21 +81,21 @@ public class UserDetailsServiceImpl implements UserDetailsService {
if (user == null) { if (user == null) {
throw new ValidateException("smfcore.valueNotExist","{0}[{1}]不存在",new String[]{"username",username}); throw new ValidateException("smfcore.valueNotExist","{0}[{1}]不存在",new String[]{"username",username});
} else { } else {
if(user.getEnabled()==null){ // if(user.getEnabled()==null){
throw new ValidateException("smfcore.notActivated","账号未激活"); // throw new ValidateException("smfcore.notActivated","账号未激活");
} // }
if (!user.getEnabled()) { // if (!user.getEnabled()) {
throw new ValidateException("smfcore.notActivated","账号未激活"); // throw new ValidateException("smfcore.notActivated","账号未激活");
} // }
if(user.getUsername().equals(Constants.SUPER_USERNAME)){ // if(user.getUsername().equals(Constants.SUPER_USERNAME)){
//
}else { // }else {
//判断激活码是否正确 // //判断激活码是否正确
String code = Md5Utls.getMd5(user.getId(), user.getCreateDate()); // String code = Md5Utls.getMd5(user.getId(), user.getCreateDate());
if (!code.equals(user.getCheckCode())) { // if (!code.equals(user.getCheckCode())) {
throw new ValidateException("smfcore.notActivated","账号未激活"); // throw new ValidateException("smfcore.notActivated","账号未激活");
} // }
} // }
List<Long> dataScopes = new ArrayList<>(); List<Long> dataScopes = new ArrayList<>();
jwtUserDto = new JwtUserDto( jwtUserDto = new JwtUserDto(
user, user,
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!