提交 ec14ceef authored 作者: zhoushaopan's avatar zhoushaopan

feat(大屏模块): 新增大屏相关接口

新增大屏相关接口
上级 8ca76ac3
...@@ -11,6 +11,7 @@ import org.springframework.data.repository.query.Param; ...@@ -11,6 +11,7 @@ import org.springframework.data.repository.query.Param;
import javax.transaction.Transactional; import javax.transaction.Transactional;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author dengdiyi * @author dengdiyi
...@@ -274,5 +275,27 @@ public interface DeviceLibraryDao extends JpaRepository<DeviceLibrary, Integer>, ...@@ -274,5 +275,27 @@ public interface DeviceLibraryDao extends JpaRepository<DeviceLibrary, Integer>,
@Transactional @Transactional
@Query("update DeviceLibrary d set d.model = :newModel where d.packingId in :packingIds") @Query("update DeviceLibrary d set d.model = :newModel where d.packingId in :packingIds")
int batchUpdateDevicesByPackingIds(@Param("newModel")String newModel, @Param("packingIds")List<Integer> packingIds); int batchUpdateDevicesByPackingIds(@Param("newModel")String newModel, @Param("packingIds")List<Integer> packingIds);
@Query(value = "SELECT COUNT(*) as num FROM device_library where delete_tag = 0 AND life_status =2", nativeQuery = true)
Long getInLibraryCount();
@Query(value = "SELECT own_unit,COUNT(*) as num FROM device_library where delete_tag = 0 AND life_status =2 GROUP BY own_unit", nativeQuery = true)
List<Map<String, Object>> getInCountByUnit();
@Query(value = "SELECT model,COUNT(*) as num FROM device_library where delete_tag = 0 AND life_status =2 GROUP BY model", nativeQuery = true)
List<Map<String, Object>> getInCountByModel();
@Query(value = "SELECT COUNT(*) as num FROM device_library where own_unit IN ?1 AND life_status = 2", nativeQuery = true)
Long getDevNumInUnitList(List<String> unitNameList);
@Query(value = "SELECT life_status,COUNT(*) as num FROM device_library where own_unit IN ?1 GROUP BY life_status", nativeQuery = true)
List<Map<String, Object>> getDevNumInUnitListAndStatus(List<String> unitNameList);
@Query(value = "SELECT life_status,COUNT(*) as num FROM device_library where own_unit = ?1 GROUP BY life_status", nativeQuery = true)
List<Map<String, Object>> getDevNumInUnitList(String ownerUnitName);
} }
...@@ -3,10 +3,14 @@ package com.tykj.dev.device.loss.repository; ...@@ -3,10 +3,14 @@ package com.tykj.dev.device.loss.repository;
import com.tykj.dev.device.loss.entity.domain.DeviceLoss; import com.tykj.dev.device.loss.entity.domain.DeviceLoss;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List; import java.util.List;
public interface LossDao extends JpaRepository<DeviceLoss, Integer>, JpaSpecificationExecutor<DeviceLoss> { public interface LossDao extends JpaRepository<DeviceLoss, Integer>, JpaSpecificationExecutor<DeviceLoss> {
List<DeviceLoss> findAllByUnitId(Integer unitId); List<DeviceLoss> findAllByUnitId(Integer unitId);
@Query(value = "SELECT COUNT(*) FROM device_loss WHERE delete_tag = 0 AND type = ?1", nativeQuery = true)
Long getCount(Integer type);
} }
...@@ -46,6 +46,41 @@ ...@@ -46,6 +46,41 @@
<groupId>com.tykj.dev</groupId> <groupId>com.tykj.dev</groupId>
<artifactId>config</artifactId> <artifactId>config</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-storage</artifactId>
</dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-scrap</artifactId>
</dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-destroy</artifactId>
</dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-decommissioning</artifactId>
</dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-repair</artifactId>
</dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-loss</artifactId>
</dependency>
<dependency>
<groupId>com.tykj</groupId>
<artifactId>dev-sendback</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>
\ No newline at end of file
package com.tykj.dev.device.screen.subject.controller;
import com.tykj.dev.config.Log;
import com.tykj.dev.device.user.subject.dao.UnitsDao;
import com.tykj.dev.device.user.subject.entity.Units;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author: zsp
* @create: 2022-12-02 10:03
**/
@Component
@Slf4j
@Data
public class InitUnitScree {
public List<String> provinceNameList = new ArrayList<>();
public List<Integer> cityIdList = new ArrayList<>();
@Resource
private UnitsDao unitsDao;
@PostConstruct
public void init() {
List<String> province = unitsDao.getNameListByLevel(1);
List<String> daiGuan = unitsDao.findAllByEscrow(1).get().stream().map(Units::getName).collect(Collectors.toList());
provinceNameList.addAll(province);
provinceNameList.addAll(daiGuan);
log.info("省级名称为:{}",provinceNameList);
cityIdList = unitsDao.getIdListByLevel(2);
log.info("市单位ID为:{}",cityIdList);
}
}
...@@ -5,6 +5,7 @@ import com.tykj.dev.config.swagger.AutoDocument; ...@@ -5,6 +5,7 @@ import com.tykj.dev.config.swagger.AutoDocument;
import com.tykj.dev.config.vo.ConfigVo; import com.tykj.dev.config.vo.ConfigVo;
import com.tykj.dev.device.screen.subject.entity.CheckArg; import com.tykj.dev.device.screen.subject.entity.CheckArg;
import com.tykj.dev.device.screen.subject.service.CheckMapTask; import com.tykj.dev.device.screen.subject.service.CheckMapTask;
import com.tykj.dev.device.screen.subject.service.ScreeService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
...@@ -14,8 +15,10 @@ import org.springframework.transaction.annotation.Transactional; ...@@ -14,8 +15,10 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* @author ozoz * @author ozoz
...@@ -31,11 +34,26 @@ public class ScreenController { ...@@ -31,11 +34,26 @@ public class ScreenController {
@Autowired @Autowired
private CheckMapTask checkMapTask; private CheckMapTask checkMapTask;
@Resource
private ScreeService screeService;
@ApiOperation(value = "自核查接口", notes = "添加系统配置变量值") @ApiOperation(value = "自核查接口", notes = "添加系统配置变量值")
@GetMapping(value = "/check") @GetMapping(value = "/check")
public ResponseEntity<HashMap<String, List<MapCheckVO>>> add() { public ResponseEntity<HashMap<String, List<MapCheckVO>>> add() {
return ResponseEntity.ok(checkMapTask.getData()); return ResponseEntity.ok(checkMapTask.getData());
} }
@ApiOperation(value = "大屏周围数据", notes = "大屏周围数据")
@GetMapping(value = "/getAroundData")
public ResponseEntity<Map<String,Object>> getAroundData() {
return ResponseEntity.ok(screeService.getScreeAroundData());
}
@ApiOperation(value = "大屏板块数据", notes = "大屏板块数据")
@GetMapping(value = "/getCoreData")
public ResponseEntity<Map<String,Object>> getCoreData(Integer flag, Integer id) {
return ResponseEntity.ok(screeService.getAreaData(flag,id));
}
} }
package com.tykj.dev.device.screen.subject.service;
import java.util.Map;
/**
* @author: zsp
* @create: 2022-12-01 14:34
**/
public interface ScreeService {
/**
* 获取大屏周围数据
* @return 数据集合
*/
Map<String, Object> getScreeAroundData();
/**
* 获取地图 数据
* @param flag 0 代表查询省
* @param id 单位ID
* flag =0 查询省 flag = 0,id = "1" 查询单位id为1的单位以及下级
* @return 地图数据
*/
Map<String,Object> getAreaData(Integer flag,Integer id);
}
package com.tykj.dev.device.screen.subject.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.tykj.dev.config.base.DeviceLifeStatus;
import com.tykj.dev.device.allot.repository.AllotBackBillDao;
import com.tykj.dev.device.allot.repository.AllotBillDao;
import com.tykj.dev.device.apply.repository.DeviceApplyBillDao;
import com.tykj.dev.device.confirmcheck.repository.DeviceCheckStatDao;
import com.tykj.dev.device.decommissioning.repository.DeviceDecommissioningDetailDao;
import com.tykj.dev.device.destroy.repository.DeviceDestroyBillDao;
import com.tykj.dev.device.library.repository.DeviceLibraryDao;
import com.tykj.dev.device.loss.repository.LossDao;
import com.tykj.dev.device.repair.repository.RepairBillDao;
import com.tykj.dev.device.scrap.repository.ScrapDao;
import com.tykj.dev.device.screen.subject.controller.InitUnitScree;
import com.tykj.dev.device.screen.subject.service.CheckMapTask;
import com.tykj.dev.device.screen.subject.service.ScreeService;
import com.tykj.dev.device.screen.subject.vo.LeftOneVO;
import com.tykj.dev.device.selfcheck.repository.SelfCheckBillDao;
import com.tykj.dev.device.sendback.repository.DeviceRepelDao;
import com.tykj.dev.device.storage.repository.StorageBillDao;
import com.tykj.dev.device.task.repository.TaskDao;
import com.tykj.dev.device.task.subject.domin.Task;
import com.tykj.dev.device.user.cache.UnitsCache;
import com.tykj.dev.device.user.subject.dao.UnitsDao;
import com.tykj.dev.device.user.subject.entity.Units;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* @author: zsp
* @create: 2022-12-01 14:34
**/
@Service
public class ScreeServiceImpl implements ScreeService {
@Resource
private StorageBillDao storageBillDao;
@Resource
private DeviceLibraryDao deviceLibraryDao;
@Resource
private DeviceApplyBillDao deviceApplyBillDao;
@Resource
private AllotBillDao allotBillDao;
@Resource
private SelfCheckBillDao selfCheckBillDao;
@Resource
private ScrapDao scrapDao;
@Resource
private DeviceDestroyBillDao deviceDestroyBillDao;
@Resource
private DeviceDecommissioningDetailDao deviceDecommissioningDetailDao;
@Resource
private RepairBillDao repairBillDao;
@Resource
private LossDao lossDao;
@Resource
private DeviceRepelDao deviceRepelDao;
@Resource
private AllotBackBillDao accountBackBillDao;
@Resource
private TaskDao taskDao;
@Resource
private DeviceCheckStatDao checkStatDao;
@Resource
private CheckMapTask checkMapTask;
@Resource
private UnitsCache unitsCache;
@Resource
private UnitsDao unitsDao;
@Resource
private InitUnitScree initUnitScree;
@Override
public Map<String, Object> getScreeAroundData() {
Map<String, Object> map = new HashMap<>();
//左边第一个(全省ZB一览)
LeftOneVO leftOneVO = new LeftOneVO();
//入库数量
leftOneVO.setStorageCount(storageBillDao.getStorageCount());
//清退数量 todo --zjm
//库存总数量
leftOneVO.setTotalDevicesCount(deviceLibraryDao.getInLibraryCount());
map.put("leftOneVO", leftOneVO);
//todo --zjm 人员管理
//左边第三个(ZB库存)
// List<Map<String, Object>> leftThree = deviceLibraryDao.getInCountByUnit();
// map.put("leftThree", leftThree);
//查询所有的省的名称
JSONObject leftThree = new JSONObject();
// List<String> shengNameList = unitsDao.getNameListByLevel(1);
// List<String> collect = unitsDao.findAllByEscrow(1).get().stream().map(Units::getName).collect(Collectors.toList());
// shengNameList.addAll(collect);
List<String> provinceNameList = initUnitScree.getProvinceNameList();
Long inUnitList = deviceLibraryDao.getDevNumInUnitList(provinceNameList);
leftThree.put("省级",inUnitList);
//查询所有的市
// List<Integer> unitIdList = unitsDao.getIdListByLevel(2);
List<Integer> unitIdList = initUnitScree.getCityIdList();
unitIdList.forEach(unitId -> {
Units units = unitsCache.findById(unitId);
List<Units> unitsList = unitsCache.findByIdSubordinateAndOneself(unitId);
Long num = deviceLibraryDao.getDevNumInUnitList(unitsList.stream().map(Units::getName).collect(Collectors.toList()));
leftThree.put(units.getName().substring(0,2), num);
});
map.put("leftThree",leftThree);
//中间部分(业务流转)
JSONObject centerData = new JSONObject();
//申请
centerData.put("申请", deviceApplyBillDao.count());
//入库
centerData.put("入库", storageBillDao.count());
//配发
centerData.put("配发", allotBillDao.count());
List<Task> checks = taskDao.findCheckCountInScreen();
int allCheckSize = checks.size();
long checkSize = checks.stream().parallel().filter(o -> "check".equals(o.getCustomInfo())).count();
//核查
centerData.put("核查", checkSize);
//检查
centerData.put("检查", allCheckSize - checkSize);
//自查
centerData.put("自查", selfCheckBillDao.count());
//报废
centerData.put("报废", scrapDao.count());
//销毁
centerData.put("销毁", deviceDestroyBillDao.count());
//退役
centerData.put("退役", deviceDecommissioningDetailDao.count());
//维修
centerData.put("维修", repairBillDao.count());
//丢失
centerData.put("丢失", lossDao.getCount(1));
//找回
centerData.put("找回", lossDao.getCount(2));
//退回
centerData.put("退回", accountBackBillDao.count());
//清退
centerData.put("清退", deviceRepelDao.count());
map.put("centerData", centerData);
//右边第一部分 (设备形态分布)
List<Map<String, Object>> inCountByModel = deviceLibraryDao.getInCountByModel();
map.put("modelData", inCountByModel);
return map;
}
@Override
public Map<String, Object> getAreaData(Integer flag,Integer id) {
Map<String,Object> map = new HashMap<String, Object>();
//数据结构
//刚刚进来 就是 浙江省
List<String> provinceNameList = initUnitScree.getProvinceNameList();
List<Integer> unitIdList = initUnitScree.getCityIdList();
if (flag == 0){
//查第一级别
List<Map<String, Object>> mapList = deviceLibraryDao.getDevNumInUnitListAndStatus(provinceNameList);
map.put("省级",mapList);
//各个市
// JSONObject cityObj = new JSONObject();
unitIdList.forEach(unitId -> {
JSONObject cityObj = new JSONObject();
Units units = unitsCache.findById(unitId);
List<Units> unitsList = unitsCache.findByIdSubordinateAndOneself(unitId);
List<Map<String, Object>> cityMap = deviceLibraryDao.getDevNumInUnitListAndStatus(unitsList.stream().map(Units::getName).collect(Collectors.toList()));
String substring = units.getName().substring(0, 3);
cityObj.put("name",substring);
cityObj.put("id",unitId);
cityObj.put("dataMap",cityMap);
map.put(substring,cityObj);
});
return map;
}else {
//传递杭州市即可
List<Units> unitsCacheByIdSubordinateAndOneself = unitsCache.findByIdSubordinateAndOneself(id);
unitsCacheByIdSubordinateAndOneself.forEach(units1 -> {
String name = units1.getName();
List<Map<String, Object>> daoDevNumInUnitList = deviceLibraryDao.getDevNumInUnitList(name);
map.put(name.substring(0,3),daoDevNumInUnitList);
});
return map;
}
}
}
package com.tykj.dev.device.screen.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author: zsp
* @create: 2022-12-01 14:22
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("大屏左边第一个vo")
public class LeftOneVO {
@ApiModelProperty(name = "storageCount",value = "入库数量")
private Long storageCount;
@ApiModelProperty(name = "sendBackCount",value = "清退数量")
private Integer sendBackCount;
@ApiModelProperty(name = "totalDevicesCount",value = "总库存数量")
private Long totalDevicesCount;
}
package com.tykj.dev.device.screen.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Map;
/**
* @author: zsp
* @create: 2022-12-01 14:22
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("大屏左边第三个vo")
public class LeftThreeVO {
@ApiModelProperty(name = "data",value = "返回每个市的数量")
private Map<String, Object> data;
}
package com.tykj.dev.device.screen.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author: zsp
* @create: 2022-12-01 14:22
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("大屏左边第二个vo")
public class LeftTwoVO {
@ApiModelProperty(name = "trainCount",value = "培训次数")
private Integer trainCount;
@ApiModelProperty(name = "studyCount",value = "学习数量")
private Integer studyCount;
@ApiModelProperty(name = "paperCount",value = "考试数量")
private Integer paperCount;
}
package com.tykj.dev.device.screen.subject.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author: zsp
* @create: 2022-12-01 14:16
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("大屏周围的vo")
public class ScreeAroundVO {
@ApiModelProperty(name = "trainCount",value = "培训次数")
private Integer trainCount;
@ApiModelProperty(name = "studyCount",value = "学习数量")
private Integer studyCount;
@ApiModelProperty(name = "paperCount",value = "考试数量")
private Integer paperCount;
}
...@@ -3,6 +3,7 @@ package com.tykj.dev.device.storage.repository; ...@@ -3,6 +3,7 @@ package com.tykj.dev.device.storage.repository;
import com.tykj.dev.device.storage.subject.domin.StorageBill; import com.tykj.dev.device.storage.subject.domin.StorageBill;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import java.util.List; import java.util.List;
...@@ -11,4 +12,11 @@ import java.util.List; ...@@ -11,4 +12,11 @@ import java.util.List;
*/ */
public interface StorageBillDao extends JpaRepository<StorageBill, Integer>, JpaSpecificationExecutor<StorageBill> { public interface StorageBillDao extends JpaRepository<StorageBill, Integer>, JpaSpecificationExecutor<StorageBill> {
List<StorageBill> findAllByStorageStatusAndIsPrint(Integer storageStatus,Integer isPrint); List<StorageBill> findAllByStorageStatusAndIsPrint(Integer storageStatus,Integer isPrint);
/**
* 查询入库设备的数量
* @return 数量
*/
@Query(value = "SELECT SUM(storaged_count) FROM storage_bill WHERE delete_tag = 0 AND storaged_count is not NULL",nativeQuery = true)
Long getStorageCount();
} }
...@@ -14,6 +14,9 @@ import java.util.Optional; ...@@ -14,6 +14,9 @@ import java.util.Optional;
*/ */
public interface TaskDao extends JpaRepository<Task, Integer>, JpaSpecificationExecutor<Task> { public interface TaskDao extends JpaRepository<Task, Integer>, JpaSpecificationExecutor<Task> {
@Query(value = "select * from task where business_type = 7 and parent_task_id = 0", nativeQuery = true)
List<Task> findCheckCountInScreen();
Optional<List<Task>> findAllByOwnUnitInAndParentTaskId(List<Integer> ownIds, Integer parentId); Optional<List<Task>> findAllByOwnUnitInAndParentTaskId(List<Integer> ownIds, Integer parentId);
/** /**
......
...@@ -124,7 +124,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { ...@@ -124,7 +124,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
// return o; // return o;
// } // }
// }) // })
.anyRequest().authenticated() // .anyRequest().authenticated()
.anyRequest().permitAll()
.and() .and()
.formLogin() .formLogin()
.loginProcessingUrl("/userLogin") .loginProcessingUrl("/userLogin")
......
...@@ -77,4 +77,13 @@ public interface UnitsDao extends JpaRepository<Units, Integer>, JpaSpecificatio ...@@ -77,4 +77,13 @@ public interface UnitsDao extends JpaRepository<Units, Integer>, JpaSpecificatio
List<Units> findAllByNameLike(String unitName); List<Units> findAllByNameLike(String unitName);
@Query(value = "SELECT u.`name` FROM units u where u.id_del = 0 AND u.`level` = ?1",nativeQuery = true)
List<String> getNameListByLevel(Integer level);
@Query(value = "SELECT u.unit_id FROM units u where u.id_del = 0 AND u.`level` = ?1",nativeQuery = true)
List<Integer> getIdListByLevel(Integer level);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论