@ -12,6 +12,8 @@ import org.springframework.beans.factory.annotation.Autowired;
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.File ;
import java.io.IOException ;
import java.io.IOException ;
import java.text.SimpleDateFormat ;
import java.text.SimpleDateFormat ;
import java.util.* ;
import java.util.* ;
@ -42,6 +44,10 @@ public class DepositoryController {
@Autowired
@Autowired
StockTakingService stockTakingService ;
StockTakingService stockTakingService ;
@Autowired
PlaceService placeService ;
/ * *
/ * *
* 获取本月之前的月份
* 获取本月之前的月份
*
*
@ -54,11 +60,11 @@ public class DepositoryController {
List < Object > sourceList = new ArrayList < > ( ) ;
List < Object > sourceList = new ArrayList < > ( ) ;
int month = instance . get ( Calendar . MONTH ) + 1 ;
int month = instance . get ( Calendar . MONTH ) + 1 ;
// 获取下个月
// 获取下个月
instance . add ( Calendar . MONTH , 1 ) ;
instance . add ( Calendar . MONTH , 1 ) ;
Long nextMonth = DateUtil . DateTimeByMonthToTimeStamp ( formatter . format ( instance . getTime ( ) ) ) ;
Long nextMonth = DateUtil . DateTimeByMonthToTimeStamp ( formatter . format ( instance . getTime ( ) ) ) ;
ArrayList < Object > months = new ArrayList < > ( ) ;
ArrayList < Object > months = new ArrayList < > ( ) ;
months . add ( nextMonth ) ;
months . add ( nextMonth ) ;
instance . add ( Calendar . MONTH , - 1 ) ;
instance . add ( Calendar . MONTH , - 1 ) ;
while ( month > 0 ) {
while ( month > 0 ) {
instance . set ( Calendar . MONTH , month ) ;
instance . set ( Calendar . MONTH , month ) ;
@ -102,7 +108,7 @@ public class DepositoryController {
*
*
* @return
* @return
* /
* /
public Map < String , Object > getBeforeInventoryByDName ( DepositoryService depositoryService , DepositoryRecordService depositoryRecordService , UserByPort user ) {
public Map < String , Object > getBeforeInventoryByDName ( DepositoryService depositoryService , DepositoryRecordService depositoryRecordService , UserByPort user ) {
List < Integer > result = new ArrayList < > ( ) ;
List < Integer > result = new ArrayList < > ( ) ;
List < Long > days = getLastTimeInterval ( ) ;
List < Long > days = getLastTimeInterval ( ) ;
Map < String , Integer > depositoryAllNameAndId = depositoryService . findDepositoryAllNameAndId ( user ) ;
Map < String , Integer > depositoryAllNameAndId = depositoryService . findDepositoryAllNameAndId ( user ) ;
@ -143,7 +149,7 @@ public class DepositoryController {
* @param depositoryRecordService
* @param depositoryRecordService
* @return
* @return
* /
* /
public Map < String , Object > getThisWeekInventoryByDName ( DepositoryService depositoryService , DepositoryRecordService depositoryRecordService , UserByPort user ) {
public Map < String , Object > getThisWeekInventoryByDName ( DepositoryService depositoryService , DepositoryRecordService depositoryRecordService , UserByPort user ) {
Calendar instance = Calendar . getInstance ( ) ;
Calendar instance = Calendar . getInstance ( ) ;
SimpleDateFormat formatter = new SimpleDateFormat ( "yyyy-MM-dd" ) ;
SimpleDateFormat formatter = new SimpleDateFormat ( "yyyy-MM-dd" ) ;
int weekDay = instance . get ( Calendar . DAY_OF_WEEK ) ;
int weekDay = instance . get ( Calendar . DAY_OF_WEEK ) ;
@ -221,7 +227,7 @@ public class DepositoryController {
Integer depositoryRecordByDateByIn1 = depositoryRecordService . findApplicationInRecordByDate ( days . get ( i ) , days . get ( i + 1 ) , val ) ;
Integer depositoryRecordByDateByIn1 = depositoryRecordService . findApplicationInRecordByDate ( days . get ( i ) , days . get ( i + 1 ) , val ) ;
// 获取一段时间内的出库额度
// 获取一段时间内的出库额度
Integer depositoryRecordByDateByOut1 = depositoryRecordService . findApplicationOutRecordByDate ( days . get ( i ) , days . get ( i + 1 ) , val ) ;
Integer depositoryRecordByDateByOut1 = depositoryRecordService . findApplicationOutRecordByDate ( days . get ( i ) , days . get ( i + 1 ) , val ) ;
Integer warehouserCount1 = ( int ) aDouble - depositoryRecordByDateByIn1 + depositoryRecordByDateByOut1 ;
Integer warehouserCount1 = ( int ) aDouble - depositoryRecordByDateByIn1 + depositoryRecordByDateByOut1 ;
result . add ( warehouserCount1 ) ;
result . add ( warehouserCount1 ) ;
}
}
Collections . reverse ( result ) ;
Collections . reverse ( result ) ;
@ -239,7 +245,7 @@ public class DepositoryController {
* @param depositoryRecordService
* @param depositoryRecordService
* @return
* @return
* /
* /
public List < Object > getBeforeInventoryByMonth ( DepositoryService depositoryService , Map < String , Object > todayInventory , DepositoryRecordService depositoryRecordService , UserByPort userByPort ) {
public List < Object > getBeforeInventoryByMonth ( DepositoryService depositoryService , Map < String , Object > todayInventory , DepositoryRecordService depositoryRecordService , UserByPort userByPort ) {
List < Depository > depositoryAll = depositoryService . findDepositoryByAdminorgAndUser ( userByPort ) ;
List < Depository > depositoryAll = depositoryService . findDepositoryByAdminorgAndUser ( userByPort ) ;
// 获取该用户管理的仓库
// 获取该用户管理的仓库
Map < String , Object > previousMonth = getPreviousMonth ( ) ;
Map < String , Object > previousMonth = getPreviousMonth ( ) ;
@ -254,9 +260,9 @@ public class DepositoryController {
List < InventoryByDname > toDayInventoryByDNameTest = depositoryService . getToDayInventoryByDNameTest ( ) ;
List < InventoryByDname > toDayInventoryByDNameTest = depositoryService . getToDayInventoryByDNameTest ( ) ;
for ( int i = 0 ; i < depositoryAll . size ( ) ; i + + ) {
for ( int i = 0 ; i < depositoryAll . size ( ) ; i + + ) {
String dname = depositoryAll . get ( i ) . getDname ( ) ;
String dname = depositoryAll . get ( i ) . getDname ( ) ;
Integer todayDepositoryInventory = getInventoryByDname ( dname , toDayInventoryByDNameTest ) ;
Integer todayDepositoryInventory = getInventoryByDname ( dname , toDayInventoryByDNameTest ) ;
result . add ( todayDepositoryInventory ) ;
result . add ( todayDepositoryInventory ) ;
todayInventory . put ( dname , todayDepositoryInventory ) ;
todayInventory . put ( dname , todayDepositoryInventory ) ;
( ( Map < String , Object > ) sourceList . get ( 0 ) ) . put ( dname , result . get ( i ) ) ;
( ( Map < String , Object > ) sourceList . get ( 0 ) ) . put ( dname , result . get ( i ) ) ;
}
}
for ( int num = 0 ; num < months . size ( ) - 1 ; num + + ) {
for ( int num = 0 ; num < months . size ( ) - 1 ; num + + ) {
@ -295,7 +301,7 @@ public class DepositoryController {
}
}
for ( int i = 0 ; i < depositoryAll . size ( ) ; i + + ) {
for ( int i = 0 ; i < depositoryAll . size ( ) ; i + + ) {
String dname = depositoryAll . get ( i ) . getDname ( ) ;
String dname = depositoryAll . get ( i ) . getDname ( ) ;
Integer todayDepositoryInventory = getInventoryByDname ( dname , toDayInventoryByDNameTest ) ;
Integer todayDepositoryInventory = getInventoryByDname ( dname , toDayInventoryByDNameTest ) ;
( ( Map < String , Object > ) sourceList . get ( 0 ) ) . put ( dname , todayDepositoryInventory ) ;
( ( Map < String , Object > ) sourceList . get ( 0 ) ) . put ( dname , todayDepositoryInventory ) ;
}
}
List < String > barSource = new ArrayList < > ( ) ;
List < String > barSource = new ArrayList < > ( ) ;
@ -310,11 +316,12 @@ public class DepositoryController {
/ * *
/ * *
* 获取当前仓库下的库存
* 获取当前仓库下的库存
*
* @param dname
* @param dname
* @param list
* @param list
* @return
* @return
* /
* /
public Integer getInventoryByDname ( String dname , List < InventoryByDname > list ) {
public Integer getInventoryByDname ( String dname , List < InventoryByDname > list ) {
for ( InventoryByDname inventoryByDname : list ) {
for ( InventoryByDname inventoryByDname : list ) {
if ( dname . equals ( inventoryByDname . getDname ( ) ) ) {
if ( dname . equals ( inventoryByDname . getDname ( ) ) ) {
return inventoryByDname . getInventory ( ) ;
return inventoryByDname . getInventory ( ) ;
@ -373,7 +380,7 @@ public class DepositoryController {
// 获取某个月某物料出库总额
// 获取某个月某物料出库总额
// 测试
// 测试
Integer wareHouseOutCountByMonth1 = depositoryRecordService . findMaterialCountByMonth2 ( parmOut ) ;
Integer wareHouseOutCountByMonth1 = depositoryRecordService . findMaterialCountByMonth2 ( parmOut ) ;
Integer wareHouseCount1 = ( int ) productData . get ( k + + ) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1 ;
Integer wareHouseCount1 = ( int ) productData . get ( k + + ) - wareHouseInCountByMonth1 + wareHouseOutCountByMonth1 ;
productData . add ( wareHouseCount1 ) ;
productData . add ( wareHouseCount1 ) ;
}
}
List < Object > result = new ArrayList < > ( ) ;
List < Object > result = new ArrayList < > ( ) ;
@ -397,7 +404,7 @@ public class DepositoryController {
@GetMapping ( "/warehouseRecord" )
@GetMapping ( "/warehouseRecord" )
public RestResponse findDepositoryRecordByCondition ( @RequestParam Map < String , Object > map , HttpServletRequest request ) {
public RestResponse findDepositoryRecordByCondition ( @RequestParam Map < String , Object > map , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
@ -419,7 +426,7 @@ public class DepositoryController {
@GetMapping ( "/allWarehouseByParent" )
@GetMapping ( "/allWarehouseByParent" )
public RestResponse findDepositoryByNoParent ( @RequestParam Map < String , Object > map , HttpServletRequest request ) {
public RestResponse findDepositoryByNoParent ( @RequestParam Map < String , Object > map , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
@ -452,7 +459,7 @@ public class DepositoryController {
@PostMapping ( "/realDeleteDepository" )
@PostMapping ( "/realDeleteDepository" )
public RestResponse realDeleteDepository ( @RequestBody Map < String , Object > map , HttpServletRequest request ) {
public RestResponse realDeleteDepository ( @RequestBody Map < String , Object > map , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
@ -508,7 +515,7 @@ public class DepositoryController {
@PostMapping ( "/depository" )
@PostMapping ( "/depository" )
public RestResponse insertDepository ( @RequestBody Map < String , Object > map , HttpServletRequest request ) {
public RestResponse insertDepository ( @RequestBody Map < String , Object > map , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
@ -524,7 +531,7 @@ public class DepositoryController {
@PostMapping ( "/depository_del" )
@PostMapping ( "/depository_del" )
public RestResponse deleteDepository ( @RequestBody Map < String , Object > map , HttpServletRequest request ) {
public RestResponse deleteDepository ( @RequestBody Map < String , Object > map , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
@ -581,7 +588,7 @@ public class DepositoryController {
@PostMapping ( "/EditDepositoryState" )
@PostMapping ( "/EditDepositoryState" )
public RestResponse EditDepositoryState ( @RequestBody Map < String , Object > map , HttpServletRequest request ) {
public RestResponse EditDepositoryState ( @RequestBody Map < String , Object > map , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
@ -682,7 +689,7 @@ public class DepositoryController {
// 获取当前登录用户
// 获取当前登录用户
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
@ -760,7 +767,7 @@ public class DepositoryController {
// 获取当前登录用户
// 获取当前登录用户
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
@ -878,7 +885,7 @@ public class DepositoryController {
public Map < String , Object > learnLayuiAndEchart_back ( @RequestParam ( "type" ) String type , HttpServletRequest request ) {
public Map < String , Object > learnLayuiAndEchart_back ( @RequestParam ( "type" ) String type , HttpServletRequest request ) {
// 获取当前登录用户
// 获取当前登录用户
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userByPort = AuthenticationTokenPool . getUserToken ( token ) ;
@ -949,14 +956,13 @@ public class DepositoryController {
drCountbyDrName . add ( depositoryRecordByDate1 ) ;
drCountbyDrName . add ( depositoryRecordByDate1 ) ;
show_data . put ( key . toString ( ) , ( ( ArrayList < Integer > ) drCountbyDrName ) . clone ( ) ) ;
show_data . put ( key . toString ( ) , ( ( ArrayList < Integer > ) drCountbyDrName ) . clone ( ) ) ;
}
}
}
} else {
else {
Future < Object > future = completionService . submit ( new distributeTasks ( type , 1 , userByPort , yesterdayData , depositoryName ) ) ;
Future < Object > future = completionService . submit ( new distributeTasks ( type , 1 , userByPort , yesterdayData , depositoryName ) ) ;
futureList . add ( future ) ;
futureList . add ( future ) ;
taskNum + = 1 ;
taskNum + = 1 ;
}
}
// 获取本月及之前月份各种类别入/出库总量
// 获取本月及之前月份各种类别入/出库总量
Future < Object > future = completionService . submit ( new distributeTasks ( type , 3 , userByPort , yesterdayData , depositoryName ) ) ;
Future < Object > future = completionService . submit ( new distributeTasks ( type , 3 , userByPort , yesterdayData , depositoryName ) ) ;
futureList . add ( future ) ;
futureList . add ( future ) ;
taskNum + = 1 ;
taskNum + = 1 ;
// 中国地图数据
// 中国地图数据
@ -966,7 +972,7 @@ public class DepositoryController {
Map < String , Object > mapData = new HashMap < > ( ) ;
Map < String , Object > mapData = new HashMap < > ( ) ;
if ( ! "0" . equals ( type ) ) {
if ( ! "0" . equals ( type ) ) {
Future < Object > future1 = completionService . submit ( new distributeTasks ( type , 4 , userByPort , yesterdayData , depositoryName ) ) ;
Future < Object > future1 = completionService . submit ( new distributeTasks ( type , 4 , userByPort , yesterdayData , depositoryName ) ) ;
futureList . add ( future1 ) ;
futureList . add ( future1 ) ;
taskNum + = 1 ;
taskNum + = 1 ;
}
}
@ -981,13 +987,13 @@ public class DepositoryController {
} catch ( InterruptedException | ExecutionException e ) {
} catch ( InterruptedException | ExecutionException e ) {
e . printStackTrace ( ) ;
e . printStackTrace ( ) ;
}
}
if ( sourceList = = null | | sourceList . size ( ) = = 0 ) {
if ( sourceList = = null | | sourceList . size ( ) = = 0 ) {
sourceList = ( List < Object > ) ( ( Map < String , Object > ) result ) . get ( "sourceList" ) ;
sourceList = ( List < Object > ) ( ( Map < String , Object > ) result ) . get ( "sourceList" ) ;
}
}
if ( show_data = = null | | show_data . size ( ) = = 0 ) {
if ( show_data = = null | | show_data . size ( ) = = 0 ) {
show_data = ( Map < String , Object > ) ( ( Map < String , Object > ) result ) . get ( "show_data" ) ;
show_data = ( Map < String , Object > ) ( ( Map < String , Object > ) result ) . get ( "show_data" ) ;
}
}
if ( mapData = = null | | mapData . size ( ) = = 0 ) {
if ( mapData = = null | | mapData . size ( ) = = 0 ) {
mapData = ( Map < String , Object > ) ( ( Map < String , Object > ) result ) . get ( "mapData" ) ;
mapData = ( Map < String , Object > ) ( ( Map < String , Object > ) result ) . get ( "mapData" ) ;
}
}
}
}
@ -1025,13 +1031,13 @@ public class DepositoryController {
} catch ( InterruptedException | ExecutionException e ) {
} catch ( InterruptedException | ExecutionException e ) {
e . printStackTrace ( ) ;
e . printStackTrace ( ) ;
}
}
if ( beforeInventoryByMonth = = null | | beforeInventoryByMonth . size ( ) = = 0 ) {
if ( beforeInventoryByMonth = = null | | beforeInventoryByMonth . size ( ) = = 0 ) {
beforeInventoryByMonth = ( List < Object > ) ( ( Map < String , Object > ) result ) . get ( "sourceListByMonth" ) ;
beforeInventoryByMonth = ( List < Object > ) ( ( Map < String , Object > ) result ) . get ( "sourceListByMonth" ) ;
}
}
if ( thisWeekInventoryByDName = = null | | thisWeekInventoryByDName . size ( ) = = 0 ) {
if ( thisWeekInventoryByDName = = null | | thisWeekInventoryByDName . size ( ) = = 0 ) {
thisWeekInventoryByDName = ( Map < String , Object > ) ( ( Map < String , Object > ) result ) . get ( "ThisWeekInventory" ) ;
thisWeekInventoryByDName = ( Map < String , Object > ) ( ( Map < String , Object > ) result ) . get ( "ThisWeekInventory" ) ;
}
}
if ( beforeInventoryOnMap = = null | | beforeInventoryOnMap . size ( ) = = 0 ) {
if ( beforeInventoryOnMap = = null | | beforeInventoryOnMap . size ( ) = = 0 ) {
beforeInventoryOnMap = ( Map < String , Object > ) ( ( Map < String , Object > ) result ) . get ( "MapInventory" ) ;
beforeInventoryOnMap = ( Map < String , Object > ) ( ( Map < String , Object > ) result ) . get ( "MapInventory" ) ;
}
}
}
}
@ -1039,8 +1045,7 @@ public class DepositoryController {
depository_data . put ( "sourceListByMonth" , beforeInventoryByMonth ) ;
depository_data . put ( "sourceListByMonth" , beforeInventoryByMonth ) ;
depository_data . put ( "ThisWeekInventory" , thisWeekInventoryByDName ) ;
depository_data . put ( "ThisWeekInventory" , thisWeekInventoryByDName ) ;
depository_data . put ( "MapInventory" , beforeInventoryOnMap ) ;
depository_data . put ( "MapInventory" , beforeInventoryOnMap ) ;
}
} else {
else {
// 如果不是
// 如果不是
depository_data . put ( "yesterdayData" , yesterdayData ) ;
depository_data . put ( "yesterdayData" , yesterdayData ) ;
depository_data . put ( "mapData" , mapData ) ;
depository_data . put ( "mapData" , mapData ) ;
@ -1058,61 +1063,7 @@ public class DepositoryController {
return resMap ;
return resMap ;
}
}
// 用于分发任务
public Map < String , Object > getShowData ( String type , UserByPort userByPort , Map < String , Integer > yesterdayData , List < String > depositoryName ) {
@Data
class distributeTasks implements Callable < Object > {
String type ; //请求类型
int taskType ; // 任务类型
UserByPort userByPort ; // 登录用户
Map < String , Integer > yesterdayData ; // 昨天的数据
List < String > depositoryName ; // 仓库名称
DepositoryService depositoryService ; // 操作depository的service
DepositoryRecordService depositoryRecordService ; // 操作订单的service
Map < String , Object > todayInventory ; // 当前仓库的额度
distributeTasks ( String type , int taskType , UserByPort userByPort , Map < String , Integer > yesterdayData , List < String > depositoryName ) {
this . taskType = taskType ; // 任务类型
this . type = type ; // 请求类型
this . userByPort = userByPort ; // 登录用户
this . yesterdayData = yesterdayData ; // 昨天的数据
this . depositoryName = depositoryName ; // 仓库名称
}
@Override
public Object call ( ) throws Exception {
// taskType 1为折线图2为饼图3为柱状图4为中国地图5为库存可视化中的折线图6为库存可视化中中国地图7为库存可视化中柱状图
Map < String , Object > result = new HashMap < > ( ) ;
if ( 1 = = taskType ) {
Map < String , Object > showData = getShowData ( type , userByPort , yesterdayData , depositoryName ) ;
result . put ( "show_data" , showData ) ;
} else if ( 2 = = taskType ) {
} else if ( 3 = = taskType ) {
List < Object > sourceList = getSourceList ( type ) ;
result . put ( "sourceList" , sourceList ) ;
} else if ( 4 = = taskType ) {
Map < String , Object > mapData = getMapData ( type ) ;
result . put ( "mapData" , mapData ) ;
} else if ( 5 = = taskType ) {
List < Object > beforeInventoryByMonth = getBeforeInventoryByMonth ( depositoryService , todayInventory , depositoryRecordService , userByPort ) ;
result . put ( "sourceListByMonth" , beforeInventoryByMonth ) ;
} else if ( 6 = = taskType ) {
Map < String , Object > thisWeekInventoryByDName = getThisWeekInventoryByDName ( depositoryService , depositoryRecordService , userByPort ) ;
result . put ( "ThisWeekInventory" , thisWeekInventoryByDName ) ;
} else if ( 7 = = taskType ) {
Map < String , Object > beforeInventoryOnMap = getBeforeInventoryOnMap ( depositoryService , depositoryRecordService , userByPort ) ;
result . put ( "MapInventory" , beforeInventoryOnMap ) ;
}
return result ;
}
}
// 用于获取折线图
public Map < String , Object > getShowData ( String type , UserByPort userByPort , Map < String , Integer > yesterdayData , List < String > depositoryName ) {
// 获取各仓库名称以及id
// 获取各仓库名称以及id
Map < String , Integer > depositoryAllNameAndId = depositoryService . findDepositoryAllNameAndId ( userByPort ) ;
Map < String , Integer > depositoryAllNameAndId = depositoryService . findDepositoryAllNameAndId ( userByPort ) ;
// 获取遍历器
// 获取遍历器
@ -1166,45 +1117,11 @@ public class DepositoryController {
return show_data ;
return show_data ;
}
}
@Data
class getApplicationRecordByDate implements Callable < Object > {
Object key ;
List < Long > days ;
Map < String , Integer > depositoryAllNameAndId ;
List < String > depositoryName ;
Map < String , Integer > yesterdayData ;
String type ;
Map < String , Object > show_data ;
getApplicationRecordByDate ( String type , Object key , List < Long > days , Map < String , Integer > depositoryAllNameAndId ) {
this . key = key ;
this . depositoryAllNameAndId = depositoryAllNameAndId ;
this . days = days ;
this . type = type ;
}
@Override
// 用于获取折线图
public Object call ( ) throws Exception {
int i ;
List < Integer > drCountbyDrName = new ArrayList < > ( ) ;
for ( i = days . size ( ) - 1 ; i > 0 ; i - - ) {
// 遍历 Map并计算各仓库的入库数
if ( i = = days . size ( ) - 1 ) {
depositoryName . add ( key . toString ( ) ) ;
}
Integer val = ( Integer ) depositoryAllNameAndId . get ( key ) ;
// 获取一段时间内的库存额度
Integer depositoryRecordByDate1 = depositoryRecordService . findApplicationRecordByDate ( days . get ( i - 1 ) , days . get ( i ) , Integer . parseInt ( type ) , val ) ;
drCountbyDrName . add ( depositoryRecordByDate1 ) ;
if ( i = = 2 ) {
yesterdayData . put ( key . toString ( ) , depositoryRecordByDate1 ) ;
}
}
show_data . put ( key . toString ( ) , drCountbyDrName ) ;
return null ;
}
}
//获取本月及之前月份各种类别入/出库总量
//获取本月及之前月份各种类别入/出库总量
public List < Object > getSourceList ( String type ) {
public List < Object > getSourceList ( String type ) {
Map < String , Object > previousMonth = getPreviousMonth ( ) ;
Map < String , Object > previousMonth = getPreviousMonth ( ) ;
List < Object > months = ( List < Object > ) previousMonth . get ( "months" ) ;
List < Object > months = ( List < Object > ) previousMonth . get ( "months" ) ;
@ -1215,8 +1132,8 @@ public class DepositoryController {
// 1.定义CompletionService
// 1.定义CompletionService
CompletionService < Object > completionService = new ExecutorCompletionService < Object > ( exs ) ;
CompletionService < Object > completionService = new ExecutorCompletionService < Object > ( exs ) ;
for ( int num = 0 ; num < months . size ( ) - 1 ; num + + ) {
for ( int num = 0 ; num < months . size ( ) - 1 ; num + + ) {
Map < String , Object > map = ( Map < String , Object > ) sourceList . get ( num ) ;
Map < String , Object > map = ( Map < String , Object > ) sourceList . get ( num ) ;
Future < Object > future = completionService . submit ( new getSourceListTask ( map , type , months . get ( num + 1 ) . toString ( ) , months . get ( num ) . toString ( ) ) ) ;
Future < Object > future = completionService . submit ( new getSourceListTask ( map , type , months . get ( num + 1 ) . toString ( ) , months . get ( num ) . toString ( ) ) ) ;
futureList . add ( future ) ;
futureList . add ( future ) ;
}
}
for ( int i = 0 ; i < months . size ( ) - 1 ; i + + ) {
for ( int i = 0 ; i < months . size ( ) - 1 ; i + + ) {
@ -1237,84 +1154,8 @@ public class DepositoryController {
return sourceList ;
return sourceList ;
}
}
// 具体执行getSourceList逻辑
class getSourceListTask implements Callable < Object > {
String type ;
String start ;
String end ;
Map < String , Object > map ;
getSourceListTask ( Map < String , Object > map , String type , String start , String end ) {
this . map = map ;
this . type = type ;
this . start = start ;
this . end = end ;
}
@Override
public Object call ( ) throws Exception {
List < MaterialType > materialTypeAll = materialTypeService . findMaterialTypeNoParent ( ) ;
ExecutorService exs = Executors . newFixedThreadPool ( materialTypeAll . size ( ) ) ;
// 结果集
List < Future < Object > > futureList = new ArrayList < Future < Object > > ( ) ;
// 1.定义CompletionService
CompletionService < Object > completionService = new ExecutorCompletionService < Object > ( exs ) ;
for ( int j = 0 ; j < materialTypeAll . size ( ) ; j + + ) {
Map < String , Object > parm = new HashMap < > ( ) ;
parm . put ( "type" , Integer . parseInt ( type ) ) ;
if ( Integer . parseInt ( type ) = = 1 ) {
parm . put ( "state" , "已入库" ) ;
} else if ( Integer . parseInt ( type ) = = 2 ) {
parm . put ( "state" , "已出库" ) ;
}
parm . put ( "start" , start ) ;
parm . put ( "end" , end ) ;
parm . put ( "oldId" , materialTypeAll . get ( j ) . getOldId ( ) ) ;
//根据条件获取月份中物料的总额
// 测试
Future < Object > future = completionService . submit ( new findMaterialCountTaskForSourceList ( parm ) ) ;
futureList . add ( future ) ;
}
for ( int i = 0 ; i < materialTypeAll . size ( ) ; i + + ) {
Object result = null ;
try {
result = completionService . take ( ) . get ( ) ;
} catch ( InterruptedException e ) {
e . printStackTrace ( ) ;
} catch ( ExecutionException e ) {
e . printStackTrace ( ) ;
}
map . putAll ( ( Map < ? extends String , ? > ) result ) ;
}
return map ;
}
}
// 根据条件获取月份中物料的总额用于sourcelist
class findMaterialCountTaskForSourceList implements Callable < Object > {
Map < String , Object > map ;
findMaterialCountTaskForSourceList ( Map < String , Object > map ) {
this . map = map ;
}
@Override
public Object call ( ) throws Exception {
Map < String , Object > result = new HashMap < > ( ) ;
Integer materialCountByMonth1 = depositoryRecordService . findMaterialCountByMonth2 ( map ) ;
Long oldId = Long . valueOf ( map . get ( "oldId" ) . toString ( ) ) ;
MaterialType materialTypeByOldId = materialTypeService . findMaterialTypeByOldId ( oldId ) ;
result . put ( materialTypeByOldId . getTname ( ) , materialCountByMonth1 ) ;
return result ;
}
}
// 中国地图数据
// 中国地图数据
public Map < String , Object > getMapData ( String type ) {
public Map < String , Object > getMapData ( String type ) {
List < Object > mapDataList = new ArrayList < > ( ) ;
List < Object > mapDataList = new ArrayList < > ( ) ;
Map < String , Object > previousMonth1 = getPreviousMonth ( ) ;
Map < String , Object > previousMonth1 = getPreviousMonth ( ) ;
List < Object > sourceList1 = ( List < Object > ) previousMonth1 . get ( "sourceList" ) ;
List < Object > sourceList1 = ( List < Object > ) previousMonth1 . get ( "sourceList" ) ;
@ -1336,7 +1177,7 @@ public class DepositoryController {
for ( int i = 0 ; i < materialTypeAll . size ( ) ; i + + ) {
for ( int i = 0 ; i < materialTypeAll . size ( ) ; i + + ) {
MaterialType mt = materialTypeAll . get ( i ) ;
MaterialType mt = materialTypeAll . get ( i ) ;
Future < Object > future = completionService . submit ( new findMapData ( previousMonth1 , type , mt ) ) ;
Future < Object > future = completionService . submit ( new findMapData ( previousMonth1 , type , mt ) ) ;
futureList . add ( future ) ;
futureList . add ( future ) ;
}
}
for ( int i = 0 ; i < materialTypeAll . size ( ) ; i + + ) {
for ( int i = 0 ; i < materialTypeAll . size ( ) ; i + + ) {
@ -1348,47 +1189,11 @@ public class DepositoryController {
}
}
mapDataList . add ( result ) ;
mapDataList . add ( result ) ;
}
}
Map < String , Object > mapData = new HashMap < > ( ) ;
Map < String , Object > mapData = new HashMap < > ( ) ;
mapData . put ( "mapDataList" , mapDataList ) ;
mapData . put ( "mapDataList" , mapDataList ) ;
return mapData ;
return mapData ;
}
}
class findMapData implements Callable < Object > {
String type ;
MaterialType mt ;
Map < String , Object > previousMonth1 ;
findMapData ( Map < String , Object > previousMonth1 , String type , MaterialType mt ) {
this . previousMonth1 = previousMonth1 ;
this . type = type ;
this . mt = mt ;
}
@Override
public Object call ( ) throws Exception {
List < Object > productData = new ArrayList < > ( ) ;
List < Object > months1 = ( List < Object > ) previousMonth1 . get ( "months" ) ;
productData . add ( mt . getTname ( ) ) ;
for ( int j = months1 . size ( ) - 1 ; j > 0 ; j - - ) {
Map < String , Object > parm = new HashMap < > ( ) ;
parm . put ( "type" , Integer . parseInt ( type ) ) ;
if ( Integer . parseInt ( type ) = = 1 ) {
parm . put ( "state" , "已入库" ) ;
} else if ( Integer . parseInt ( type ) = = 2 ) {
parm . put ( "state" , "已出库" ) ;
}
parm . put ( "start" , months1 . get ( j ) ) ;
parm . put ( "end" , months1 . get ( j - 1 ) ) ;
parm . put ( "oldId" , mt . getOldId ( ) ) ;
//根据条件获取月份中物料的总额
// 测试
Integer materialCountByMonth1 = depositoryRecordService . findMaterialCountByMonth2 ( parm ) ;
productData . add ( materialCountByMonth1 ) ;
}
return productData ;
}
}
/ * *
/ * *
* 根据物料编号查询所在仓库
* 根据物料编号查询所在仓库
*
*
@ -1398,7 +1203,7 @@ public class DepositoryController {
@GetMapping ( "/find_depository" )
@GetMapping ( "/find_depository" )
public RestResponse FindDepositoryByMid ( @RequestParam ( "mid" ) String mid , HttpServletRequest request ) {
public RestResponse FindDepositoryByMid ( @RequestParam ( "mid" ) String mid , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
@ -1420,7 +1225,6 @@ public class DepositoryController {
return null ;
return null ;
}
}
/ * *
/ * *
* 查找仓库内是否有物品
* 查找仓库内是否有物品
*
*
@ -1487,6 +1291,7 @@ public class DepositoryController {
/ * *
/ * *
* 根据父级编号查询所有关联信息
* 根据父级编号查询所有关联信息
*
* @param did 待查询仓库
* @param did 待查询仓库
* @return
* @return
* /
* /
@ -1529,6 +1334,7 @@ public class DepositoryController {
/ * *
/ * *
* 根据仓库编号查询与其有关的订单信息
* 根据仓库编号查询与其有关的订单信息
*
* @param depositoryId 待查询仓库id
* @param depositoryId 待查询仓库id
* @return
* @return
* /
* /
@ -1543,13 +1349,14 @@ public class DepositoryController {
/ * *
/ * *
* 查询当前仓库子仓库
* 查询当前仓库子仓库
*
* @param parentId
* @param parentId
* @return
* @return
* /
* /
@GetMapping ( "/findDepositoryByParent" )
@GetMapping ( "/findDepositoryByParent" )
public RestResponse FindDepositoryByParentId ( @RequestParam ( "parentId" ) String parentId , HttpServletRequest request ) {
public RestResponse FindDepositoryByParentId ( @RequestParam ( "parentId" ) String parentId , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
@ -1561,14 +1368,15 @@ public class DepositoryController {
/ * *
/ * *
* 查询当前仓库的管理员
* 查询当前仓库的管理员
* @param did 待查询仓库
*
* @param did 待查询仓库
* @param request
* @param request
* @return
* @return
* /
* /
@GetMapping ( "/findManagerByDid" )
@GetMapping ( "/findManagerByDid" )
public RestResponse FindManagerByDid ( @RequestParam ( "did" ) Integer did , HttpServletRequest request ) {
public RestResponse FindManagerByDid ( @RequestParam ( "did" ) Integer did , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
@ -1580,14 +1388,13 @@ public class DepositoryController {
list . add ( user ) ;
list . add ( user ) ;
}
}
int size = list . size ( ) ;
int size = list . size ( ) ;
return new RestResponse ( list , size , 200 ) ;
return new RestResponse ( list , size , 200 ) ;
}
}
@GetMapping ( "/findPostByCompany" )
@GetMapping ( "/findPostByCompany" )
public RestResponse findPostByCompany ( @RequestParam ( "company" ) String company , HttpServletRequest request ) {
public RestResponse findPostByCompany ( @RequestParam ( "company" ) String company , HttpServletRequest request ) {
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
@ -1598,18 +1405,18 @@ public class DepositoryController {
// 构造树选择框
// 构造树选择框
@GetMapping ( "/treeMenus" )
@GetMapping ( "/treeMenus" )
public RestResponse InitTreeMenus ( @RequestParam ( value = "adminorg" , required = false ) Integer adminorg , HttpServletRequest request ) {
public RestResponse InitTreeMenus ( @RequestParam ( value = "adminorg" , required = false ) Integer adminorg , HttpServletRequest request ) {
List < Object > list = new ArrayList < > ( ) ;
List < Object > list = new ArrayList < > ( ) ;
// 获取当前登录的用户
// 获取当前登录的用户
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
if ( Integer . compare ( 0 , adminorg ) = = 0 ) {
if ( Integer . compare ( 0 , adminorg ) = = 0 ) {
list = depositoryService . InitTreeMenus ( "" , userToken ) ;
list = depositoryService . InitTreeMenus ( "" , userToken ) ;
} else {
} else {
list = depositoryService . InitTreeMenus ( adminorg . toString ( ) , userToken ) ;
list = depositoryService . InitTreeMenus ( adminorg . toString ( ) , userToken ) ;
}
}
return new RestResponse ( list ) ;
return new RestResponse ( list ) ;
@ -1617,7 +1424,7 @@ public class DepositoryController {
// 构造库位树
// 构造库位树
@GetMapping ( "/treeMenus_Place" )
@GetMapping ( "/treeMenus_Place" )
public RestResponse InitTreeMenus_Place ( @RequestParam ( value = "depositoryId" ) Integer depositoryId ) {
public RestResponse InitTreeMenus_Place ( @RequestParam ( value = "depositoryId" ) Integer depositoryId ) {
List < Object > list = new ArrayList < > ( ) ;
List < Object > list = new ArrayList < > ( ) ;
list = depositoryService . InitTreeMenus_Place ( depositoryId ) ;
list = depositoryService . InitTreeMenus_Place ( depositoryId ) ;
return new RestResponse ( list ) ;
return new RestResponse ( list ) ;
@ -1630,12 +1437,11 @@ public class DepositoryController {
return new RestResponse ( depositoryRecordById ) ;
return new RestResponse ( depositoryRecordById ) ;
}
}
@GetMapping ( "/findDepositoryCountInfo" )
@GetMapping ( "/findDepositoryCountInfo" )
public RestResponse findDepositoryCountInfo ( HttpServletRequest request ) {
public RestResponse findDepositoryCountInfo ( HttpServletRequest request ) {
// 获取当前登录的用户
// 获取当前登录的用户
String token = request . getHeader ( "user-token" ) ;
String token = request . getHeader ( "user-token" ) ;
if ( token = = null ) {
if ( token = = null ) {
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
token = ( String ) request . getSession ( ) . getAttribute ( "userToken" ) ;
}
}
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
UserByPort userToken = AuthenticationTokenPool . getUserToken ( token ) ;
@ -1658,43 +1464,63 @@ public class DepositoryController {
Integer inventoryCount = materialService . findInventoryCountByDepository ( depositoryIdList ) ;
Integer inventoryCount = materialService . findInventoryCountByDepository ( depositoryIdList ) ;
Map < String , Integer > result = new HashMap < > ( ) ;
Map < String , Integer > result = new HashMap < > ( ) ;
result . put ( "wareHouseCount" , depositoryIdList . size ( ) ) ;
result . put ( "wareHouseCount" , depositoryIdList . size ( ) ) ;
result . put ( "inventoryCount" , inventoryCount ) ;
result . put ( "inventoryCount" , inventoryCount ) ;
return new RestResponse ( result ) ;
return new RestResponse ( result ) ;
}
}
// 构造仓库二维码
// 构造仓库二维码
@PostMapping ( "/createQrCode" )
@PostMapping ( "/createQrCode" )
public RestResponse createQrCode ( @RequestBody Map < String , Object > map ) {
public RestResponse createQrCode ( @RequestBody Map < String , Object > map ) {
// 通过雪花算法计算随机数
Snowflake snowflake = new Snowflake ( 10 , 10 , true ) ;
String qrCode = snowflake . nextIdStr ( ) ;
Integer depositoryId = ObjectFormatUtil . toInteger ( map . get ( "depositoryId" ) ) ;
Integer depositoryId = ObjectFormatUtil . toInteger ( map . get ( "depositoryId" ) ) ;
Depository depository = depositoryService . findDepositoryById ( depositoryId ) ;
Depository depository = depositoryService . findDepositoryById ( depositoryId ) ;
String qrCodeByDepository = depositoryService . findQrCodeByDepository ( depository . getId ( ) ) ;
String qrCode = depositoryService . findQrCodeByDepository ( depository . getId ( ) ) ;
if ( qrCodeByDepository = = null ) {
Map < String , Object > param = new HashMap < > ( ) ;
param . put ( "depositoryId" , depository . getId ( ) ) ;
param . put ( "qrCode" , qrCode ) ;
depositoryService . addQrCodeByDepository ( param ) ;
} else {
qrCode = qrCodeByDepository ;
}
try {
try {
// 二维码保存信息
// 二维码保存信息
return RestResponse . CreateBarCode ( qrCode , depository . getDname ( ) ) ;
return RestResponse . CreateBarCode ( qrCode , depository . getDname ( ) ) ;
} catch ( IOException e ) {
} catch ( IOException e ) {
return new RestResponse ( "err: " + e . getMessage ( ) , 678 , new StatusInfo ( "失败" , "请联系开发人员" ) ) ;
return new RestResponse ( "err: " + e . getMessage ( ) , 678 , new StatusInfo ( "失败" , "请联系开发人员" ) ) ;
}
}
}
}
@GetMapping ( "/allBarCodeImgForDepository" )
public void allBarCodeImgForDepository ( @RequestParam Map < String , Object > map , HttpServletRequest request , HttpServletResponse response ) {
// 获取当前仓库id
Integer id = ObjectFormatUtil . toInteger ( map . get ( "id" ) ) ;
// 获取当前仓库
Depository depository = depositoryService . findDepositoryById ( id ) ;
List < Place > placeByDid = placeService . findPlaceByDid ( depository . getId ( ) ) ;
List < File > qrCodeListForPlaces = new ArrayList < > ( ) ;
for ( Place place : placeByDid
) {
String qrCodeByDepository = placeService . findQrCodeByPlace ( place . getId ( ) ) ;
String qrCode = CreateQrCodeUtil . CreateBarCode128 ( qrCodeByDepository , depository . getDname ( ) + "-" + place . getCode ( ) , 60 , 200 ) ;
try {
File file = RestResponse . base64ToFile ( qrCode ) ;
qrCodeListForPlaces . add ( file ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
}
// 将其暂存到本地
String qrCodeByDepository = depositoryService . findQrCodeByDepository ( depository . getId ( ) ) ;
String qrCode = CreateQrCodeUtil . CreateBarCode128 ( qrCodeByDepository , depository . getDname ( ) , 60 , 200 ) ;
try {
File file = RestResponse . base64ToFile ( qrCode ) ;
qrCodeListForPlaces . add ( file ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
ZipMultiFileUtil . zipDownload ( response , depository . getDname ( ) + "图片.zip" , qrCodeListForPlaces ) ;
}
/ * *
/ * *
* 用于获取当前仓库的所有子类
* 用于获取当前仓库的所有子类
*
* @param d 待查询仓库
* @param d 待查询仓库
* @return
* @return
* /
* /
@ -1720,7 +1546,7 @@ public class DepositoryController {
* 判断当前id是否在ids中
* 判断当前id是否在ids中
*
*
* @param parentList 父级列表
* @param parentList 父级列表
* @param id 待判断id
* @param id 待判断id
* @return
* @return
* /
* /
public Boolean isTrueForParent ( List < Integer > parentList , Integer id ) {
public Boolean isTrueForParent ( List < Integer > parentList , Integer id ) {
@ -1731,4 +1557,207 @@ public class DepositoryController {
}
}
return false ;
return false ;
}
}
// 用于分发任务
@Data
class distributeTasks implements Callable < Object > {
String type ; //请求类型
int taskType ; // 任务类型
UserByPort userByPort ; // 登录用户
Map < String , Integer > yesterdayData ; // 昨天的数据
List < String > depositoryName ; // 仓库名称
DepositoryService depositoryService ; // 操作depository的service
DepositoryRecordService depositoryRecordService ; // 操作订单的service
Map < String , Object > todayInventory ; // 当前仓库的额度
distributeTasks ( String type , int taskType , UserByPort userByPort , Map < String , Integer > yesterdayData , List < String > depositoryName ) {
this . taskType = taskType ; // 任务类型
this . type = type ; // 请求类型
this . userByPort = userByPort ; // 登录用户
this . yesterdayData = yesterdayData ; // 昨天的数据
this . depositoryName = depositoryName ; // 仓库名称
}
@Override
public Object call ( ) throws Exception {
// taskType 1为折线图2为饼图3为柱状图4为中国地图5为库存可视化中的折线图6为库存可视化中中国地图7为库存可视化中柱状图
Map < String , Object > result = new HashMap < > ( ) ;
if ( 1 = = taskType ) {
Map < String , Object > showData = getShowData ( type , userByPort , yesterdayData , depositoryName ) ;
result . put ( "show_data" , showData ) ;
} else if ( 2 = = taskType ) {
} else if ( 3 = = taskType ) {
List < Object > sourceList = getSourceList ( type ) ;
result . put ( "sourceList" , sourceList ) ;
} else if ( 4 = = taskType ) {
Map < String , Object > mapData = getMapData ( type ) ;
result . put ( "mapData" , mapData ) ;
} else if ( 5 = = taskType ) {
List < Object > beforeInventoryByMonth = getBeforeInventoryByMonth ( depositoryService , todayInventory , depositoryRecordService , userByPort ) ;
result . put ( "sourceListByMonth" , beforeInventoryByMonth ) ;
} else if ( 6 = = taskType ) {
Map < String , Object > thisWeekInventoryByDName = getThisWeekInventoryByDName ( depositoryService , depositoryRecordService , userByPort ) ;
result . put ( "ThisWeekInventory" , thisWeekInventoryByDName ) ;
} else if ( 7 = = taskType ) {
Map < String , Object > beforeInventoryOnMap = getBeforeInventoryOnMap ( depositoryService , depositoryRecordService , userByPort ) ;
result . put ( "MapInventory" , beforeInventoryOnMap ) ;
}
return result ;
}
}
@Data
class getApplicationRecordByDate implements Callable < Object > {
Object key ;
List < Long > days ;
Map < String , Integer > depositoryAllNameAndId ;
List < String > depositoryName ;
Map < String , Integer > yesterdayData ;
String type ;
Map < String , Object > show_data ;
getApplicationRecordByDate ( String type , Object key , List < Long > days , Map < String , Integer > depositoryAllNameAndId ) {
this . key = key ;
this . depositoryAllNameAndId = depositoryAllNameAndId ;
this . days = days ;
this . type = type ;
}
@Override
public Object call ( ) throws Exception {
int i ;
List < Integer > drCountbyDrName = new ArrayList < > ( ) ;
for ( i = days . size ( ) - 1 ; i > 0 ; i - - ) {
// 遍历 Map并计算各仓库的入库数
if ( i = = days . size ( ) - 1 ) {
depositoryName . add ( key . toString ( ) ) ;
}
Integer val = ( Integer ) depositoryAllNameAndId . get ( key ) ;
// 获取一段时间内的库存额度
Integer depositoryRecordByDate1 = depositoryRecordService . findApplicationRecordByDate ( days . get ( i - 1 ) , days . get ( i ) , Integer . parseInt ( type ) , val ) ;
drCountbyDrName . add ( depositoryRecordByDate1 ) ;
if ( i = = 2 ) {
yesterdayData . put ( key . toString ( ) , depositoryRecordByDate1 ) ;
}
}
show_data . put ( key . toString ( ) , drCountbyDrName ) ;
return null ;
}
}
// 具体执行getSourceList逻辑
class getSourceListTask implements Callable < Object > {
String type ;
String start ;
String end ;
Map < String , Object > map ;
getSourceListTask ( Map < String , Object > map , String type , String start , String end ) {
this . map = map ;
this . type = type ;
this . start = start ;
this . end = end ;
}
@Override
public Object call ( ) throws Exception {
List < MaterialType > materialTypeAll = materialTypeService . findMaterialTypeNoParent ( ) ;
ExecutorService exs = Executors . newFixedThreadPool ( materialTypeAll . size ( ) ) ;
// 结果集
List < Future < Object > > futureList = new ArrayList < Future < Object > > ( ) ;
// 1.定义CompletionService
CompletionService < Object > completionService = new ExecutorCompletionService < Object > ( exs ) ;
for ( int j = 0 ; j < materialTypeAll . size ( ) ; j + + ) {
Map < String , Object > parm = new HashMap < > ( ) ;
parm . put ( "type" , Integer . parseInt ( type ) ) ;
if ( Integer . parseInt ( type ) = = 1 ) {
parm . put ( "state" , "已入库" ) ;
} else if ( Integer . parseInt ( type ) = = 2 ) {
parm . put ( "state" , "已出库" ) ;
}
parm . put ( "start" , start ) ;
parm . put ( "end" , end ) ;
parm . put ( "oldId" , materialTypeAll . get ( j ) . getOldId ( ) ) ;
//根据条件获取月份中物料的总额
// 测试
Future < Object > future = completionService . submit ( new findMaterialCountTaskForSourceList ( parm ) ) ;
futureList . add ( future ) ;
}
for ( int i = 0 ; i < materialTypeAll . size ( ) ; i + + ) {
Object result = null ;
try {
result = completionService . take ( ) . get ( ) ;
} catch ( InterruptedException e ) {
e . printStackTrace ( ) ;
} catch ( ExecutionException e ) {
e . printStackTrace ( ) ;
}
map . putAll ( ( Map < ? extends String , ? > ) result ) ;
}
return map ;
}
}
// 根据条件获取月份中物料的总额用于sourcelist
class findMaterialCountTaskForSourceList implements Callable < Object > {
Map < String , Object > map ;
findMaterialCountTaskForSourceList ( Map < String , Object > map ) {
this . map = map ;
}
@Override
public Object call ( ) throws Exception {
Map < String , Object > result = new HashMap < > ( ) ;
Integer materialCountByMonth1 = depositoryRecordService . findMaterialCountByMonth2 ( map ) ;
Long oldId = Long . valueOf ( map . get ( "oldId" ) . toString ( ) ) ;
MaterialType materialTypeByOldId = materialTypeService . findMaterialTypeByOldId ( oldId ) ;
result . put ( materialTypeByOldId . getTname ( ) , materialCountByMonth1 ) ;
return result ;
}
}
class findMapData implements Callable < Object > {
String type ;
MaterialType mt ;
Map < String , Object > previousMonth1 ;
findMapData ( Map < String , Object > previousMonth1 , String type , MaterialType mt ) {
this . previousMonth1 = previousMonth1 ;
this . type = type ;
this . mt = mt ;
}
@Override
public Object call ( ) throws Exception {
List < Object > productData = new ArrayList < > ( ) ;
List < Object > months1 = ( List < Object > ) previousMonth1 . get ( "months" ) ;
productData . add ( mt . getTname ( ) ) ;
for ( int j = months1 . size ( ) - 1 ; j > 0 ; j - - ) {
Map < String , Object > parm = new HashMap < > ( ) ;
parm . put ( "type" , Integer . parseInt ( type ) ) ;
if ( Integer . parseInt ( type ) = = 1 ) {
parm . put ( "state" , "已入库" ) ;
} else if ( Integer . parseInt ( type ) = = 2 ) {
parm . put ( "state" , "已出库" ) ;
}
parm . put ( "start" , months1 . get ( j ) ) ;
parm . put ( "end" , months1 . get ( j - 1 ) ) ;
parm . put ( "oldId" , mt . getOldId ( ) ) ;
//根据条件获取月份中物料的总额
// 测试
Integer materialCountByMonth1 = depositoryRecordService . findMaterialCountByMonth2 ( parm ) ;
productData . add ( materialCountByMonth1 ) ;
}
return productData ;
}
}
}
}