package com.gkhy.safePlatform.emergency.service.impl;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.gkhy.safePlatform.account.rpc.apimodel.AccountDepartmentService;
|
import com.gkhy.safePlatform.account.rpc.apimodel.model.resp.DepInfoRPCRespDTO;
|
import com.gkhy.safePlatform.commons.enums.ResultCodes;
|
import com.gkhy.safePlatform.commons.exception.BusinessException;
|
import com.gkhy.safePlatform.commons.query.PageQuery;
|
import com.gkhy.safePlatform.commons.utils.BeanCopyUtils;
|
import com.gkhy.safePlatform.commons.utils.StringUtils;
|
import com.gkhy.safePlatform.commons.vo.ResultVO;
|
import com.gkhy.safePlatform.commons.vo.SearchResultVO;
|
import com.gkhy.safePlatform.emergency.entity.*;
|
import com.gkhy.safePlatform.emergency.enums.EmergencyResultCodes;
|
import com.gkhy.safePlatform.emergency.excepiton.EmergencyException;
|
import com.gkhy.safePlatform.emergency.model.dto.resp.*;
|
import com.gkhy.safePlatform.emergency.query.EmergencyDrillExecuteCountQuery;
|
import com.gkhy.safePlatform.emergency.query.EmergencySuppliesCountQuery;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.req.EmergencyExecuteNumRPCReq;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.req.EmergencyExecuteTimeRPCReq;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.resp.EmergencyExecuteNumRPCResp;
|
import com.gkhy.safePlatform.emergency.rpc.api.model.dto.resp.EmergencyExecuteTimeRPCResp;
|
import com.gkhy.safePlatform.emergency.service.EmergencyCountService;
|
import com.gkhy.safePlatform.emergency.service.baseService.EmergencyDrillExecuteInfoService;
|
import com.gkhy.safePlatform.emergency.service.baseService.EmergencySuppliesInfoService;
|
import com.gkhy.safePlatform.emergency.utils.TimeUtils;
|
import org.apache.dubbo.config.annotation.DubboReference;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
import sun.security.pkcs11.wrapper.CK_SSL3_KEY_MAT_OUT;
|
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
@Service("emergencyCountService")
|
public class EmergencyCountServiceImpl implements EmergencyCountService {
|
|
@Autowired
|
private EmergencyDrillExecuteInfoService emergencyDrillExecuteInfoService;
|
|
@DubboReference(check = false)
|
private AccountDepartmentService accountDepartmentService;
|
|
@Autowired
|
private EmergencySuppliesInfoService emergencySuppliesInfoService;
|
|
@Override
|
public SearchResultVO<EmergencyExecuteTimeRPCResp> getTimeByDeptId(EmergencyExecuteTimeRPCReq query) {
|
EmergencyExecuteTimeRPCResp emergencyExecuteTimeRPCResp = new EmergencyExecuteTimeRPCResp();
|
// 获取id对应的部门
|
DepInfoRPCRespDTO depInfoRPCRespDTO = getDepInfoByDepId(query.getDeptId());
|
emergencyExecuteTimeRPCResp.setDeptId(depInfoRPCRespDTO.getDepId());
|
emergencyExecuteTimeRPCResp.setDeptName(depInfoRPCRespDTO.getDepName());
|
emergencyExecuteTimeRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel());
|
|
getSingleTimeData(emergencyExecuteTimeRPCResp);
|
return new SearchResultVO<>(
|
false,
|
null,
|
null,
|
null,
|
1L,
|
emergencyExecuteTimeRPCResp,
|
ResultCodes.OK
|
);
|
}
|
|
@Override
|
public SearchResultVO<List<EmergencyExecuteTimeRPCResp>> getTimeByDeptIds(EmergencyExecuteTimeRPCReq query) {
|
List<EmergencyExecuteTimeRPCResp> list = new ArrayList<>();
|
|
// 获取该部门及其子部门的所有信息
|
List<DepInfoRPCRespDTO> depList = getDepListInfoByDepId(query.getDeptId());
|
for (DepInfoRPCRespDTO depInfoRPCRespDTO : depList){
|
EmergencyExecuteTimeRPCResp emergencyExecuteTimeRPCResp = new EmergencyExecuteTimeRPCResp();
|
emergencyExecuteTimeRPCResp.setDeptId(depInfoRPCRespDTO.getDepId());
|
emergencyExecuteTimeRPCResp.setDeptName(depInfoRPCRespDTO.getDepName());
|
emergencyExecuteTimeRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel());
|
|
getSingleTimeData(emergencyExecuteTimeRPCResp);
|
list.add(emergencyExecuteTimeRPCResp);
|
}
|
return new SearchResultVO<>(
|
false,
|
null,
|
null,
|
null,
|
(long) list.size(),
|
list,
|
ResultCodes.OK
|
);
|
}
|
|
private void getSingleTimeData(EmergencyExecuteTimeRPCResp emergencyExecuteTimeRPCResp){
|
// 查询该部门最后一次演练时间
|
String lastTime = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteIntervalTimeByDeptId(emergencyExecuteTimeRPCResp.getDeptId());
|
if (StringUtils.isNotBlank(lastTime)){
|
emergencyExecuteTimeRPCResp.setLastTime(lastTime);
|
emergencyExecuteTimeRPCResp.setDays(TimeUtils.differentDays(lastTime, TimeUtils.formatDate(new Date())));
|
}
|
}
|
|
@Override
|
public SearchResultVO<EmergencyExecuteNumRPCResp> getNumByDeptId(EmergencyExecuteNumRPCReq query) {
|
if (query.getYear()==null){
|
throw new EmergencyException(EmergencyResultCodes.YEAR_NULL);
|
}
|
EmergencyExecuteNumRPCResp emergencyExecuteNumRPCResp = new EmergencyExecuteNumRPCResp();
|
// 获取id对应的部门
|
DepInfoRPCRespDTO depInfoRPCRespDTO = getDepInfoByDepId(query.getDeptId());
|
emergencyExecuteNumRPCResp.setDeptId(depInfoRPCRespDTO.getDepId());
|
emergencyExecuteNumRPCResp.setDeptName(depInfoRPCRespDTO.getDepName());
|
emergencyExecuteNumRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel());
|
|
getSingleNumData(emergencyExecuteNumRPCResp,query);
|
|
return new SearchResultVO<>(
|
false,
|
null,
|
null,
|
null,
|
1L,
|
emergencyExecuteNumRPCResp,
|
ResultCodes.OK
|
);
|
}
|
|
@Override
|
public SearchResultVO<List<EmergencyExecuteNumRPCResp>> getNumByDeptIds(EmergencyExecuteNumRPCReq query) {
|
List<EmergencyExecuteNumRPCResp> list = new ArrayList<>();
|
|
// 获取该部门及其子部门的所有信息
|
List<DepInfoRPCRespDTO> deptList = getDepListInfoByDepId(query.getDeptId());
|
|
for (DepInfoRPCRespDTO depInfoRPCRespDTO : deptList){
|
EmergencyExecuteNumRPCResp emergencyExecuteNumRPCResp = new EmergencyExecuteNumRPCResp();
|
emergencyExecuteNumRPCResp.setDeptId(depInfoRPCRespDTO.getDepId());
|
emergencyExecuteNumRPCResp.setDeptName(depInfoRPCRespDTO.getDepName());
|
emergencyExecuteNumRPCResp.setDeptLevel(depInfoRPCRespDTO.getDepLevel());
|
|
getSingleNumData(emergencyExecuteNumRPCResp,query);
|
list.add(emergencyExecuteNumRPCResp);
|
}
|
return new SearchResultVO<>(
|
false,
|
null,
|
null,
|
null,
|
(long) list.size(),
|
list,
|
ResultCodes.OK
|
);
|
}
|
|
private void getSingleNumData(EmergencyExecuteNumRPCResp emergencyExecuteNumRPCResp,EmergencyExecuteNumRPCReq query){
|
List<Long> deptIds = new ArrayList<>();
|
deptIds.add(emergencyExecuteNumRPCResp.getDeptId());
|
|
List<Map<String,String>> mapList = new ArrayList<>();
|
List<EmergencyDrillExecuteCountData> emergencyDrillExecuteCountDataList = new ArrayList<>();
|
|
String startTime ;
|
String endTime ;
|
if (query.getMonth()==null){
|
// 查该年度12个月份的
|
startTime = TimeUtils.getYearFirst(query.getYear());
|
endTime = TimeUtils.getYearLast(query.getYear());
|
emergencyDrillExecuteCountDataList= emergencyDrillExecuteInfoService.selectByMonthAndDept(startTime, endTime, deptIds);
|
}else{
|
// 查该年度指定月份的
|
startTime = TimeUtils.getMonthFirst(query.getYear(),query.getMonth());
|
endTime = TimeUtils.getMonthLast(query.getYear(),query.getMonth());
|
emergencyDrillExecuteCountDataList= emergencyDrillExecuteInfoService.selectByDayAndDept(startTime, endTime, deptIds);
|
}
|
if (!emergencyDrillExecuteCountDataList.isEmpty()){
|
for (EmergencyDrillExecuteCountData emergencyDrillExecuteCountData : emergencyDrillExecuteCountDataList){
|
Map<String ,String> map = new HashMap<>();
|
map.put("name",emergencyDrillExecuteCountData.getName());
|
map.put("num",emergencyDrillExecuteCountData.getNum().toString());
|
mapList.add(map);
|
}
|
}
|
emergencyExecuteNumRPCResp.setData(mapList);
|
}
|
|
private DepInfoRPCRespDTO getDepInfoByDepId(Long deptId) {
|
DepInfoRPCRespDTO dep = new DepInfoRPCRespDTO();
|
ResultVO<DepInfoRPCRespDTO> rpcResult = accountDepartmentService.getDepInfoByDepId(deptId);
|
if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) {
|
if (rpcResult.getData() != null) {
|
dep = (DepInfoRPCRespDTO) rpcResult.getData();
|
}
|
} else {
|
throw new BusinessException(ResultCodes.CLIENT_DEP_NOT_EXIST);
|
}
|
return dep;
|
}
|
|
private List<DepInfoRPCRespDTO> getDepListInfoByDepId(Long deptId){
|
List<DepInfoRPCRespDTO> depList = new ArrayList<>();
|
ResultVO<List<DepInfoRPCRespDTO>> rpcResult = accountDepartmentService.listDepAndSubDepByDepId(deptId);
|
if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) {
|
if (rpcResult.getData() != null) {
|
depList = (List<DepInfoRPCRespDTO>)rpcResult.getData();
|
}
|
} else {
|
throw new BusinessException(ResultCodes.CLIENT_DEP_NOT_EXIST);
|
}
|
return depList;
|
}
|
|
@Override
|
public ResultVO<EmergencyDrillExecuteCountRespDTO> countEmergencyDrillExecute(EmergencyDrillExecuteCountQuery query) {
|
|
EmergencyDrillExecuteCountRespDTO emergencyDrillExecuteCountRespDTO = new EmergencyDrillExecuteCountRespDTO();
|
|
// 根据最新的应急演练实施的创建时间与当前时间 获取间隔天数
|
Integer days = emergencyDrillExecuteInfoService.selectEmergencyDrillExecuteIntervalTime();
|
emergencyDrillExecuteCountRespDTO.setDays(days);
|
|
// 根据时间类型(年/月),部门id 获取统计结果
|
List<EmergencyDrillExecuteCountData> list = new ArrayList<>();
|
// 获取部门id集合
|
List<Long> deptIds = new ArrayList<>();
|
deptIds.add(query.getDeptId());
|
/* ResultVO<List<Long>> rpcResult = accountDepartmentService.listDepAndSubDepIds(query.getDeptId());
|
if (rpcResult != null && rpcResult.getCode().equals(ResultCodes.OK.getCode())) {
|
if (rpcResult.getData() != null) {
|
deptIds = (List<Long>) rpcResult.getData();
|
}
|
} else {
|
throw new BusinessException(ResultCodes.CLIENT_DEP_NOT_EXIST);
|
}*/
|
// 获取时间
|
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
|
Date date = new Date();
|
int year = Integer.parseInt(sdf.format(date));
|
if (query.getType() == 1) {
|
// 月
|
String startTime = TimeUtils.getYearFirst(year);
|
String endTime = TimeUtils.getYearLast(year);
|
list = emergencyDrillExecuteInfoService.selectByMonthAndDept(startTime, endTime, deptIds);
|
}
|
if (query.getType() == 2) {
|
// 年
|
String startTime = TimeUtils.getYearFirst(year - 10);
|
String endTime = TimeUtils.getYearLast(year);
|
list = emergencyDrillExecuteInfoService.selectByYearAndDept(startTime, endTime, deptIds);
|
}
|
|
if (!CollectionUtils.isEmpty(list)) {
|
List<EmergencyDrillExecuteCountDataRespDTO> dataList = BeanCopyUtils.copyBeanList(list, EmergencyDrillExecuteCountDataRespDTO.class);
|
emergencyDrillExecuteCountRespDTO.setDataList(dataList);
|
} else {
|
emergencyDrillExecuteCountRespDTO.setDataList(new ArrayList<>());
|
}
|
return new ResultVO<>(ResultCodes.OK, emergencyDrillExecuteCountRespDTO);
|
}
|
|
@Override
|
public ResultVO<List<EmergencySuppliesCountRespDTO>> countEmergencySupplies(PageQuery<EmergencySuppliesCountQuery> pageQuery) {
|
List<EmergencySuppliesCountRespDTO> respList = new ArrayList<>();
|
|
Long pageIndex = pageQuery.getPageIndex();
|
Long pageSize = pageQuery.getPageSize();
|
Page<EmergencySuppliesInfoDetailDO> page = new Page<>(pageIndex, pageSize);
|
List<EmergencySuppliesInfoDetailDO> emergencySuppliesInfoDetailDOList = emergencySuppliesInfoService.countEmergencySupplies(page, pageQuery.getSearchParams());
|
|
if (!CollectionUtils.isEmpty(emergencySuppliesInfoDetailDOList)) {
|
for (EmergencySuppliesInfoDetailDO emergencySuppliesInfoDetailDO : emergencySuppliesInfoDetailDOList) {
|
EmergencySuppliesCountRespDTO emergencySuppliesCountRespDTO = new EmergencySuppliesCountRespDTO();
|
// 名称+数量
|
emergencySuppliesCountRespDTO.setName(emergencySuppliesInfoDetailDO.getName());
|
emergencySuppliesCountRespDTO.setTotalNum(emergencySuppliesInfoDetailDO.getCount());
|
// // 保质期内数量
|
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//格式化一下
|
// Date produceDate = emergencySuppliesInfoDetailDO.getProductionDate();
|
// Integer usePeriod = emergencySuppliesInfoDetailDO.getUsePeriod();
|
//
|
// String[] arr = sdf.format(produceDate).split("-");
|
//
|
// Calendar calendar = Calendar.getInstance();//获取对日期操作的类对象
|
// calendar.clear();
|
// calendar.set(Calendar.YEAR, Integer.parseInt(arr[0]));
|
// calendar.set(Calendar.MONTH, Integer.parseInt(arr[1]));
|
// calendar.set(Calendar.DAY_OF_MONTH, Integer.parseInt(arr[2]));
|
//
|
// calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) +usePeriod);
|
//
|
// Date qualityD = calendar.getTime();
|
// String time= sdf.format(calendar.getTime());
|
// System.out.println(time);
|
|
respList.add(emergencySuppliesCountRespDTO);
|
}
|
}
|
return new SearchResultVO<>(
|
true,
|
pageIndex,
|
pageSize, page.getPages(),
|
page.getTotal(),
|
respList,
|
ResultCodes.OK
|
);
|
}
|
|
}
|