package com.ycl.service.caseHandler.impl;
|
|
import com.alibaba.druid.util.StringUtils;
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.ycl.bo.AdminUserDetails;
|
import com.ycl.common.constant.BaseCaseStatus;
|
import com.ycl.common.constant.StepName;
|
import com.ycl.common.util.DateUtil;
|
import com.ycl.common.util.UtilNumber;
|
import com.ycl.dto.caseHandler.DispatchInfoParam;
|
import com.ycl.dto.caseHandler.QueryForViolationParam;
|
import com.ycl.dto.casePool.IllegalBuildingParam;
|
import com.ycl.dto.casePool.VideoInspectParam;
|
import com.ycl.dto.casePool.ViolationParam;
|
import com.ycl.dto.cockpitManage.DelayDO;
|
import com.ycl.entity.caseHandler.*;
|
import com.ycl.entity.dict.DataDictionary;
|
import com.ycl.entity.resources.ImageResources;
|
import com.ycl.entity.video.VideoAlarmReport;
|
import com.ycl.exception.ApiException;
|
import com.ycl.mapper.caseHandler.*;
|
import com.ycl.mapper.dict.DataDictionaryMapper;
|
import com.ycl.mapper.resources.ImageResourcesMapper;
|
import com.ycl.remote.dto.*;
|
import com.ycl.remote.service.CityPlatformService;
|
import com.ycl.service.caseHandler.IBaseCaseService;
|
import com.ycl.service.caseHandler.IDispatchHandleService;
|
import com.ycl.service.caseHandler.IViolationsService;
|
import com.ycl.service.video.IVideoAlarmReportService;
|
import com.ycl.vo.casePool.*;
|
import com.ycl.vo.cockpit.enforcementEvents.DelayVO;
|
import com.ycl.vo.cockpit.enforcementEvents.EventVO;
|
import com.ycl.vo.cockpit.enforcementEvents.StatisticsVO;
|
import com.ycl.vo.cockpit.enforcementEvents.VideoAndAreaVO;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.time.Duration;
|
import java.time.LocalDateTime;
|
import java.time.format.DateTimeFormatter;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* <p>
|
* 案件基本信息 服务实现类
|
* </p>
|
*
|
* @author wl
|
* @since 2022-09-24
|
*/
|
@Service
|
public class BaseCaseServiceImpl extends ServiceImpl<BaseCaseMapper, BaseCase> implements IBaseCaseService {
|
|
private CityPlatformService cityPlatformService;
|
private IViolationsService violationsService;
|
private IVideoAlarmReportService videoAlarmReportService;
|
|
|
@Value("${fdfs.fileUrl}")
|
private String fileUrl;
|
|
@Autowired
|
public void setCityPlatformService(CityPlatformService cityPlatformService) {
|
this.cityPlatformService = cityPlatformService;
|
}
|
|
@Autowired
|
public void setViolationsService(IViolationsService violationsService) {
|
this.violationsService = violationsService;
|
}
|
|
@Autowired
|
public void setVideoAlarmReportService(IVideoAlarmReportService videoAlarmReportService) {
|
this.videoAlarmReportService = videoAlarmReportService;
|
}
|
|
@Resource
|
BaseCaseMapper baseCaseMapper;
|
@Resource
|
DataDictionaryMapper dataDictionaryMapper;
|
@Resource
|
ViolationsMapper violationsMapper;
|
@Resource
|
IllegalBuildingMapper illegalBuildingMapper;
|
|
@Resource
|
ArrivalSituationMapper arrivalSituationMapper;
|
@Resource
|
InvestigationMapper investigationMapper;
|
@Resource
|
WritMapper writMapper;
|
@Resource
|
DisposeRecordMapper disposeRecordMapper;
|
|
@Resource
|
WorkflowConfigStepMapper workflowConfigStepMapper;
|
@Resource
|
WorkflowConfigMapper workflowConfigMapper;
|
@Resource
|
ImageResourcesMapper imageResourcesMapper;
|
@Resource
|
DispatchInfoMapper dispatchInfoMapper;
|
@Resource
|
PartyInfoMapper partyInfoMapper;
|
|
@Resource
|
UtilNumber utilNumber;
|
|
@Resource
|
IDispatchHandleService iDispatchHandleService;
|
|
@Resource
|
IBaseCaseService baseCaseService;
|
|
|
@Override
|
public String uploadEvent(Long caseId) {
|
BaseCase baseCase = this.getById(caseId);
|
Violations violations = violationsService.getById(caseId);
|
String medias = "";
|
String eventDesc = "";
|
if (violations != null) {
|
eventDesc = violations.getDescription();
|
VideoAlarmReport videoAlarmReport = videoAlarmReportService.getById(violations.getVideoAlarmReportId());
|
if (videoAlarmReport != null) {
|
StringBuilder stringBuilder = new StringBuilder().append("[{'mediaURL':'").append(fileUrl).append(videoAlarmReport.getPicData()).append("'}]");
|
medias = stringBuilder.toString();
|
}
|
}
|
EventAddParamDto dto = EventAddParamDto.builder().y84(baseCase.getLatitude() != null ? baseCase.getLatitude().toString() : "").x84(baseCase.getLongitude() != null ? baseCase.getLongitude().toString() : "").source(11).address(baseCase.getSite()).eventDesc(eventDesc).eventSign(baseCase.getCode()).medias(medias).build();
|
String msg = cityPlatformService.addEvent(dto);
|
ResultResponseDto result = JSONObject.parseObject(msg, ResultResponseDto.class);
|
if (result.getCode() == 0) {
|
EventAddResponseDto responseDto = JSONObject.parseObject(result.getResult(), EventAddResponseDto.class);
|
baseCase.setTaskCode(responseDto.getTaskcode());
|
this.updateById(baseCase);
|
return null;
|
} else {
|
return result.getMsg();
|
}
|
}
|
|
@Override
|
public String processEvent(Integer caseId) {
|
BaseCase baseCase = this.getById(caseId);
|
EventProcessParamDto paramDto = EventProcessParamDto.builder().eventSign(baseCase.getCode()).taskcode(baseCase.getTaskCode()).build();
|
String msg = cityPlatformService.getEventProcess(paramDto);
|
ResultResponseDto responseDto = JSONObject.parseObject(msg, ResultResponseDto.class);
|
if (responseDto.getCode() == 0) {
|
EventProcessResponseDto eventProcessResponseDto = JSONObject.parseObject(responseDto.getResult(), EventProcessResponseDto.class);
|
/*********** 未处理市平台返回数据 ***************/
|
return null;
|
} else {
|
return responseDto.getMsg();
|
}
|
}
|
|
@Override
|
public Page listViolationsPage(Page page, Integer state, Integer resource) {
|
Integer type = 01;
|
Integer hours = 60;
|
Integer day = 24;
|
Page<CasePoolViolationVO> violationsPage = baseCaseMapper.listViolationsPage(page, state, type, resource);
|
violationsPage.getRecords().stream().forEach(item -> {
|
if (item.getCloseTime() == null) {
|
Duration duration = Duration.between(item.getAlarmTime(), LocalDateTime.now());
|
long continueHours = duration.toHours() - (duration.toDays() * day);
|
long minutes = duration.toMinutes() - (duration.toHours() * hours);
|
String continueTime = duration.toDays() + "天" + continueHours + "时" + minutes + "分钟";
|
item.setContinueTime(continueTime);
|
} else {
|
Duration duration = Duration.between(item.getAlarmTime(), item.getCloseTime());
|
long continueHours = duration.toHours() - (duration.toDays() * day);
|
long minutes = duration.toMinutes() - (duration.toHours() * hours);
|
String continueTime = duration.toDays() + "天" + continueHours + "时" + minutes + "分钟";
|
item.setContinueTime(continueTime);
|
}
|
});
|
return violationsPage;
|
}
|
|
@Override
|
public Page listIllegalBuilding(Page page, Integer state, Integer resource) {
|
Integer type = 02;
|
return baseCaseMapper.listIllegalBuildingsPage(page, state, type, resource);
|
}
|
|
@Override
|
public Boolean saveViolationCase(ViolationParam violationParam, Long id) {
|
Violations violations = new Violations();
|
BeanUtils.copyProperties(violationParam, violations);
|
Integer value = 1;
|
violations.setId(id);
|
setDisposeRecord(id, violationParam.getLimitTime());
|
return violationsMapper.insert(violations) == value ? true : false;
|
}
|
|
private void setDisposeRecord(Long id, String limitTime) {
|
String stepName = StepName.DISPATCH.getName();
|
QueryWrapper<WorkflowConfigStep> stepQuery = new QueryWrapper<>();
|
stepQuery.eq("name", stepName);
|
WorkflowConfigStep workflowConfigStep = workflowConfigStepMapper.selectOne(stepQuery);
|
|
DisposeRecord disposeRecord = new DisposeRecord();
|
disposeRecord.setWorkflowConfigStepId(workflowConfigStep.getId());
|
disposeRecord.setHandlerRoleId(workflowConfigStep.getRoleId());
|
disposeRecord.setBaseCaseId(id);
|
disposeRecord.setState(1);
|
disposeRecord.setCreateTime(LocalDateTime.now());
|
AdminUserDetails userDetails = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
disposeRecord.setCreateUser(userDetails.getUserId());
|
disposeRecord.setStartTime(LocalDateTime.now());
|
disposeRecord.setStepName(stepName);
|
if (!StringUtils.isEmpty(limitTime)) {
|
disposeRecord.setLimitTime(LocalDateTime.parse(limitTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
}
|
disposeRecordMapper.insert(disposeRecord);
|
}
|
|
@Override
|
public Boolean saveIllegalBuildingCase(IllegalBuildingParam illegalBuildingParam, Long id) {
|
IllegalBuilding illegalBuilding = new IllegalBuilding();
|
BeanUtils.copyProperties(illegalBuildingParam, illegalBuilding);
|
setDisposeRecord(id, illegalBuildingParam.getLimitTime());
|
Integer value = 1;
|
illegalBuilding.setBaseCaseId(id);
|
return illegalBuildingMapper.insert(illegalBuilding) == value ? true : false;
|
}
|
|
@Override
|
public BaseCaseDetail baseCaseDetail(String code) {
|
BaseCaseDetail bcd = new BaseCaseDetail();
|
//1.查询案件基本信息
|
Map map = new HashMap();
|
map.put("code", code);
|
BaseCase baseCase = baseCaseMapper.selectCondMap(map);
|
if (baseCase == null) {
|
return null;
|
}
|
//查询案件违规信息
|
if (baseCase.getCategory() == 1) {
|
Map mapV = new HashMap();
|
mapV.put("id", baseCase.getId());
|
ViolationsVO violationsVO = violationsMapper.selectCondMap(mapV);
|
baseCase.setViolationsVO(violationsVO);
|
} else {
|
IllegalBuilding illegalBuilding = illegalBuildingMapper.selectById(baseCase.getId());
|
LambdaQueryWrapper<DataDictionary> dict = new LambdaQueryWrapper<>();
|
dict.eq(DataDictionary::getId, illegalBuilding.getCategoryId());
|
DataDictionary dictionary = dataDictionaryMapper.selectOne(dict);
|
if (dictionary != null) {
|
illegalBuilding.setCategoryText(dictionary.getName());
|
}
|
baseCase.setIllegalBuilding(illegalBuilding);
|
}
|
//获取调度信息
|
Map mapD = new HashMap();
|
mapD.put("baseCaseId", baseCase.getId());
|
DispatchInfo dispatchInfo = dispatchInfoMapper.selectCondMap(mapD);
|
baseCase.setDispatchInfo(dispatchInfo);
|
bcd.setBaseCase(baseCase);
|
//案件相关信息
|
//2.查询办理经过信息
|
//2.1查询处置流程配置
|
HandlePassVo handlePassVo = new HandlePassVo();
|
QueryWrapper<WorkflowConfig> wrapperWc = new QueryWrapper<>();
|
wrapperWc.lambda().eq(WorkflowConfig::getCode, "ddlc");
|
List<WorkflowConfig> wcs = workflowConfigMapper.selectList(wrapperWc);
|
|
//2.2查询处置流程环节配置
|
Map mapWcs = new HashMap();
|
mapWcs.put("workflowConfigId", wcs.get(0).getId());
|
mapWcs.put("baseCaseId", baseCase.getId());
|
List<WorkflowConfigStep> listWcs = workflowConfigStepMapper.selectRecordByWorkflowConfigStepId(mapWcs);
|
//处理用环节时间
|
for (WorkflowConfigStep step : listWcs) {
|
List<DisposeRecord> records = step.getDisposeRecords();
|
if (records == null) {
|
continue;
|
}
|
for (DisposeRecord record : records) {
|
if (record != null && record.getEndTime() != null && record.getStartTime() != null) {
|
record.setLinkTime(DateUtil.getDistanceDateTime(DateUtil.fromLocalDateTime(record.getStartTime()), DateUtil.fromLocalDateTime(record.getEndTime())));
|
}
|
}
|
step.setDisposeRecords(records);
|
}
|
//2.3设置调度流程
|
handlePassVo.setWorkflowConfigSteps(listWcs);
|
bcd.setHandlePassVo(handlePassVo);
|
//3.查询案卷图片信息
|
FilesPictureVo filesPictureVo = new FilesPictureVo();
|
QueryWrapper<ImageResources> wrapperIr = new QueryWrapper<>();
|
wrapperIr.lambda().eq(ImageResources::getBelongToId, baseCase.getId());
|
List<ImageResources> irs = imageResourcesMapper.selectList(wrapperIr);
|
filesPictureVo.setImageResources(irs);
|
bcd.setFilesPictureVo(filesPictureVo);
|
//4.查询问题处理信息
|
/*ProblemProVo problemProVo = new ProblemProVo();
|
//4.2查询处置流程环节配置
|
List<WorkflowConfigStep> listWcsPp = new ArrayList<>();
|
//4.3设置调度流程
|
problemProVo.setWorkflowConfigSteps(listWcsPp);
|
bcd.setProblemProVo(problemProVo);*/
|
|
//5.查询现场情况信息
|
CurrentSitVo currentSitVo = new CurrentSitVo();
|
QueryWrapper<ArrivalSituation> wrapperAs = new QueryWrapper<>();
|
wrapperAs.lambda().eq(ArrivalSituation::getBaseCaseId, baseCase.getId());
|
//设置到达现场情况
|
ArrivalSituation as = arrivalSituationMapper.selectOne(wrapperAs);
|
currentSitVo.setArrivalSituation(as);
|
//设置调查取证
|
QueryWrapper<Investigation> wrapperI = new QueryWrapper<>();
|
wrapperI.lambda().eq(Investigation::getBaseCaseId, baseCase.getId());
|
Investigation investigation = investigationMapper.selectOne(wrapperI);
|
if (investigation != null && investigation.getPartyId() != null) {
|
//获取当事人信息
|
Map mapP = new HashMap();
|
mapP.put("id", investigation.getPartyId());
|
PartyInfo partyInfo = partyInfoMapper.selectCondMap(mapP);
|
//填充当事人
|
investigation.setPartyInfo(partyInfo);
|
}
|
currentSitVo.setInvestigation(investigation);
|
//设置告知违法
|
QueryWrapper<Writ> wrapperW = new QueryWrapper<>();
|
wrapperW.lambda().eq(Writ::getBaseCaseId, baseCase.getId());
|
Writ writ = writMapper.selectOne(wrapperW);
|
currentSitVo.setWrit(writ);
|
bcd.setCurrentSitVo(currentSitVo);
|
return bcd;
|
}
|
|
@Override
|
public ArrayList<String> listCaseImages(Integer id, Integer type) {
|
Integer illegalBuildingType = 02;
|
ArrayList<String> caseImages = new ArrayList<>();
|
caseImages.add(investigationMapper.selectOne(new LambdaQueryWrapper<Investigation>().eq(Investigation::getBaseCaseId, id)).getPic());
|
caseImages.add(arrivalSituationMapper.selectOne(new LambdaQueryWrapper<ArrivalSituation>().eq(ArrivalSituation::getBaseCaseId, id)).getSituationPic());
|
if (type == illegalBuildingType) {
|
Writ writ = writMapper.selectOne(new LambdaQueryWrapper<Writ>().eq(Writ::getBaseCaseId, id));
|
caseImages.add(writ.getWritPic());
|
caseImages.add(writ.getOriginalPic());
|
caseImages.add(writ.getOtherPic());
|
caseImages.add(writ.getRectifiedPic());
|
}
|
return caseImages;
|
}
|
|
@Override
|
public void endCase(Long caseId, String result, String opinion) {
|
//获取当前登陆用户信息
|
AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
String endCaseName = StepName.CLOSING_REGISTER.getName();
|
BaseCase baseCase = new BaseCase();
|
baseCase.setState(BaseCaseStatus.CLOSING_REGISTER);
|
baseCase.setId(caseId);
|
baseCase.setFinalOpinion(opinion);
|
baseCase.setCloseTime(LocalDateTime.now());
|
baseCaseMapper.updateById(baseCase);
|
|
QueryWrapper<WorkflowConfigStep> stepQurey = new QueryWrapper<>();
|
stepQurey.eq("name", endCaseName);
|
WorkflowConfigStep workflowConfigStep = workflowConfigStepMapper.selectOne(stepQurey);
|
if (workflowConfigStep == null) {
|
throw new ApiException("未查询到该流程环节");
|
}
|
UpdateWrapper<DisposeRecord> updateWrapper = new UpdateWrapper<>();
|
updateWrapper.eq("base_case_id", baseCase.getId()).eq("workflow_config_step_id", workflowConfigStep.getId());
|
|
//修改结案记录
|
DisposeRecord disposeRecord = new DisposeRecord();
|
disposeRecord.setHandlerId(user.getUserId());
|
//结案已结束
|
disposeRecord.setState(1);
|
disposeRecord.setResult(result);
|
disposeRecord.setEndTime(LocalDateTime.now());
|
disposeRecord.setHandlerId(user.getUserId());
|
disposeRecordMapper.update(disposeRecord, updateWrapper);
|
}
|
|
@Override
|
public Page<BaseCase> selectPage(Page<BaseCase> page, String number, Integer streetId, Integer categories, String startTime, String endTime, String site) {
|
return baseCaseMapper.selectBaseCasePage(page, number, streetId, categories, startTime, endTime, site);
|
}
|
|
@Override
|
public Page<QueryForViolationVO> selectViolation(QueryForViolationParam queryForViolationParam) {
|
return baseCaseMapper.selectViolationPage(
|
new Page<QueryForViolationVO>()
|
.setSize(queryForViolationParam.getPageSize())
|
.setCurrent(queryForViolationParam.getCurrent()), queryForViolationParam);
|
}
|
|
@Override
|
public List<QueryForViolationVO> selectViolationList(QueryForViolationParam queryForViolationParam) {
|
return baseCaseMapper.selectViolationPage(queryForViolationParam);
|
}
|
|
@Override
|
public Page<BaseCaseVO> selectVideoInspection(Integer current) {
|
return baseCaseMapper.selectVideoInspection(new Page<>(current, 1));
|
}
|
|
@Override
|
public Map<String, Object> selectCount() {
|
HashMap<String, Object> map = new HashMap<>();
|
Long review = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, 1));
|
Long register = baseCaseMapper.selectRegisterCount();
|
Long study = baseCaseMapper.selectStudyCount();
|
map.put("review", review);
|
map.put("register", register);
|
map.put("study", study);
|
return map;
|
}
|
|
@Override
|
@Transactional(rollbackFor = Exception.class)
|
public Boolean updateCase(VideoInspectParam violationParam) {
|
BaseCase baseCase = new BaseCase();
|
BeanUtils.copyProperties(violationParam, baseCase);
|
baseCase.setId(violationParam.getBaseId());
|
baseCase.setCode(utilNumber.createCaseCode());
|
baseCaseMapper.updateById(baseCase);
|
Violations violations = new Violations();
|
BeanUtils.copyProperties(violationParam, violations);
|
violations.setId(violationParam.getBaseId());
|
if (violationParam.getState() == 6) {
|
AdminUserDetails user = (AdminUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
violationParam.setCreateUser(user.getUserId());
|
DispatchInfoParam dispatchInfoParam = new DispatchInfoParam();
|
BeanUtils.copyProperties(violationParam, dispatchInfoParam);
|
dispatchInfoParam.setBaseCaseId(violationParam.getBaseId());
|
iDispatchHandleService.dispatch(dispatchInfoParam);
|
}
|
if (violationParam.getState() == 2) {
|
// baseCaseService.uploadEvent(violationParam.getBaseId());
|
/// TODO: 2022/12/16 上报接口未实现
|
}
|
return violationsMapper.updateById(violations) == 1 ? true : false;
|
}
|
|
@Override
|
public Integer dayCount() {
|
return baseCaseMapper.dayCount();
|
}
|
|
@Override
|
public Integer weekCount() {
|
return baseCaseMapper.weekCount();
|
}
|
|
@Override
|
public Integer dispatchCount() {
|
return baseCaseMapper.dispatchCount();
|
}
|
|
@Override
|
public Integer alCount() {
|
return baseCaseMapper.alCount();
|
}
|
|
@Override
|
public List<EventVO> selectEventList(String beginTime, String endTime) {
|
return baseCaseMapper.selectEventList(beginTime, endTime);
|
}
|
|
@Override
|
public List<VideoAndAreaVO> areaCount() {
|
List<VideoAndAreaVO> areaCountList = baseCaseMapper.areaCount();
|
Long allCount = baseCaseMapper.selectCount(new LambdaQueryWrapper<>());
|
areaCountList.stream().forEach(item -> item.setRatio(new BigDecimal(item.getCount() * 1.0 / allCount).setScale(2, BigDecimal.ROUND_HALF_UP)));
|
return areaCountList;
|
}
|
|
@Override
|
public List<DelayVO> selectDelayList() {
|
List<DelayDO> delayDOS = baseCaseMapper.selectDelayVOList();
|
ArrayList<DelayVO> delayVOS = new ArrayList<>();
|
delayDOS.stream().forEach(item -> {
|
DelayVO delayVO = new DelayVO();
|
delayVO.setDescription(item.getDescription());
|
delayVO.setCode(item.getCode());
|
Duration between;
|
if (item.getEndTime() != null) {
|
between = Duration.between(item.getEndTime(), item.getLimitTime());
|
} else {
|
between = Duration.between(LocalDateTime.now(), item.getLimitTime());
|
}
|
if (between.isNegative()) {
|
delayVO.setDuration(between.toMinutes());
|
delayVOS.add(delayVO);
|
}
|
});
|
return delayVOS;
|
}
|
|
@Override
|
public Map<String, Object> statistics() {
|
Map<String, Object> map = new HashMap<>();
|
Long reportCount = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().eq(BaseCase::getState, BaseCaseStatus.REPORT));
|
StatisticsVO report = new StatisticsVO();
|
report.setCount(reportCount);
|
ArrayList<Integer> reportState = new ArrayList<>();
|
reportState.add(BaseCaseStatus.REPORT);
|
Long reportLastMonthCount = baseCaseMapper.selectLastMonthCount(reportState);
|
Long reportRecentlyMonthCount = baseCaseMapper.selectRecentlyMonthCount(reportState);
|
Double v = (reportRecentlyMonthCount - reportLastMonthCount) * 1.0 / reportLastMonthCount;
|
if (reportLastMonthCount == 0) {
|
report.setRatio(null);
|
} else {
|
report.setRatio(new BigDecimal(v).setScale(2, BigDecimal.ROUND_HALF_UP).abs());
|
}
|
if (v < 0) {
|
report.setUp(false);
|
} else {
|
report.setUp(true);
|
}
|
|
Long disposeCount = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().in(BaseCase::getState, BaseCaseStatus.DISPATCH, BaseCaseStatus.DISPOSE, BaseCaseStatus.CHECK, BaseCaseStatus.CLOSING_REGISTER));
|
StatisticsVO dispose = new StatisticsVO();
|
dispose.setCount(disposeCount);
|
ArrayList<Integer> disposeState = new ArrayList<>();
|
disposeState.add(BaseCaseStatus.DISPATCH);
|
disposeState.add(BaseCaseStatus.DISPOSE);
|
disposeState.add(BaseCaseStatus.CHECK);
|
disposeState.add(BaseCaseStatus.CLOSING_REGISTER);
|
Long disposeLastMonthCount = baseCaseMapper.selectLastMonthCount(disposeState);
|
Long disposeRecentlyMonthCount = baseCaseMapper.selectRecentlyMonthCount(disposeState);
|
Double v1 = (disposeRecentlyMonthCount - disposeLastMonthCount) * 1.0 / disposeLastMonthCount;
|
if (disposeLastMonthCount == 0) {
|
dispose.setRatio(null);
|
} else {
|
dispose.setRatio(new BigDecimal(v1).setScale(2, BigDecimal.ROUND_HALF_UP).abs());
|
}
|
if (v1 < 0) {
|
dispose.setUp(false);
|
} else {
|
dispose.setUp(true);
|
}
|
|
StatisticsVO onTimeDispose = new StatisticsVO();
|
onTimeDispose.setCount(baseCaseMapper.selectOnTimeCaseCount());
|
Long onTimeCaseLastMonthCount = baseCaseMapper.selectOnTimeCaseLastMonthCount();
|
Long timeCaseRecentlyMonthCount = baseCaseMapper.selectOnTimeCaseRecentlyMonthCount();
|
Double v2 = (timeCaseRecentlyMonthCount - onTimeCaseLastMonthCount) * 1.0 / onTimeCaseLastMonthCount;
|
if (onTimeCaseLastMonthCount == 0) {
|
onTimeDispose.setRatio(null);
|
} else {
|
onTimeDispose.setRatio(new BigDecimal(v2).setScale(2, BigDecimal.ROUND_HALF_UP).abs());
|
}
|
if (v2 < 0) {
|
onTimeDispose.setUp(false);
|
} else {
|
onTimeDispose.setUp(true);
|
}
|
|
Long registerCount = baseCaseMapper.selectCount(new LambdaQueryWrapper<BaseCase>().in(BaseCase::getState, BaseCaseStatus.DISPATCH, BaseCaseStatus.DISPOSE, BaseCaseStatus.CHECK, BaseCaseStatus.CLOSING_REGISTER, BaseCaseStatus.REPORT));
|
StatisticsVO register = new StatisticsVO();
|
register.setCount(registerCount);
|
ArrayList<Integer> registerState = new ArrayList<>();
|
registerState.add(BaseCaseStatus.DISPATCH);
|
registerState.add(BaseCaseStatus.DISPOSE);
|
registerState.add(BaseCaseStatus.CHECK);
|
registerState.add(BaseCaseStatus.CLOSING_REGISTER);
|
registerState.add(BaseCaseStatus.REPORT);
|
Long registerLastMonthCount = baseCaseMapper.selectLastMonthCount(registerState);
|
Long registerRecentlyMonthCount = baseCaseMapper.selectRecentlyMonthCount(registerState);
|
System.out.println(disposeRecentlyMonthCount);
|
Double v3 = (registerRecentlyMonthCount - registerLastMonthCount) * 1.0 / registerLastMonthCount;
|
if (disposeLastMonthCount == 0) {
|
register.setRatio(null);
|
} else {
|
register.setRatio(new BigDecimal(v3).setScale(2, BigDecimal.ROUND_HALF_UP).abs());
|
}
|
if (v3 < 0) {
|
register.setUp(false);
|
} else {
|
register.setUp(true);
|
}
|
map.put("reported", report);
|
map.put("disposition", dispose);
|
map.put("dispositionInTime", onTimeDispose);
|
map.put("register", register);
|
return map;
|
}
|
}
|