Commit 00ebcdb5 zshaohui

过期报表功能提交

1 个父辈 85cc036c
...@@ -2,12 +2,16 @@ package com.neotel.smfcore.custom.lizhen.report; ...@@ -2,12 +2,16 @@ package com.neotel.smfcore.custom.lizhen.report;
import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUnit;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
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.utils.Constants; import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.FileUtil; import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.QueryHelp;
import com.neotel.smfcore.common.utils.StringUtils; import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeMapper; import com.neotel.smfcore.core.barcode.rest.bean.mapstruct.BarcodeMapper;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.utils.CodeResolve; import com.neotel.smfcore.core.barcode.utils.CodeResolve;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.LiteOrderCache; import com.neotel.smfcore.core.order.LiteOrderCache;
...@@ -22,15 +26,22 @@ import com.neotel.smfcore.core.storage.bean.InventoryItem; ...@@ -22,15 +26,22 @@ import com.neotel.smfcore.core.storage.bean.InventoryItem;
import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper; import com.neotel.smfcore.core.storage.rest.mapstruct.StoragePosMapper;
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.service.manager.IDataLogManager; import com.neotel.smfcore.core.system.service.manager.IDataLogManager;
import com.neotel.smfcore.custom.lizhen.innerBox.service.manager.IVirImportLogManager; import com.neotel.smfcore.custom.lizhen.innerBox.service.manager.IVirImportLogManager;
import com.neotel.smfcore.custom.lizhen.report.bean.dto.BCExpire;
import com.neotel.smfcore.custom.lizhen.report.bean.query.BcQuery;
import com.neotel.smfcore.custom.lizhen.report.bean.query.ReportQueryCondition; import com.neotel.smfcore.custom.lizhen.report.bean.query.ReportQueryCondition;
import com.neotel.smfcore.custom.lizhen.setting.util.ExpireDateUtil;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
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.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
...@@ -40,7 +51,6 @@ import java.util.*; ...@@ -40,7 +51,6 @@ import java.util.*;
@Slf4j @Slf4j
@ApiOperation("内仓报表") @ApiOperation("内仓报表")
@RequestMapping("/inner/report")
@RestController @RestController
public class InnerReportController { public class InnerReportController {
...@@ -93,8 +103,8 @@ public class InnerReportController { ...@@ -93,8 +103,8 @@ public class InnerReportController {
private IVirImportLogManager virImportLogManager; private IVirImportLogManager virImportLogManager;
@ApiOperation("缺料") @ApiOperation("缺料")
@RequestMapping("/lackPicking") @RequestMapping("/inner/report/lackPicking")
@AnonymousAccess //@AnonymousAccess
public PageData lackPicking(ReportQueryCondition queryCondition, Pageable pageable) { public PageData lackPicking(ReportQueryCondition queryCondition, Pageable pageable) {
List<OrderItemDto> dtoList = new ArrayList<>(); List<OrderItemDto> dtoList = new ArrayList<>();
String floor = dataCache.getCache(Constants.CACHE_floor); String floor = dataCache.getCache(Constants.CACHE_floor);
...@@ -136,8 +146,8 @@ public class InnerReportController { ...@@ -136,8 +146,8 @@ public class InnerReportController {
@ApiOperation("缺料导出") @ApiOperation("缺料导出")
@RequestMapping("/lackPicking/download") @RequestMapping("/inner/report/lackPicking/download")
@AnonymousAccess //@AnonymousAccess
public void lackPickingDownload(ReportQueryCondition queryCondition, Pageable pageable, HttpServletResponse response) throws IOException { public void lackPickingDownload(ReportQueryCondition queryCondition, Pageable pageable, HttpServletResponse response) throws IOException {
String floor = dataCache.getCache(Constants.CACHE_floor); String floor = dataCache.getCache(Constants.CACHE_floor);
...@@ -207,6 +217,111 @@ public class InnerReportController { ...@@ -207,6 +217,111 @@ public class InnerReportController {
FileUtil.downloadExcel(headers, datas, response); FileUtil.downloadExcel(headers, datas, response);
} }
/**
* 过期报表
*
* @param query
* @param pageable
* @return
*/
@RequestMapping("/bcReport/getExpire")
@AnonymousAccess
public PageData getExpire(BcQuery query, Pageable pageable) {
Query q = QueryHelp.getQuery(query);
q.addCriteria(Criteria.where("barcode").exists(true)/*.and("barcode.expireDate").lt(new Date())*/);
PageData<StoragePos> pageData = storagePosManager.findByPage(q, pageable);
List<BCExpire> expireList = getBCExpire(pageData.getContent());
return new PageData(expireList, pageData.getTotalElements());
}
/**
* 过期报表导出
* @param query
* @param pageable
* @param response
*/
@RequestMapping("/bcReport/getExpire/download")
@AnonymousAccess
public void expireDownload(BcQuery query, Pageable pageable, HttpServletResponse response){
Query q = QueryHelp.getQuery(query);
q.addCriteria(Criteria.where("barcode").exists(true)/*.and("barcode.expireDate").lt(new Date())*/);
try {
FileUtil.downloadExcel(q, pageable, response, new IExcelDownLoad() {
@Override
public List<List<String>> getHeader() {
List<List<String>> headerList = new ArrayList<>();
//headerList.add(Lists.newArrayList("厂别"));
//headerList.add(Lists.newArrayList("厂区"));
//headerList.add(Lists.newArrayList("库别"));
headerList.add(Lists.newArrayList("料号"));
headerList.add(Lists.newArrayList("物料描述"));
headerList.add(Lists.newArrayList("数量"));
headerList.add(Lists.newArrayList("储位"));
//headerList.add(Lists.newArrayList("keeper"));
headerList.add(Lists.newArrayList("ID NO"));
headerList.add(Lists.newArrayList("LOT"));
headerList.add(Lists.newArrayList("D/C"));
headerList.add(Lists.newArrayList("增加物料保质期"));
headerList.add(Lists.newArrayList("过期天数"));
headerList.add(Lists.newArrayList("过期日期"));
//headerList.add(Lists.newArrayList("备注"));
return headerList;
}
@Override
public List<List<Object>> getPageData(Query query, Pageable pageable) {
List<List<Object>> dataList = new ArrayList<>();
List<StoragePos> storagePosList = storagePosManager.findByQuery(query, pageable);
List<BCExpire> bcExpireList = getBCExpire(storagePosList);
for (BCExpire expire : bcExpireList) {
List<Object> result = new ArrayList<>();
//result.add(expire.getPlant());
//result.add(expire.getFactory());
//result.add(expire.getWarehouseCode());
result.add(expire.getPartNumber());
result.add(expire.getDescribe());
result.add(expire.getAmount());
result.add(expire.getPosName());
//result.add(expire.getKeeperCode());
result.add(expire.getBarcode());
result.add(expire.getBatch());
result.add(expire.getDateCode());
result.add(expire.getExpireYear());
result.add(expire.getExpireDays());
result.add(expire.getExpireDate());
//result.add(expire.getRemark());
dataList.add(result);
}
return dataList;
}
});
} catch (IOException e) {
e.printStackTrace();
log.error("过期报表导出失败",e);
}
}
private List<BCExpire> getBCExpire(List<StoragePos> storagePosList) {
List<BCExpire> expireList = new ArrayList<>();
for (StoragePos storagePos : storagePosList) {
BCExpire expire = new BCExpire();
BeanUtils.copyProperties(storagePos, expire);
Barcode barcode = storagePos.getBarcode();
BeanUtils.copyProperties(barcode, expire);
expire.setPlant("");
expire.setFactory("");
if (expire.getExpireDate() != null) {
expire.setExpireDays(ExpireDateUtil.getExpireDays(expire.getExpireDate()));
}
expire.setReelAmount(1);
expire.setPosName(dataCache.getStorageById(storagePos.getStorageId()).getName() + "[" + storagePos.getPosName() + "]");
expireList.add(expire);
}
return expireList;
}
private Object getData(Object data) { private Object getData(Object data) {
return data == null ? "" : data; return data == null ? "" : data;
} }
......
package com.neotel.smfcore.custom.lizhen.report.bean.dto;
import lombok.Data;
import java.util.Date;
@Data
public class BCExpire {
/**
* 厂别
*/
private String plant;
/**
* 厂区
*/
private String factory;
/**
* 料号
*/
private String partNumber;
/**
* 描述
*/
private String describe;
/**
* ID NO
*/
private String barcode;
/**
* 储位
*/
private String posName;
/**
* 数量
*/
private int amount;
/**
* 卷数
*/
private int reelAmount = 1;
/**
* 厂商
*/
private String provider;
/**
* lot
*/
private String batch = "";
/**
* d/c
*/
private String dateCode;
/**
* keeper
*/
private String keeperCode;
/**
* 物料保质期(年)
*/
private int expireYear = 1;
/**
* 过期天数
*/
private long expireDays;
/**
* 过期时间
*/
private Date expireDate;
/**
* 备注
*/
private String remark;
/**
* 库别
*/
private String warehouseCode;
}
package com.neotel.smfcore.custom.lizhen.report.bean.query;
import com.neotel.smfcore.common.annotation.QueryCondition;
import com.neotel.smfcore.common.bean.BetweenData;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class BcQuery {
@QueryCondition(blurry = "barcode.partNumber,partNumber")
private String pn;
@QueryCondition(blurry = "barcode.partNumber")
private String partNumber;
@QueryCondition(blurry = "barcode.provider")
private String provider;
@QueryCondition(blurry = "barcode.warehouseCode,warehouseCode")
private String warehouseCode;
@QueryCondition(blurry = "posName")
private String posName;
@QueryCondition(blurry = "barcode.barcode,barcode")
private String barcode;
@QueryCondition(blurry = "barcode.dateCode")
private String dateCode;
@QueryCondition(blurry = "barcode.batch")
private String batch;
@QueryCondition(blurry = "barcode.keeperCode")
private String keeperCode;
@QueryCondition(propName = "extendType",type = QueryCondition.Type.EQ)
private Integer extendType;
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> updateDate;
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!