Commit 04ec3da6 sunke

EasyExcel分页导出

感应料架占用库位加入缓存
MES兼容旧接口
1 个父辈 7362a1d0
正在显示 24 个修改的文件 包含 336 行增加188 行删除
...@@ -167,21 +167,21 @@ ...@@ -167,21 +167,21 @@
</dependency> </dependency>
<!-- excel工具 --> <!-- excel工具 -->
<dependency> <!-- <dependency>-->
<groupId>org.apache.poi</groupId> <!-- <groupId>org.apache.poi</groupId>-->
<artifactId>poi</artifactId> <!-- <artifactId>poi</artifactId>-->
<version>3.17</version> <!-- <version>3.17</version>-->
</dependency> <!-- </dependency>-->
<dependency> <!-- <dependency>-->
<groupId>org.apache.poi</groupId> <!-- <groupId>org.apache.poi</groupId>-->
<artifactId>poi-ooxml</artifactId> <!-- <artifactId>poi-ooxml</artifactId>-->
<version>3.17</version> <!-- <version>3.17</version>-->
</dependency> <!-- </dependency>-->
<dependency> <!-- <dependency>-->
<groupId>xerces</groupId> <!-- <groupId>xerces</groupId>-->
<artifactId>xercesImpl</artifactId> <!-- <artifactId>xercesImpl</artifactId>-->
<version>2.12.0</version> <!-- <version>2.12.0</version>-->
</dependency> <!-- </dependency>-->
<!--mapStruct--> <!--mapStruct-->
<dependency> <dependency>
<groupId>org.mapstruct</groupId> <groupId>org.mapstruct</groupId>
...@@ -235,6 +235,12 @@ ...@@ -235,6 +235,12 @@
<artifactId>commons-httpclient</artifactId> <artifactId>commons-httpclient</artifactId>
<version>3.1</version> <version>3.1</version>
</dependency> </dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies> </dependencies>
......
package com.neotel.smfcore.common.base; package com.neotel.smfcore.common.base;
import cn.hutool.core.date.DateUtil;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringBuilder;
......
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;
...@@ -210,8 +217,63 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { ...@@ -210,8 +217,63 @@ public class FileUtil extends cn.hutool.core.io.FileUtil {
} }
/** /**
* 导出excel * 分页导出Excel
* @param query
* @param pageable
* @param response
* @param excelDownLoad
* @throws IOException
*/
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("Sheet1").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
*/
public static void downloadExcel(List<List<String>> headers, List<List<Object>> datas, HttpServletResponse response) 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");
EasyExcel.write(response.getOutputStream()).sheet("Sheet1").head(headers).doWrite(datas);
}
/**
* 使用分页导出Excel或者一次性导出Excel方法
*/ */
@Deprecated
public static void downloadExcel(List<Map<String, Object>> list, HttpServletResponse response) throws IOException { public static void downloadExcel(List<Map<String, Object>> list, HttpServletResponse response) throws IOException {
String tempPath = SYS_TEM_DIR + IdUtil.fastSimpleUUID() + ".xlsx"; String tempPath = SYS_TEM_DIR + IdUtil.fastSimpleUUID() + ".xlsx";
File file = new File(tempPath); File file = new File(tempPath);
......
...@@ -453,17 +453,12 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -453,17 +453,12 @@ public class NLPShelfHandler extends BaseDeviceHandler{
@AnonymousAccess @AnonymousAccess
public ResultBean shelfStatus(HttpServletRequest request){ public ResultBean shelfStatus(HttpServletRequest request){
String cid = request.getParameter("cid"); String cid = request.getParameter("cid");
Storage storage = dataCache.getStorage(cid); List<String> posList = dataCache.getUsedPosNameList(cid);
List<StoragePos> allPos = storagePosManager.findNotEmptyByStorageId(storage.getId());
List<String> posList = new ArrayList<>();
for (StoragePos pos : allPos) {
posList.add(pos.getPosName());
}
List<String> outTaskPosList = new ArrayList<>(); List<String> outTaskPosList = new ArrayList<>();
Collection<DataLog> queueTasks = taskService.getQueueTasks(cid); Collection<DataLog> queueTasks = taskService.getQueueTasks(cid);
for (DataLog task : queueTasks) { for (DataLog task : queueTasks) {
if(task.isCheckOutTask()){ //只发执行中的任务
if(task.isCheckOutTask()&&task.isExecuting()){
String rgb = task.getLightColor(); String rgb = task.getLightColor();
ORDER_COLOR color = ORDER_COLOR.fromRgb(rgb); ORDER_COLOR color = ORDER_COLOR.fromRgb(rgb);
if(color == null){ if(color == null){
...@@ -477,6 +472,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -477,6 +472,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
Map<String,List<String>> dataMap = new HashMap<>(); Map<String,List<String>> dataMap = new HashMap<>();
dataMap.put("hasReelPosList",posList); dataMap.put("hasReelPosList",posList);
dataMap.put("outTaskList",outTaskPosList); dataMap.put("outTaskList",outTaskPosList);
//log.info("客户端获取["+cid+"]库位占用情况返回");
return ResultBean.newOkResult(dataMap); return ResultBean.newOkResult(dataMap);
} }
...@@ -488,12 +484,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -488,12 +484,7 @@ public class NLPShelfHandler extends BaseDeviceHandler{
@AnonymousAccess @AnonymousAccess
public ResultBean checkAll(HttpServletRequest request){ public ResultBean checkAll(HttpServletRequest request){
String cid = request.getParameter("cid"); String cid = request.getParameter("cid");
Storage storage = dataCache.getStorage(cid); List<String> posList = dataCache.getUsedPosNameList(cid);
List<StoragePos> allPos = storagePosManager.findNotEmptyByStorageId(storage.getId());
List<String> posList = new ArrayList<>();
for (StoragePos pos : allPos) {
posList.add(pos.getPosName());
}
return ResultBean.newOkResult(posList); return ResultBean.newOkResult(posList);
} }
@Override @Override
......
...@@ -87,7 +87,10 @@ public class DataCache { ...@@ -87,7 +87,10 @@ public class DataCache {
*/ */
private static Settings settings; private static Settings settings;
/**
* 库位占用Map, key为cid,value为已使用的库位列表
*/
private static Map<String,List<String>> usedPosNameMap = new ConcurrentHashMap<>();
@PostConstruct @PostConstruct
public void initialize() { public void initialize() {
...@@ -379,6 +382,44 @@ public class DataCache { ...@@ -379,6 +382,44 @@ public class DataCache {
/** /**
* 出库时清除使用库位列表
*/
private void removeUsedPosNameList(String cid, String posName){
List<String> usedPosNameList = getUsedPosNameList(cid);
usedPosNameList.remove(posName);
usedPosNameMap.put(cid, usedPosNameList);
}
/**
* 入库时增加使用库位列表
*/
private void addUsedPosNameList(String cid, String posName){
List<String> usedPosNameList = getUsedPosNameList(cid);
usedPosNameList.add(posName);
usedPosNameMap.put(cid, usedPosNameList);
}
/**
* 获取设备所有占用的库位名称列表
*/
public List<String> getUsedPosNameList(String cid){
List<String> posNameList = usedPosNameMap.get(cid);
if(posNameList == null){
Storage storage = getStorage(cid);
posNameList = new ArrayList<>();
if(storage != null){
log.info("加载["+cid+"]所有已使用库位到缓存");
List<StoragePos> allPos = storagePosManager.findNotEmptyByStorageId(storage.getId());
for (StoragePos pos : allPos) {
posNameList.add(pos.getPosName());
}
usedPosNameMap.put(cid,posNameList);
}
}
return posNameList;
}
/**
* 锁定库存 * 锁定库存
* @param cid * @param cid
* @param partNumber 物料编号 * @param partNumber 物料编号
...@@ -636,11 +677,12 @@ public class DataCache { ...@@ -636,11 +677,12 @@ public class DataCache {
//出库 //出库
amount = - barcode.getAmount(); amount = - barcode.getAmount();
storage.emptyOnePos(pos); storage.emptyOnePos(pos);
removeUsedPosNameList(cid, pos.getPosName());
}else{ }else{
//入库 //入库
amount = barcode.getAmount(); amount = barcode.getAmount();
storage.useOnePos(pos); storage.useOnePos(pos);
addUsedPosNameList(cid, pos.getPosName());
//入库单处理 //入库单处理
if(ObjectUtil.isNotEmpty(storage.getInListName())){ if(ObjectUtil.isNotEmpty(storage.getInListName())){
inListCache.UpdateInList(storage.getInListName(),pos,barcode); inListCache.UpdateInList(storage.getInListName(),pos,barcode);
......
...@@ -2,9 +2,12 @@ package com.neotel.smfcore.core.storage.rest; ...@@ -2,9 +2,12 @@ package com.neotel.smfcore.core.storage.rest;
import cn.hutool.core.util.ObjectUtil; 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.neotel.smfcore.common.base.IExcelDownLoad;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
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.common.utils.QueryHelp; import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils; import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.barcode.bean.CodeBean; import com.neotel.smfcore.core.barcode.bean.CodeBean;
...@@ -44,6 +47,8 @@ import org.springframework.web.bind.annotation.*; ...@@ -44,6 +47,8 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.IOException; import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
@Slf4j @Slf4j
...@@ -298,25 +303,72 @@ public class StoragePosController { ...@@ -298,25 +303,72 @@ public class StoragePosController {
} }
@ApiOperation("导出查找出库列表")
@GetMapping(value = "/find/download")
@PreAuthorize("@el.check('checkOut')")
public void download(HttpServletResponse response, StoragePosFindCriteria criteria,HttpServletRequest request) throws IOException {
Query query=getPosFindCriteria(criteria);
List<StoragePos> storagePos = storagePosManager.findByQuery(query );
storagePosManager.download(storagePos, response,request.getLocale());
}
@ApiOperation("查找出库列表") @ApiOperation("查找出库列表")
@GetMapping("/find") @GetMapping("/find")
@PreAuthorize("@el.check('checkOut')") @PreAuthorize("@el.check('checkOut')")
public PageData<StoragePosDto> storagePosFind(StoragePosFindCriteria criteria, Pageable pageable, HttpServletRequest request) { public PageData<StoragePosDto> storagePosFind(StoragePosFindCriteria criteria, Pageable pageable, HttpServletRequest request) {
Query query=getPosFindCriteria(criteria); Query query=getPosFindCriteria(criteria);
PageData<StoragePos> pages = storagePosManager.findByPage(query, pageable); PageData<StoragePos> pages = storagePosManager.findByPage(query, pageable);
List<StoragePosDto> StoragePosDtos = storagePosMapper.toDto(pages.getContent()); List<StoragePosDto> StoragePosDtos = storagePosMapper.toDto(pages.getContent());
return new PageData(StoragePosDtos, pages.getTotalElements()); return new PageData(StoragePosDtos, pages.getTotalElements());
} }
@ApiOperation("导出查找出库列表")
@GetMapping(value = "/find/download")
@PreAuthorize("@el.check('checkOut')")
public void download(HttpServletResponse response, StoragePosFindCriteria criteria,Pageable pageable, HttpServletRequest request) throws IOException {
Query query=getPosFindCriteria(criteria);
FileUtil.downloadExcel(query, pageable, response, new IExcelDownLoad() {
@Override
public List<List<String>> getHeader() {
List<List<String>> header = new ArrayList<>();
Locale locale = request.getLocale();
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.barcode",locale,"条码编号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.partNumber",locale,"物料编号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.proDate",locale,"生产日期")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.expireDate",locale,"过期时间")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.posName",locale,"库位号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.lockName",locale,"工单号")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.amount",locale,"数量")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.putInTime",locale,"首次入库时间")));
header.add(Lists.newArrayList(MessageUtils.getText("smfcore.storagePos.putInDate",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<Map<String, Object>> list = new ArrayList<>();
List<StoragePos> storagePos = storagePosManager.findByQuery(query,pageable);
for (StoragePos pos : storagePos) {
String proDate = pos.getBarcode().getProduceDate() == null ? "" : dateFormat.format(pos.getBarcode().getProduceDate());
String expireDate = pos.getBarcode().getExpireDate() == null ? "" : dateFormat.format(pos.getBarcode().getExpireDate());
String putInTime = (pos.getBarcode().getPutInTime() == -1) ? "" : dateFormat.format(new Date(pos.getBarcode().getPutInTime()));
if(ObjectUtil.isNotEmpty(putInTime)){
putInTime=dateFormat.format(pos.getBarcode().getPutInDate());
}
List<Object> data = new ArrayList<>();
data.add(pos.getBarcode().getBarcode());
data.add(pos.getBarcode().getPartNumber());
data.add(proDate);
data.add(expireDate);
data.add(pos.getPosName());
data.add(pos.getBarcode().getLockName());
data.add(pos.getBarcode().getAmount());
data.add(putInTime);
data.add(dateFormat.format(pos.getBarcode().getPutInDate()));
dataList.add(data);
}
return dataList;
}
});
}
@ApiOperation("出库操作") @ApiOperation("出库操作")
@PutMapping("/checkout") @PutMapping("/checkout")
public ResultBean checkout(@Validated @RequestBody CheckOutDto checkOutDto) { public ResultBean checkout(@Validated @RequestBody CheckOutDto checkOutDto) {
......
...@@ -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;
...@@ -31,6 +33,8 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> { ...@@ -31,6 +33,8 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> {
StoragePos findPartNumberInStorages(List<String> storageIdList,String labelId, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType); StoragePos findPartNumberInStorages(List<String> storageIdList,String labelId, String pn, Collection<String> excludePosIds, CHECKOUT_TYPE checkOutType);
List<StoragePos> findByQuery(Query query, Pageable pageable);
void removePosByStorageId(String storageId); void removePosByStorageId(String storageId);
void deletePoss(Set<String> ids); void deletePoss(Set<String> ids);
...@@ -59,8 +63,6 @@ public interface IStoragePosManager extends IBaseManager<StoragePos> { ...@@ -59,8 +63,6 @@ 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;
List<StoragePos> findPosList(String storageId, List<String> posNames); List<StoragePos> findPosList(String storageId, List<String> posNames);
List<StoragePos> getSameSizeContinuityEmptyPosList(Storage storage, Barcode barcode) throws ValidateException; List<StoragePos> getSameSizeContinuityEmptyPosList(Storage storage, Barcode barcode) throws ValidateException;
......
...@@ -6,13 +6,9 @@ import com.google.common.collect.Lists; ...@@ -6,13 +6,9 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
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.FileUtil;
import com.neotel.smfcore.common.utils.PointUtil; import com.neotel.smfcore.common.utils.PointUtil;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.bean.PlateSizeBean; import com.neotel.smfcore.core.barcode.bean.PlateSizeBean;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.language.util.MessageUtils;
import com.neotel.smfcore.core.storage.bean.InventoryItem; 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.enums.COMPATIBLE_TYPE; import com.neotel.smfcore.core.storage.enums.COMPATIBLE_TYPE;
...@@ -20,7 +16,6 @@ import com.neotel.smfcore.core.storage.service.dao.IStoragePosDao; ...@@ -20,7 +16,6 @@ import com.neotel.smfcore.core.storage.service.dao.IStoragePosDao;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
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 com.neotel.smfcore.security.service.po.User;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
...@@ -33,10 +28,6 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -33,10 +28,6 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
...@@ -308,6 +299,11 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -308,6 +299,11 @@ public class StoragePosManagerImpl implements IStoragePosManager {
} }
@Override @Override
public List<StoragePos> findByQuery(Query query, Pageable pageable) {
return storagePosDao.findByQuery(query, pageable);
}
@Override
public List<StoragePos> findByQuery(Query query) { public List<StoragePos> findByQuery(Query query) {
return storagePosDao.findByQuery(query); return storagePosDao.findByQuery(query);
} }
...@@ -503,43 +499,7 @@ public class StoragePosManagerImpl implements IStoragePosManager { ...@@ -503,43 +499,7 @@ public class StoragePosManagerImpl implements IStoragePosManager {
storagePosDao.updateMulti(query, Update.update("barcode.thickness",thickness)); storagePosDao.updateMulti(query, Update.update("barcode.thickness",thickness));
} }
@Override
public void download(List<StoragePos> storagePos, HttpServletResponse response,Locale locale) throws IOException {
String barcodeStr= MessageUtils.getText("smfcore.storagePos.barcode",locale,"条码编号");
String partNumberStr= MessageUtils.getText("smfcore.storagePos.partNumber",locale,"物料编号");
String proDateStr= MessageUtils.getText("smfcore.storagePos.proDate",locale,"生产日期");
String expireDateStr= MessageUtils.getText("smfcore.storagePos.expireDate",locale,"过期时间");
String posNameStr= MessageUtils.getText("smfcore.storagePos.posName",locale,"库位号");
String lockNameStr= MessageUtils.getText("smfcore.storagePos.lockName",locale,"工单号");
String amountStr= MessageUtils.getText("smfcore.storagePos.amount",locale,"数量");
String putInTimeStr= MessageUtils.getText("smfcore.storagePos.putInTime",locale,"首次入库时间");
String putInDateStr= MessageUtils.getText("smfcore.storagePos.putInDate",locale,"入库时间");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");
List<Map<String, Object>> list = new ArrayList<>();
for (StoragePos pos : storagePos) {
Map<String, Object> map = new LinkedHashMap<>();
map.put(barcodeStr, pos.getBarcode().getBarcode());
map.put(partNumberStr, pos.getBarcode().getPartNumber());
String proDate = pos.getBarcode().getProduceDate() == null ? "" : dateFormat.format(pos.getBarcode().getProduceDate());
map.put(proDateStr, proDate);
map.put(expireDateStr, pos.getBarcode().getExpireDate());
map.put(posNameStr, pos.getPosName());
map.put(lockNameStr, pos.getBarcode().getLockName());
map.put(amountStr, pos.getBarcode().getAmount());
String putInTime = (pos.getBarcode().getPutInTime() == -1) ? "" : dateFormat.format(new Date(pos.getBarcode().getPutInTime()));
if(ObjectUtil.isNotEmpty(putInTime)){
putInTime=dateFormat.format(pos.getBarcode().getPutInDate());
}
map.put(putInTimeStr, putInTime);
map.put(putInDateStr, dateFormat.format(pos.getBarcode().getPutInDate()));
list.add(map);
}
FileUtil.downloadExcel(list, response);
}
/** /**
* 查找同尺寸连续的库位,合并库位放置料盘,仅用于智能料架 * 查找同尺寸连续的库位,合并库位放置料盘,仅用于智能料架
* @param storage * @param storage
......
...@@ -3,8 +3,10 @@ package com.neotel.smfcore.core.system.rest; ...@@ -3,8 +3,10 @@ package com.neotel.smfcore.core.system.rest;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists; 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.common.utils.QueryHelp; import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils; import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
...@@ -35,6 +37,11 @@ import org.springframework.util.ObjectUtils; ...@@ -35,6 +37,11 @@ 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.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
...@@ -60,17 +67,8 @@ public class TaskController { ...@@ -60,17 +67,8 @@ public class TaskController {
@Autowired @Autowired
private IUserManager userManager; private IUserManager userManager;
// @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 un_End = "UN_END"; String un_End = "UN_END";
boolean unEnd = false; boolean unEnd = false;
boolean finished=false; boolean finished=false;
...@@ -88,12 +86,76 @@ public class TaskController { ...@@ -88,12 +86,76 @@ 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()));
} }
// query.with(Sort.by(Sort.Direction.DESC,"updateDate","createDate")); return query;
}
@ApiOperation("查询出入库日志")
@GetMapping("/history")
@PreAuthorize("@el.check('taskLog')")
public PageData<TaskDto> query(TaskQueryCondition criteria, Pageable pageable) {
Query query = getQuery(criteria);
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());
// 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;
// }
// });
}
@ApiOperation("获取某个分组队列中的任务") @ApiOperation("获取某个分组队列中的任务")
@AnonymousGetMapping("/{groupId}") @AnonymousGetMapping("/{groupId}")
public List<TaskDto> groupTask(@PathVariable String groupId){ public List<TaskDto> groupTask(@PathVariable String groupId){
......
...@@ -2,6 +2,7 @@ package com.neotel.smfcore.core.system.service.dao; ...@@ -2,6 +2,7 @@ package com.neotel.smfcore.core.system.service.dao;
import com.neotel.smfcore.common.base.IBaseDao; import com.neotel.smfcore.common.base.IBaseDao;
import com.neotel.smfcore.core.report.bean.ChartItem; import com.neotel.smfcore.core.report.bean.ChartItem;
import com.neotel.smfcore.core.system.service.po.DataLog;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -10,4 +11,6 @@ public interface IDataLogDao extends IBaseDao { ...@@ -10,4 +11,6 @@ public interface IDataLogDao extends IBaseDao {
List<ChartItem> putInChart(Date startDay, Date endDay, String partNumber); List<ChartItem> putInChart(Date startDay, Date endDay, String partNumber);
List<ChartItem> checkOutChart(Date startDay, Date endDay, String partNumber); List<ChartItem> checkOutChart(Date startDay, Date endDay, String partNumber);
List<DataLog> findHistory(String bid, int num);
} }
...@@ -8,9 +8,11 @@ import com.neotel.smfcore.core.report.bean.ChartItem; ...@@ -8,9 +8,11 @@ import com.neotel.smfcore.core.report.bean.ChartItem;
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.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import org.apache.logging.log4j.util.Strings; import org.apache.logging.log4j.util.Strings;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.aggregation.Aggregation; import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults; import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date; import java.util.Date;
...@@ -51,5 +53,17 @@ public class DataLogDaoImpl extends AbstractBaseDao implements IDataLogDao { ...@@ -51,5 +53,17 @@ public class DataLogDaoImpl extends AbstractBaseDao implements IDataLogDao {
return results.getMappedResults(); return results.getMappedResults();
} }
@Override
public List<DataLog> findHistory(String barcode, int num) {
Criteria c = new Criteria();
if(barcode != null && !barcode.isEmpty()){
c.and("barcode").is(barcode);
}
Query q = Query.query(c);
q.limit(num);
q.with(Sort.by(Sort.Direction.DESC, "updateDate"));
return findByQuery(q);
}
} }
package com.neotel.smfcore.core.haman.bean; package com.neotel.smfcore.custom.haman.bean;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
......
package com.neotel.smfcore.core.haman.enums; package com.neotel.smfcore.custom.haman.enums;
public class BIN_STATUS { public class BIN_STATUS {
/** /**
......
package com.neotel.smfcore.core.haman.listener; package com.neotel.smfcore.custom.haman.listener;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.neotel.smfcore.common.csv.CsvReader; import com.neotel.smfcore.common.csv.CsvReader;
import com.neotel.smfcore.core.device.enums.OP; import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.custom.haman.services.dao.IHamanBinPosDao;
import com.neotel.smfcore.core.haman.services.dao.IHamanBinPosDao; import com.neotel.smfcore.custom.haman.services.po.HamanBinPos;
import com.neotel.smfcore.core.haman.services.po.HamanBinPos;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.listener.DefaultOrderFileListener; import com.neotel.smfcore.core.order.listener.DefaultOrderFileListener;
import com.neotel.smfcore.core.order.listener.IOrderFileListener;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.system.bean.OrderSetting;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.File; import java.io.File;
import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
/** /**
......
package com.neotel.smfcore.core.haman.rest; package com.neotel.smfcore.custom.haman.rest;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.csv.CsvReader;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.QueryHelp; import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.haman.bean.BINPosInfo; import com.neotel.smfcore.custom.haman.enums.BIN_STATUS;
import com.neotel.smfcore.core.haman.enums.BIN_STATUS; import com.neotel.smfcore.custom.haman.rest.dto.BINPosDto;
import com.neotel.smfcore.core.haman.rest.dto.BINPosDto; import com.neotel.smfcore.custom.haman.rest.mapstruct.BINPosMapper;
import com.neotel.smfcore.core.haman.rest.mapstruct.BINPosMapper; import com.neotel.smfcore.custom.haman.rest.query.HamanBinQueryCondition;
import com.neotel.smfcore.core.haman.rest.query.HamanBinQueryCondition; import com.neotel.smfcore.custom.haman.services.dao.IHamanBinPosDao;
import com.neotel.smfcore.core.haman.services.dao.IHamanBinPosDao; import com.neotel.smfcore.custom.haman.services.po.HamanBinPos;
import com.neotel.smfcore.core.haman.services.po.HamanBinPos;
import com.neotel.smfcore.core.inList.rest.bean.dto.InListDto;
import com.neotel.smfcore.core.inList.rest.bean.query.InListQueryCondition;
import com.neotel.smfcore.core.inList.service.po.InList;
import com.neotel.smfcore.core.order.enums.LITEORDER_STATUS;
import com.neotel.smfcore.core.order.enums.ORDER_COLOR; import com.neotel.smfcore.core.order.enums.ORDER_COLOR;
import com.neotel.smfcore.core.order.rest.bean.dto.OrderDto;
import com.neotel.smfcore.core.order.rest.bean.query.OrderQueryCondition;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
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 com.neotel.smfcore.core.system.util.DevicesStatusUtil; import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.security.TokenProvider;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.bean.FileProperties;
import com.neotel.smfcore.security.service.po.Group;
import com.neotel.smfcore.security.service.po.User;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
...@@ -41,14 +22,9 @@ import lombok.extern.slf4j.Slf4j; ...@@ -41,14 +22,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
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.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.*; import java.util.*;
......
package com.neotel.smfcore.core.haman.rest; package com.neotel.smfcore.custom.haman.rest;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.csv.CsvReader; import com.neotel.smfcore.common.csv.CsvReader;
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.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.haman.bean.BINPosInfo; import com.neotel.smfcore.custom.haman.bean.BINPosInfo;
import com.neotel.smfcore.core.haman.rest.dto.BINPosDto; import com.neotel.smfcore.custom.haman.rest.mapstruct.BINPosMapper;
import com.neotel.smfcore.core.haman.rest.mapstruct.BINPosMapper;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
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.system.util.DevicesStatusUtil; import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.security.TokenProvider; import com.neotel.smfcore.security.TokenProvider;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
...@@ -21,16 +17,12 @@ import io.swagger.annotations.Api; ...@@ -21,16 +17,12 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.bytebuddy.asm.Advice;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.*; import java.util.*;
......
package com.neotel.smfcore.core.haman.rest.dto; package com.neotel.smfcore.custom.haman.rest.dto;
import com.neotel.smfcore.core.device.enums.OP; import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.haman.enums.BIN_STATUS; import com.neotel.smfcore.custom.haman.enums.BIN_STATUS;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
......
package com.neotel.smfcore.core.haman.rest.mapstruct; package com.neotel.smfcore.custom.haman.rest.mapstruct;
import com.neotel.smfcore.common.base.BaseMapper; import com.neotel.smfcore.common.base.BaseMapper;
import com.neotel.smfcore.core.haman.bean.BINPosInfo; import com.neotel.smfcore.custom.haman.rest.dto.BINPosDto;
import com.neotel.smfcore.core.haman.rest.dto.BINPosDto; import com.neotel.smfcore.custom.haman.services.po.HamanBinPos;
import com.neotel.smfcore.core.haman.services.po.HamanBinPos;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy; import org.mapstruct.ReportingPolicy;
......
package com.neotel.smfcore.core.haman.rest.query; package com.neotel.smfcore.custom.haman.rest.query;
import com.neotel.smfcore.common.annotation.QueryCondition; import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.bean.BetweenData;
import com.neotel.smfcore.core.device.enums.OP;
import lombok.Data; import lombok.Data;
import java.util.Date;
@Data @Data
public class HamanBinQueryCondition { public class HamanBinQueryCondition {
@QueryCondition @QueryCondition
......
package com.neotel.smfcore.core.haman.services.dao; package com.neotel.smfcore.custom.haman.services.dao;
import com.neotel.smfcore.common.base.IBaseDao; import com.neotel.smfcore.common.base.IBaseDao;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.core.haman.services.po.HamanBinPos; import com.neotel.smfcore.custom.haman.services.po.HamanBinPos;
import com.neotel.smfcore.core.inList.service.po.InList;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
......
package com.neotel.smfcore.core.haman.services.dao.impl; package com.neotel.smfcore.custom.haman.services.dao.impl;
import com.neotel.smfcore.common.base.AbstractBaseDao; import com.neotel.smfcore.common.base.AbstractBaseDao;
import com.neotel.smfcore.common.bean.PageData; import com.neotel.smfcore.common.bean.PageData;
import com.neotel.smfcore.core.device.enums.OP; import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.haman.enums.BIN_STATUS; import com.neotel.smfcore.custom.haman.enums.BIN_STATUS;
import com.neotel.smfcore.core.haman.services.dao.IHamanBinPosDao; import com.neotel.smfcore.custom.haman.services.dao.IHamanBinPosDao;
import com.neotel.smfcore.core.haman.services.po.HamanBinPos; import com.neotel.smfcore.custom.haman.services.po.HamanBinPos;
import com.neotel.smfcore.core.inList.service.po.InList;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
......
package com.neotel.smfcore.core.haman.services.po; package com.neotel.smfcore.custom.haman.services.po;
import com.google.common.collect.Lists;
import com.neotel.smfcore.common.base.BasePo; import com.neotel.smfcore.common.base.BasePo;
import com.neotel.smfcore.common.utils.DateUtil;
import com.neotel.smfcore.core.barcode.enums.BARCODE_STATUS;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.enums.SOLDER_STATUS;
import com.neotel.smfcore.core.device.enums.OP; import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.haman.enums.BIN_STATUS; import com.neotel.smfcore.custom.haman.enums.BIN_STATUS;
import lombok.Data; import lombok.Data;
import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
import java.util.List;
@Data @Data
@Document @Document
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!