|
|
|
@ -66,24 +66,23 @@ public class StockService {
|
|
|
|
// Map<String, List<Stock>> shelveMap = stocks.stream().collect(Collectors.groupingBy(Stock::getShelveId));
|
|
|
|
// Map<String, List<Stock>> shelveMap = stocks.stream().collect(Collectors.groupingBy(Stock::getShelveId));
|
|
|
|
// return shelveMap;
|
|
|
|
// return shelveMap;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
public List<Stock> list(Integer streetId) {
|
|
|
|
public List<Stock> list(Integer streetId) {
|
|
|
|
Street street = streetService.streetById(streetId);
|
|
|
|
Street street = streetService.streetById(streetId);
|
|
|
|
if(street == null){
|
|
|
|
if (street == null) {
|
|
|
|
return new ArrayList<>();
|
|
|
|
return new ArrayList<>();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//List<String> shelves = streetService.check(street);
|
|
|
|
//List<String> shelves = streetService.check(street);
|
|
|
|
List<Stock> stocks = stockMapper.selectList(new QueryWrapper<Stock>().eq("street_id",streetId).orderByAsc("street_id", "`row`", "`column`"));
|
|
|
|
List<Stock> stocks = stockMapper.selectList(new QueryWrapper<Stock>().eq("street_id", streetId).orderByAsc("street_id", "`row`", "`column`"));
|
|
|
|
return stocks;
|
|
|
|
return stocks;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public PageInfo<Stock> page(PageSearch pageSearch) {
|
|
|
|
public PageInfo<Stock> page(PageSearch pageSearch) {
|
|
|
|
PageHelper.startPage(pageSearch.getPageNum(), pageSearch.getPageSize());
|
|
|
|
PageHelper.startPage(pageSearch.getPageNum(), pageSearch.getPageSize());
|
|
|
|
List<Stock> stocks = stockMapper.selectList(new QueryWrapper<Stock>().orderByAsc( "`row`", "`column`"));
|
|
|
|
List<Stock> stocks = stockMapper.selectList(new QueryWrapper<Stock>().orderByAsc("`row`", "`column`"));
|
|
|
|
return new PageInfo<>(stocks);
|
|
|
|
return new PageInfo<>(stocks);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public CheckStatus statusByRowColumn(RowColumnStatus rowColumnStatus){
|
|
|
|
public CheckStatus statusByRowColumn(RowColumnStatus rowColumnStatus) {
|
|
|
|
CheckStatus checkStatus = new CheckStatus();
|
|
|
|
CheckStatus checkStatus = new CheckStatus();
|
|
|
|
checkStatus.setColumnStart(rowColumnStatus.getColumnStart());
|
|
|
|
checkStatus.setColumnStart(rowColumnStatus.getColumnStart());
|
|
|
|
checkStatus.setColumnEnd(rowColumnStatus.getColumnEnd());
|
|
|
|
checkStatus.setColumnEnd(rowColumnStatus.getColumnEnd());
|
|
|
|
@ -92,68 +91,70 @@ public class StockService {
|
|
|
|
//checkStatus.setShelveId(rowColumnStatus.getShelveId());
|
|
|
|
//checkStatus.setShelveId(rowColumnStatus.getShelveId());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Stock>stockList = new ArrayList<>();
|
|
|
|
List<Stock> stockList = new ArrayList<>();
|
|
|
|
//默认全部盘点正确
|
|
|
|
//默认全部盘点正确
|
|
|
|
Map<String,Integer> rowTabStatus = new LinkedHashMap<>();
|
|
|
|
Map<String, Integer> rowTabStatus = new LinkedHashMap<>();
|
|
|
|
int columns = 0;
|
|
|
|
int columns = 0;
|
|
|
|
int rows = 0;
|
|
|
|
int rows = 0;
|
|
|
|
for(String rowTab: rowColumnStatus.getRowTabs()){
|
|
|
|
for (String rowTab : rowColumnStatus.getRowTabs()) {
|
|
|
|
rows = getMax(rowTab,rows);
|
|
|
|
rows = getMax(rowTab, rows);
|
|
|
|
rowTabStatus.put(rowTab,0);
|
|
|
|
rowTabStatus.put(rowTab, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Map<String,Integer> columnTabStatus = new LinkedHashMap<>();
|
|
|
|
Map<String, Integer> columnTabStatus = new LinkedHashMap<>();
|
|
|
|
for(String column:rowColumnStatus.getColumnTabs()){
|
|
|
|
for (String column : rowColumnStatus.getColumnTabs()) {
|
|
|
|
columns = getMax(column,columns);
|
|
|
|
columns = getMax(column, columns);
|
|
|
|
columnTabStatus.put(column,0);
|
|
|
|
columnTabStatus.put(column, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Map<String,Integer> columnTabCorrectCount = new LinkedHashMap<>();
|
|
|
|
Map<String, Integer> columnTabCorrectCount = new LinkedHashMap<>();
|
|
|
|
Map<String,Integer> rowTabCorrectCount = new LinkedHashMap<>();
|
|
|
|
Map<String, Integer> rowTabCorrectCount = new LinkedHashMap<>();
|
|
|
|
List<Stock> stocks = stockMapper.selectList(new QueryWrapper<Stock>()
|
|
|
|
List<Stock> stocks = stockMapper.selectList(new QueryWrapper<Stock>()
|
|
|
|
.select("status","`row`","`column`")
|
|
|
|
.select("status", "`row`", "`column`")
|
|
|
|
.eq("`street_id`",rowColumnStatus.getStreetId())
|
|
|
|
.eq("`street_id`", rowColumnStatus.getStreetId())
|
|
|
|
.eq("direction",rowColumnStatus.getDirection())
|
|
|
|
.eq("direction", rowColumnStatus.getDirection())
|
|
|
|
.eq("side",rowColumnStatus.getSide()));
|
|
|
|
.eq("side", rowColumnStatus.getSide())
|
|
|
|
if(CollectionUtils.isEmpty(stocks)){
|
|
|
|
.ge(rowColumnStatus.getStartTimestamp() != null, "export_Time", rowColumnStatus.getStartTimestamp())
|
|
|
|
stockInit(rowColumnStatus.getRowStart(), rowColumnStatus.getRowEnd(), rowColumnStatus.getColumnStart(), rowColumnStatus.getColumnEnd(), null,stocks);
|
|
|
|
.le(rowColumnStatus.getEndTimestamp() != null, "export_Time", rowColumnStatus.getEndTimestamp()));
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(stocks)) {
|
|
|
|
|
|
|
|
stockInit(rowColumnStatus.getRowStart(), rowColumnStatus.getRowEnd(), rowColumnStatus.getColumnStart(), rowColumnStatus.getColumnEnd(), null, stocks);
|
|
|
|
checkStatus.setStocks(stocks);
|
|
|
|
checkStatus.setStocks(stocks);
|
|
|
|
checkStatus.setRowTabStatus(rowTabStatus);
|
|
|
|
checkStatus.setRowTabStatus(rowTabStatus);
|
|
|
|
checkStatus.setColumnTabStatus(columnTabStatus);
|
|
|
|
checkStatus.setColumnTabStatus(columnTabStatus);
|
|
|
|
return checkStatus;
|
|
|
|
return checkStatus;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for(Stock stock: stocks){
|
|
|
|
for (Stock stock : stocks) {
|
|
|
|
if(stock.getStatus() == null){
|
|
|
|
if (stock.getStatus() == null) {
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(stock.getColumn()>= rowColumnStatus.getColumnStart() && stock.getColumn()<= rowColumnStatus.getColumnEnd() && stock.getRow() >= rowColumnStatus.getRowStart() && stock.getRow()<= rowColumnStatus.getRowEnd()){
|
|
|
|
if (stock.getColumn() >= rowColumnStatus.getColumnStart() && stock.getColumn() <= rowColumnStatus.getColumnEnd() && stock.getRow() >= rowColumnStatus.getRowStart() && stock.getRow() <= rowColumnStatus.getRowEnd()) {
|
|
|
|
stockList.add(stock);
|
|
|
|
stockList.add(stock);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(!CollectionUtils.isEmpty(rowColumnStatus.getRowTabs())){
|
|
|
|
if (!CollectionUtils.isEmpty(rowColumnStatus.getRowTabs())) {
|
|
|
|
for(String rowTab: rowColumnStatus.getRowTabs()){
|
|
|
|
for (String rowTab : rowColumnStatus.getRowTabs()) {
|
|
|
|
if(isRowColumnInTab(stock,rowTab,true)){
|
|
|
|
if (isRowColumnInTab(stock, rowTab, true)) {
|
|
|
|
tabStatus(stock,rowTabStatus,rowTab);
|
|
|
|
tabStatus(stock, rowTabStatus, rowTab);
|
|
|
|
//盘点正确
|
|
|
|
//盘点正确
|
|
|
|
if(stock.getStatus() != 0 && stock.getStatus() != 1){
|
|
|
|
if (stock.getStatus() != 0 && stock.getStatus() != 1) {
|
|
|
|
if(rowTabCorrectCount.get(rowTab) == null){
|
|
|
|
if (rowTabCorrectCount.get(rowTab) == null) {
|
|
|
|
rowTabCorrectCount.put(rowTab,1);
|
|
|
|
rowTabCorrectCount.put(rowTab, 1);
|
|
|
|
}else {
|
|
|
|
} else {
|
|
|
|
int c = rowTabCorrectCount.get(rowTab);
|
|
|
|
int c = rowTabCorrectCount.get(rowTab);
|
|
|
|
rowTabCorrectCount.put(rowTab,c+1);
|
|
|
|
rowTabCorrectCount.put(rowTab, c + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(!CollectionUtils.isEmpty(rowColumnStatus.getColumnTabs())){
|
|
|
|
if (!CollectionUtils.isEmpty(rowColumnStatus.getColumnTabs())) {
|
|
|
|
for(String columnTab: rowColumnStatus.getColumnTabs()){
|
|
|
|
for (String columnTab : rowColumnStatus.getColumnTabs()) {
|
|
|
|
if(isRowColumnInTab(stock,columnTab,false)){
|
|
|
|
if (isRowColumnInTab(stock, columnTab, false)) {
|
|
|
|
tabStatus(stock,columnTabStatus,columnTab);
|
|
|
|
tabStatus(stock, columnTabStatus, columnTab);
|
|
|
|
if(stock.getStatus() != 0 && stock.getStatus() != 1){
|
|
|
|
if (stock.getStatus() != 0 && stock.getStatus() != 1) {
|
|
|
|
if(columnTabCorrectCount.get(columnTab) == null){
|
|
|
|
if (columnTabCorrectCount.get(columnTab) == null) {
|
|
|
|
columnTabCorrectCount.put(columnTab,1);
|
|
|
|
columnTabCorrectCount.put(columnTab, 1);
|
|
|
|
}else {
|
|
|
|
} else {
|
|
|
|
int c = columnTabCorrectCount.get(columnTab);
|
|
|
|
int c = columnTabCorrectCount.get(columnTab);
|
|
|
|
columnTabCorrectCount.put(columnTab,c+1);
|
|
|
|
columnTabCorrectCount.put(columnTab, c + 1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -161,51 +162,51 @@ public class StockService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for(Map.Entry<String,Integer> entry: rowTabCorrectCount.entrySet()){
|
|
|
|
for (Map.Entry<String, Integer> entry : rowTabCorrectCount.entrySet()) {
|
|
|
|
String [] strings = entry.getKey().split(" - ");
|
|
|
|
String[] strings = entry.getKey().split(" - ");
|
|
|
|
Integer tabStart = Integer.valueOf(strings[0]);
|
|
|
|
Integer tabStart = Integer.valueOf(strings[0]);
|
|
|
|
Integer tabEnd = Integer.valueOf(strings[1]);
|
|
|
|
Integer tabEnd = Integer.valueOf(strings[1]);
|
|
|
|
int counts = (tabEnd- tabStart + 1) * rows;
|
|
|
|
int counts = (tabEnd - tabStart + 1) * rows;
|
|
|
|
if(counts == entry.getValue()){
|
|
|
|
if (counts == entry.getValue()) {
|
|
|
|
rowTabStatus.put(entry.getKey(),2);
|
|
|
|
rowTabStatus.put(entry.getKey(), 2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for(Map.Entry<String,Integer> entry: columnTabCorrectCount.entrySet()){
|
|
|
|
for (Map.Entry<String, Integer> entry : columnTabCorrectCount.entrySet()) {
|
|
|
|
String [] strings = entry.getKey().split(" - ");
|
|
|
|
String[] strings = entry.getKey().split(" - ");
|
|
|
|
Integer tabStart = Integer.valueOf(strings[0]);
|
|
|
|
Integer tabStart = Integer.valueOf(strings[0]);
|
|
|
|
Integer tabEnd = Integer.valueOf(strings[1]);
|
|
|
|
Integer tabEnd = Integer.valueOf(strings[1]);
|
|
|
|
int counts = (tabEnd- tabStart + 1) * rows;
|
|
|
|
int counts = (tabEnd - tabStart + 1) * rows;
|
|
|
|
if(counts == entry.getValue()){
|
|
|
|
if (counts == entry.getValue()) {
|
|
|
|
columnTabStatus.put(entry.getKey(),2);
|
|
|
|
columnTabStatus.put(entry.getKey(), 2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
checkStatus.setColumnTabStatus(columnTabStatus);
|
|
|
|
checkStatus.setColumnTabStatus(columnTabStatus);
|
|
|
|
checkStatus.setRowTabStatus(rowTabStatus);
|
|
|
|
checkStatus.setRowTabStatus(rowTabStatus);
|
|
|
|
checkStatus.setStocks(stockInit(rowColumnStatus.getRowStart(), rowColumnStatus.getRowEnd(), rowColumnStatus.getColumnStart(), rowColumnStatus.getColumnEnd(), null,stockList));
|
|
|
|
checkStatus.setStocks(stockInit(rowColumnStatus.getRowStart(), rowColumnStatus.getRowEnd(), rowColumnStatus.getColumnStart(), rowColumnStatus.getColumnEnd(), null, stockList));
|
|
|
|
return checkStatus;
|
|
|
|
return checkStatus;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private List<Stock> stockInit(Integer rowStart, Integer rowEnd,Integer columnStart,Integer columnEnd,String shelveId,List<Stock> readyList){
|
|
|
|
private List<Stock> stockInit(Integer rowStart, Integer rowEnd, Integer columnStart, Integer columnEnd, String shelveId, List<Stock> readyList) {
|
|
|
|
Map<Integer,Map<Integer,Boolean>> map = new HashMap<>();
|
|
|
|
Map<Integer, Map<Integer, Boolean>> map = new HashMap<>();
|
|
|
|
readyList.forEach(stock -> {
|
|
|
|
readyList.forEach(stock -> {
|
|
|
|
if(map.get(stock.getRow()) == null){
|
|
|
|
if (map.get(stock.getRow()) == null) {
|
|
|
|
Map<Integer,Boolean> columnMap = new HashMap<>();
|
|
|
|
Map<Integer, Boolean> columnMap = new HashMap<>();
|
|
|
|
columnMap.put(stock.getColumn(),true);
|
|
|
|
columnMap.put(stock.getColumn(), true);
|
|
|
|
map.put(stock.getRow(),columnMap);
|
|
|
|
map.put(stock.getRow(), columnMap);
|
|
|
|
}else {
|
|
|
|
} else {
|
|
|
|
Map<Integer,Boolean> columnMap = map.get(stock.getRow());
|
|
|
|
Map<Integer, Boolean> columnMap = map.get(stock.getRow());
|
|
|
|
if(columnMap.get(stock.getColumn()) == null){
|
|
|
|
if (columnMap.get(stock.getColumn()) == null) {
|
|
|
|
columnMap.put(stock.getColumn(),true);
|
|
|
|
columnMap.put(stock.getColumn(), true);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
map.put(stock.getRow(),columnMap);
|
|
|
|
map.put(stock.getRow(), columnMap);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
});
|
|
|
|
for(int i = rowStart;i<=rowEnd;i++){
|
|
|
|
for (int i = rowStart; i <= rowEnd; i++) {
|
|
|
|
Map<Integer,Boolean> columnMap = map.get(i);
|
|
|
|
Map<Integer, Boolean> columnMap = map.get(i);
|
|
|
|
for(int j = columnStart;j<=columnEnd;j++){
|
|
|
|
for (int j = columnStart; j <= columnEnd; j++) {
|
|
|
|
if(columnMap == null || columnMap.get(j) == null){
|
|
|
|
if (columnMap == null || columnMap.get(j) == null) {
|
|
|
|
Stock stock = new Stock();
|
|
|
|
Stock stock = new Stock();
|
|
|
|
stock.setColumn(j);
|
|
|
|
stock.setColumn(j);
|
|
|
|
stock.setRow(i);
|
|
|
|
stock.setRow(i);
|
|
|
|
@ -224,35 +225,34 @@ public class StockService {
|
|
|
|
// 盘点异常 未盘点 盘点正确
|
|
|
|
// 盘点异常 未盘点 盘点正确
|
|
|
|
// 1000 100 10
|
|
|
|
// 1000 100 10
|
|
|
|
|
|
|
|
|
|
|
|
private void tabStatus(Stock stock,Map<String,Integer> tabStatus,String tab){
|
|
|
|
private void tabStatus(Stock stock, Map<String, Integer> tabStatus, String tab) {
|
|
|
|
if(tabStatus.get(tab) == null){
|
|
|
|
if (tabStatus.get(tab) == null) {
|
|
|
|
tabStatus.put(tab,stock.getStatus());
|
|
|
|
tabStatus.put(tab, stock.getStatus());
|
|
|
|
}else {
|
|
|
|
} else {
|
|
|
|
Integer status = tabStatus.get(tab);
|
|
|
|
Integer status = tabStatus.get(tab);
|
|
|
|
if(stock.getStatus() == 1){
|
|
|
|
if (stock.getStatus() == 1) {
|
|
|
|
//盘点异常为最高
|
|
|
|
//盘点异常为最高
|
|
|
|
tabStatus.put(tab,1);
|
|
|
|
tabStatus.put(tab, 1);
|
|
|
|
}else if(stock.getStatus() == 0 && status != 1) {
|
|
|
|
} else if (stock.getStatus() == 0 && status != 1) {
|
|
|
|
tabStatus.put(tab, 0);
|
|
|
|
tabStatus.put(tab, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Boolean isRowColumnInTab(Stock stock, String tab, Boolean isRow) {
|
|
|
|
private Boolean isRowColumnInTab(Stock stock,String tab,Boolean isRow){
|
|
|
|
String[] strings = tab.split(" - ");
|
|
|
|
String [] strings = tab.split(" - ");
|
|
|
|
|
|
|
|
Integer tabStart = Integer.valueOf(strings[0]);
|
|
|
|
Integer tabStart = Integer.valueOf(strings[0]);
|
|
|
|
Integer tabEnd = Integer.valueOf(strings[1]);
|
|
|
|
Integer tabEnd = Integer.valueOf(strings[1]);
|
|
|
|
if(isRow){
|
|
|
|
if (isRow) {
|
|
|
|
return stock.getRow() >= tabStart && stock.getRow() <= tabEnd;
|
|
|
|
return stock.getRow() >= tabStart && stock.getRow() <= tabEnd;
|
|
|
|
}else {
|
|
|
|
} else {
|
|
|
|
return stock.getColumn() >= tabStart && stock.getColumn() <= tabEnd;
|
|
|
|
return stock.getColumn() >= tabStart && stock.getColumn() <= tabEnd;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Integer getMax(String tab,Integer max){
|
|
|
|
public Integer getMax(String tab, Integer max) {
|
|
|
|
String [] strings = tab.split(" - ");
|
|
|
|
String[] strings = tab.split(" - ");
|
|
|
|
Integer tabStart = Integer.valueOf(strings[0]);
|
|
|
|
Integer tabStart = Integer.valueOf(strings[0]);
|
|
|
|
Integer tabEnd = Integer.valueOf(strings[1]);
|
|
|
|
Integer tabEnd = Integer.valueOf(strings[1]);
|
|
|
|
int a = tabStart > tabEnd ? tabStart : tabEnd;
|
|
|
|
int a = tabStart > tabEnd ? tabStart : tabEnd;
|
|
|
|
@ -268,7 +268,7 @@ public class StockService {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public List<StockExportExcel> exportExcels(Integer streetId) {
|
|
|
|
public List<StockExportExcel> exportExcels(Integer streetId) {
|
|
|
|
|
|
|
|
|
|
|
|
Map<String,String> map = getCategoryList();
|
|
|
|
Map<String, String> map = getCategoryList();
|
|
|
|
List<Stock> stocks = list(streetId);
|
|
|
|
List<Stock> stocks = list(streetId);
|
|
|
|
Street street = streetService.streetById(streetId);
|
|
|
|
Street street = streetService.streetById(streetId);
|
|
|
|
List<StockExportExcel> stockExportExcels = new ArrayList<>(stocks.size());
|
|
|
|
List<StockExportExcel> stockExportExcels = new ArrayList<>(stocks.size());
|
|
|
|
@ -277,7 +277,7 @@ public class StockService {
|
|
|
|
stockExportExcel.setCount(stock.getCount());
|
|
|
|
stockExportExcel.setCount(stock.getCount());
|
|
|
|
stockExportExcel.setLotnum(stock.getLotnum());
|
|
|
|
stockExportExcel.setLotnum(stock.getLotnum());
|
|
|
|
stockExportExcel.setColumn(stock.getColumn());
|
|
|
|
stockExportExcel.setColumn(stock.getColumn());
|
|
|
|
stockExportExcel.setCategory(getName(map,stock.getCategory()));
|
|
|
|
stockExportExcel.setCategory(getName(map, stock.getCategory()));
|
|
|
|
//stockExportExcel.setCount(stock.getCount());
|
|
|
|
//stockExportExcel.setCount(stock.getCount());
|
|
|
|
stockExportExcel.setRow(stock.getRow());
|
|
|
|
stockExportExcel.setRow(stock.getRow());
|
|
|
|
stockExportExcel.setStreetName(street.getName());
|
|
|
|
stockExportExcel.setStreetName(street.getName());
|
|
|
|
@ -294,18 +294,18 @@ public class StockService {
|
|
|
|
|
|
|
|
|
|
|
|
public List<StockExportExcel> exportAllExcels() {
|
|
|
|
public List<StockExportExcel> exportAllExcels() {
|
|
|
|
|
|
|
|
|
|
|
|
Map<String,String> map = getCategoryList();
|
|
|
|
Map<String, String> map = getCategoryList();
|
|
|
|
List<Stock> stocks = stockMapper.selectByMap(new HashMap<>());
|
|
|
|
List<Stock> stocks = stockMapper.selectByMap(new HashMap<>());
|
|
|
|
List<Street> streets = streetMapper.selectByMap(new HashMap<>());
|
|
|
|
List<Street> streets = streetMapper.selectByMap(new HashMap<>());
|
|
|
|
Map<Integer,String> streetMap = new HashMap<>();
|
|
|
|
Map<Integer, String> streetMap = new HashMap<>();
|
|
|
|
streets.forEach(street -> {
|
|
|
|
streets.forEach(street -> {
|
|
|
|
streetMap.put(street.getId(),street.getName());
|
|
|
|
streetMap.put(street.getId(), street.getName());
|
|
|
|
});
|
|
|
|
});
|
|
|
|
//Street street = streetService.streetById(streetId);
|
|
|
|
//Street street = streetService.streetById(streetId);
|
|
|
|
List<StockExportExcel> stockExportExcels = new ArrayList<>(stocks.size());
|
|
|
|
List<StockExportExcel> stockExportExcels = new ArrayList<>(stocks.size());
|
|
|
|
stocks.forEach(stock -> {
|
|
|
|
stocks.forEach(stock -> {
|
|
|
|
StockExportExcel stockExportExcel = new StockExportExcel();
|
|
|
|
StockExportExcel stockExportExcel = new StockExportExcel();
|
|
|
|
stockExportExcel.setCategory(getName(map,stock.getCategory()));
|
|
|
|
stockExportExcel.setCategory(getName(map, stock.getCategory()));
|
|
|
|
stockExportExcel.setCount(stock.getCount());
|
|
|
|
stockExportExcel.setCount(stock.getCount());
|
|
|
|
stockExportExcel.setLotnum(stock.getLotnum());
|
|
|
|
stockExportExcel.setLotnum(stock.getLotnum());
|
|
|
|
stockExportExcel.setColumn(stock.getColumn());
|
|
|
|
stockExportExcel.setColumn(stock.getColumn());
|
|
|
|
@ -329,39 +329,40 @@ public class StockService {
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public Stock stockInfo(StockCheck stockCheck) {
|
|
|
|
public Stock stockInfo(StockCheck stockCheck) {
|
|
|
|
|
|
|
|
|
|
|
|
Map<String,String> map = getCategoryList();
|
|
|
|
Map<String, String> map = getCategoryList();
|
|
|
|
Street street = streetService.streetById(stockCheck.getStreetId());
|
|
|
|
Street street = streetService.streetById(stockCheck.getStreetId());
|
|
|
|
|
|
|
|
|
|
|
|
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(stockCheck.getStreetId(),stockCheck.getDirection(),stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
|
|
|
|
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(stockCheck.getStreetId(), stockCheck.getDirection(), stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
|
|
|
|
if(stock == null){
|
|
|
|
if (stock == null) {
|
|
|
|
stock = new Stock();
|
|
|
|
stock = new Stock();
|
|
|
|
stock.setColumn(stockCheck.getColumn());
|
|
|
|
stock.setColumn(stockCheck.getColumn());
|
|
|
|
stock.setRow(stockCheck.getRow());
|
|
|
|
stock.setRow(stockCheck.getRow());
|
|
|
|
//stock.setShelveId(stockCheck.getShelveId());
|
|
|
|
//stock.setShelveId(stockCheck.getShelveId());
|
|
|
|
stock.setStatus(0);
|
|
|
|
stock.setStatus(0);
|
|
|
|
|
|
|
|
|
|
|
|
}else {
|
|
|
|
} else {
|
|
|
|
stock.setWmsCategoryName(map.get(stock.getWmsCategory()));
|
|
|
|
stock.setWmsCategoryName(map.get(stock.getWmsCategory()));
|
|
|
|
stock.setOveroperationPic("http://" + street.getPlcIp() + ":8007" + "/storeData/" + street.getPlcId() + "/" + stock.getRow() + "/" + stock.getColumn() + "/" + (stock.getDirection() + 2) + ".PNG");
|
|
|
|
stock.setOveroperationPic("http://" + street.getPlcIp() + ":8007" + "/storeData/" + street.getPlcId() + "/" + stock.getRow() + "/" + stock.getColumn() + "/" + (stock.getDirection() + 2) + ".PNG");
|
|
|
|
stock.setPreoperationPic("http://" + street.getPlcIp() + ":8007" + "/storeData/" + street.getPlcId() + "/" + stock.getRow() + "/" + stock.getColumn() + "/" + (stock.getDirection() ) + ".PNG");
|
|
|
|
stock.setPreoperationPic("http://" + street.getPlcIp() + ":8007" + "/storeData/" + street.getPlcId() + "/" + stock.getRow() + "/" + stock.getColumn() + "/" + (stock.getDirection()) + ".PNG");
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return stock;
|
|
|
|
return stock;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
String getName(Map<String,String> map,String category){
|
|
|
|
|
|
|
|
|
|
|
|
String getName(Map<String, String> map, String category) {
|
|
|
|
String name = category;
|
|
|
|
String name = category;
|
|
|
|
if (category !=null && !"".equals(category) && map.get(category) !=null){
|
|
|
|
if (category != null && !"".equals(category) && map.get(category) != null) {
|
|
|
|
name =category+"-"+ map.get(category);
|
|
|
|
name = category + "-" + map.get(category);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return name;
|
|
|
|
return name;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public Stock stock(StockCheckSearch stockCheckSearch){
|
|
|
|
public Stock stock(StockCheckSearch stockCheckSearch) {
|
|
|
|
// String shelveId = streetService.getShevelId(stockCheckSearch.getSRMNumber(),stockCheckSearch.getDirection(),stockCheckSearch.getSeparation());
|
|
|
|
// String shelveId = streetService.getShevelId(stockCheckSearch.getSRMNumber(),stockCheckSearch.getDirection(),stockCheckSearch.getSeparation());
|
|
|
|
// Assert.notNull(shelveId,"无该货架信息");
|
|
|
|
// Assert.notNull(shelveId,"无该货架信息");
|
|
|
|
Street street = streetService.getStreetByPlcId(stockCheckSearch.getSRMNumber());
|
|
|
|
Street street = streetService.getStreetByPlcId(stockCheckSearch.getSRMNumber());
|
|
|
|
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(),stockCheckSearch.getDirection(),1,stockCheckSearch.getRow(),stockCheckSearch.getColumn());
|
|
|
|
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(street.getId(), stockCheckSearch.getDirection(), 1, stockCheckSearch.getRow(), stockCheckSearch.getColumn());
|
|
|
|
if(stock != null && stock.getCheckPic()!=null){
|
|
|
|
if (stock != null && stock.getCheckPic() != null) {
|
|
|
|
stock.setCheckPics(stock.getCheckPic().split(";"));
|
|
|
|
stock.setCheckPics(stock.getCheckPic().split(";"));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return stock;
|
|
|
|
return stock;
|
|
|
|
@ -376,7 +377,7 @@ public class StockService {
|
|
|
|
public Stock checkCorrect(StockCheck stockCheck) {
|
|
|
|
public Stock checkCorrect(StockCheck stockCheck) {
|
|
|
|
Stock stock = stockInfo(stockCheck);
|
|
|
|
Stock stock = stockInfo(stockCheck);
|
|
|
|
Assert.isTrue(stock != null && stock.getId() != null, "该货位暂时没有记录");
|
|
|
|
Assert.isTrue(stock != null && stock.getId() != null, "该货位暂时没有记录");
|
|
|
|
log.info("check stock correct, street_id:{},direction:{},side:{},row:{},column:{}", stockCheck.getStreetId(),stockCheck.getDirection(),stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
|
|
|
|
log.info("check stock correct, street_id:{},direction:{},side:{},row:{},column:{}", stockCheck.getStreetId(), stockCheck.getDirection(), stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
|
|
|
|
stock.setStatus(StockStatus.MANUAL.getStatus());
|
|
|
|
stock.setStatus(StockStatus.MANUAL.getStatus());
|
|
|
|
stock.setCount(stockCheck.getCount());
|
|
|
|
stock.setCount(stockCheck.getCount());
|
|
|
|
stock.setCategory(stockCheck.getCategory());
|
|
|
|
stock.setCategory(stockCheck.getCategory());
|
|
|
|
@ -385,6 +386,7 @@ public class StockService {
|
|
|
|
checkLog(stock);
|
|
|
|
checkLog(stock);
|
|
|
|
return stock;
|
|
|
|
return stock;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 核对单子
|
|
|
|
* 核对单子
|
|
|
|
* 核对正确
|
|
|
|
* 核对正确
|
|
|
|
@ -395,7 +397,7 @@ public class StockService {
|
|
|
|
Stock stock = stockInfo(stockCheck);
|
|
|
|
Stock stock = stockInfo(stockCheck);
|
|
|
|
Assert.isTrue(stock != null && stock.getId() != null, "该货位暂时没有记录");
|
|
|
|
Assert.isTrue(stock != null && stock.getId() != null, "该货位暂时没有记录");
|
|
|
|
|
|
|
|
|
|
|
|
log.info("check stock correct, street_id:{},direction:{},side:{},row:{},column:{}", stockCheck.getStreetId(),stockCheck.getDirection(),stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
|
|
|
|
log.info("check stock correct, street_id:{},direction:{},side:{},row:{},column:{}", stockCheck.getStreetId(), stockCheck.getDirection(), stockCheck.getSide(), stockCheck.getRow(), stockCheck.getColumn());
|
|
|
|
stock.setStatus(StockStatus.ERROR.getStatus());
|
|
|
|
stock.setStatus(StockStatus.ERROR.getStatus());
|
|
|
|
stockMapper.updateById(stock);
|
|
|
|
stockMapper.updateById(stock);
|
|
|
|
checkLog(stock);
|
|
|
|
checkLog(stock);
|
|
|
|
@ -405,9 +407,9 @@ public class StockService {
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
private CheckLogMapper checkLogMapper;
|
|
|
|
private CheckLogMapper checkLogMapper;
|
|
|
|
|
|
|
|
|
|
|
|
private void checkLog(Stock stock){
|
|
|
|
private void checkLog(Stock stock) {
|
|
|
|
CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper<CheckLog>()
|
|
|
|
CheckLog checkLog = checkLogMapper.selectOne(new QueryWrapper<CheckLog>()
|
|
|
|
.eq("id",stock.getCheckNum())
|
|
|
|
.eq("id", stock.getCheckNum())
|
|
|
|
.last("limit 1"));
|
|
|
|
.last("limit 1"));
|
|
|
|
checkLog.setRow(stock.getRow());
|
|
|
|
checkLog.setRow(stock.getRow());
|
|
|
|
checkLog.setStreetId(stock.getStreetId());
|
|
|
|
checkLog.setStreetId(stock.getStreetId());
|
|
|
|
@ -430,7 +432,7 @@ public class StockService {
|
|
|
|
* @return
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public Stock checkByMan(CheckByMan checkByMan) {
|
|
|
|
public Stock checkByMan(CheckByMan checkByMan) {
|
|
|
|
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(checkByMan.getStreetId(),checkByMan.getDirection(),checkByMan.getSide(),checkByMan.getRow(),checkByMan.getColumn());
|
|
|
|
Stock stock = stockMapper.getByStreetAndDirectionAndSideAndRowColumn(checkByMan.getStreetId(), checkByMan.getDirection(), checkByMan.getSide(), checkByMan.getRow(), checkByMan.getColumn());
|
|
|
|
Assert.notNull(stock, "该货位暂时没有记录");
|
|
|
|
Assert.notNull(stock, "该货位暂时没有记录");
|
|
|
|
Boolean same = checkByMan.getCategory().equals(stock.getCategory()) && checkByMan.getCount().equals(stock.getCount());
|
|
|
|
Boolean same = checkByMan.getCategory().equals(stock.getCategory()) && checkByMan.getCount().equals(stock.getCount());
|
|
|
|
Assert.isTrue(!same, "品规和数量与原有记录相同");
|
|
|
|
Assert.isTrue(!same, "品规和数量与原有记录相同");
|
|
|
|
@ -448,31 +450,32 @@ public class StockService {
|
|
|
|
public Stock nextOne(Long id) {
|
|
|
|
public Stock nextOne(Long id) {
|
|
|
|
QueryWrapper<Stock> stockQueryWrapper = new QueryWrapper<>();
|
|
|
|
QueryWrapper<Stock> stockQueryWrapper = new QueryWrapper<>();
|
|
|
|
|
|
|
|
|
|
|
|
stockQueryWrapper.eq("status","0").or().eq("status","1")
|
|
|
|
stockQueryWrapper.eq("status", "0").or().eq("status", "1")
|
|
|
|
.ne(id != null,"id",id)
|
|
|
|
.ne(id != null, "id", id)
|
|
|
|
.orderByDesc("export_time").last("limit 1");
|
|
|
|
.orderByDesc("export_time").last("limit 1");
|
|
|
|
Stock stock =stockMapper.selectOne(stockQueryWrapper);
|
|
|
|
Stock stock = stockMapper.selectOne(stockQueryWrapper);
|
|
|
|
|
|
|
|
|
|
|
|
Order order = orderMapper.selectOne(new QueryWrapper<Order>()
|
|
|
|
Order order = orderMapper.selectOne(new QueryWrapper<Order>()
|
|
|
|
.eq("street_Id",stock.getStreetId())
|
|
|
|
.eq("street_Id", stock.getStreetId())
|
|
|
|
.eq("left_right1",stock.getDirection())
|
|
|
|
.eq("left_right1", stock.getDirection())
|
|
|
|
.eq("column1",stock.getColumn())
|
|
|
|
.eq("column1", stock.getColumn())
|
|
|
|
.eq("row1",stock.getRow())
|
|
|
|
.eq("row1", stock.getRow())
|
|
|
|
.orderByDesc("into_Stock_Over_Time")
|
|
|
|
.orderByDesc("into_Stock_Over_Time")
|
|
|
|
.last("limit 1"));
|
|
|
|
.last("limit 1"));
|
|
|
|
if(order != null){
|
|
|
|
if (order != null) {
|
|
|
|
stock.setOveroperationPic(order.getIntoStockOverPic());
|
|
|
|
stock.setOveroperationPic(order.getIntoStockOverPic());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return stock;
|
|
|
|
return stock;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Resource
|
|
|
|
@Resource
|
|
|
|
CategoryMapper categoryMapper;
|
|
|
|
CategoryMapper categoryMapper;
|
|
|
|
|
|
|
|
|
|
|
|
public Map<String,String> getCategoryList() {
|
|
|
|
public Map<String, String> getCategoryList() {
|
|
|
|
List<Category> category = categoryMapper.selectList(new QueryWrapper<Category>());
|
|
|
|
List<Category> category = categoryMapper.selectList(new QueryWrapper<Category>());
|
|
|
|
Map<String,String> map = new HashMap<>();
|
|
|
|
Map<String, String> map = new HashMap<>();
|
|
|
|
for (Category c : category)
|
|
|
|
for (Category c : category)
|
|
|
|
map.put(c.getCode(),c.getName());
|
|
|
|
map.put(c.getCode(), c.getName());
|
|
|
|
return map;
|
|
|
|
return map;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -481,16 +484,16 @@ public class StockService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public Map<String,Object> overview() {
|
|
|
|
public Map<String, Object> overview() {
|
|
|
|
List<Stock> list = stockMapper.selectList(new QueryWrapper<Stock>());
|
|
|
|
List<Stock> list = stockMapper.selectList(new QueryWrapper<Stock>());
|
|
|
|
Map<String,Object> map = new HashMap<>();
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
final LocalDateTime[] start = {null,null};
|
|
|
|
final LocalDateTime[] start = {null, null};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(list != null && list.size() > 0){
|
|
|
|
if (list != null && list.size() > 0) {
|
|
|
|
Map<String ,Long > statusMap = list.stream()
|
|
|
|
Map<String, Long> statusMap = list.stream()
|
|
|
|
.filter(s -> s.getStatus()!=null)
|
|
|
|
.filter(s -> s.getStatus() != null)
|
|
|
|
.collect(Collectors.groupingBy(s -> "type"+s.getStatus().toString(),Collectors.counting()));
|
|
|
|
.collect(Collectors.groupingBy(s -> "type" + s.getStatus().toString(), Collectors.counting()));
|
|
|
|
Stock earliest = list.stream()
|
|
|
|
Stock earliest = list.stream()
|
|
|
|
.min(Comparator.comparing(Stock::getExportTime)).get();
|
|
|
|
.min(Comparator.comparing(Stock::getExportTime)).get();
|
|
|
|
|
|
|
|
|
|
|
|
@ -498,48 +501,48 @@ public class StockService {
|
|
|
|
.max(Comparator.comparing(Stock::getExportTime)).get();
|
|
|
|
.max(Comparator.comparing(Stock::getExportTime)).get();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Duration maxDuration = Duration.between(earliest.getExportTime(),latest.getExportTime());
|
|
|
|
Duration maxDuration = Duration.between(earliest.getExportTime(), latest.getExportTime());
|
|
|
|
String time = "";
|
|
|
|
String time = "";
|
|
|
|
long days = maxDuration.toDays();
|
|
|
|
long days = maxDuration.toDays();
|
|
|
|
if(days > 0){
|
|
|
|
if (days > 0) {
|
|
|
|
time = days+"天";
|
|
|
|
time = days + "天";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
long hours = maxDuration.toHoursPart();
|
|
|
|
long hours = maxDuration.toHoursPart();
|
|
|
|
if(hours > 0){
|
|
|
|
if (hours > 0) {
|
|
|
|
time = time + hours+"小时";
|
|
|
|
time = time + hours + "小时";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
long minutes = maxDuration.toMinutesPart();
|
|
|
|
long minutes = maxDuration.toMinutesPart();
|
|
|
|
if(minutes > 0){
|
|
|
|
if (minutes > 0) {
|
|
|
|
time = time + minutes+"分钟";
|
|
|
|
time = time + minutes + "分钟";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
map.put("time",time);
|
|
|
|
map.put("time", time);
|
|
|
|
for(int i = 0 ; i<4 ; i++){
|
|
|
|
for (int i = 0; i < 4; i++) {
|
|
|
|
if(!statusMap.containsKey("type"+String.valueOf(i))){
|
|
|
|
if (!statusMap.containsKey("type" + String.valueOf(i))) {
|
|
|
|
statusMap.put("type"+String.valueOf(i),0L);
|
|
|
|
statusMap.put("type" + String.valueOf(i), 0L);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int sizeCategory = list.stream()
|
|
|
|
int sizeCategory = list.stream()
|
|
|
|
.filter(s -> s.getWmsCategory()!=null)
|
|
|
|
.filter(s -> s.getWmsCategory() != null)
|
|
|
|
.filter(s -> s.getStatus()!=null)
|
|
|
|
.filter(s -> s.getStatus() != null)
|
|
|
|
.collect(Collectors.groupingBy(Stock::getWmsCategory))
|
|
|
|
.collect(Collectors.groupingBy(Stock::getWmsCategory))
|
|
|
|
.keySet()
|
|
|
|
.keySet()
|
|
|
|
.size();
|
|
|
|
.size();
|
|
|
|
|
|
|
|
|
|
|
|
map.put("sizeCategory",sizeCategory);
|
|
|
|
map.put("sizeCategory", sizeCategory);
|
|
|
|
map.put("size",String.valueOf(list.size()));
|
|
|
|
map.put("size", String.valueOf(list.size()));
|
|
|
|
map.put("lotnum",list.get(0).getLotnum());
|
|
|
|
map.put("lotnum", list.get(0).getLotnum());
|
|
|
|
map.putAll(statusMap);
|
|
|
|
map.putAll(statusMap);
|
|
|
|
//共盘点{}个货位,{}个品规,{}个其他货物,其中{}个盘点成功,{}个盘点异常,{}个人工盘点
|
|
|
|
//共盘点{}个货位,{}个品规,{}个其他货物,其中{}个盘点成功,{}个盘点异常,{}个人工盘点
|
|
|
|
return map;
|
|
|
|
return map;
|
|
|
|
|
|
|
|
|
|
|
|
}else return null;
|
|
|
|
} else return null;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void allStockCheck() {
|
|
|
|
public void allStockCheck() {
|
|
|
|
List<Stock> list = stockMapper.selectList(new QueryWrapper<Stock>());
|
|
|
|
List<Stock> list = stockMapper.selectList(new QueryWrapper<Stock>());
|
|
|
|
for(Stock stock : list) {
|
|
|
|
for (Stock stock : list) {
|
|
|
|
stock.setStatus(StockStatus.MANUAL.getStatus());
|
|
|
|
stock.setStatus(StockStatus.MANUAL.getStatus());
|
|
|
|
stockMapper.updateById(stock);
|
|
|
|
stockMapper.updateById(stock);
|
|
|
|
stock = stockMapper.selectById(stock.getId());
|
|
|
|
stock = stockMapper.selectById(stock.getId());
|
|
|
|
|