Merge remote-tracking branch 'origin/guoshengxiong' into guoshengxiong
This commit is contained in:
commit
0b0126dd00
@ -11,6 +11,18 @@ import com.wflow.mapper.WflowModelsMapper;
|
||||
import com.wflow.workflow.bean.process.enums.ProcessResultEnum;
|
||||
import com.wflow.workflow.bean.vo.ProcessInstanceVo;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.xmgl.modules.basicdata.entity.SystemUser;
|
||||
import com.zhgd.xmgl.modules.basicdata.service.ISystemUserService;
|
||||
import com.zhgd.xmgl.modules.project.entity.ProjectEnterprise;
|
||||
import com.zhgd.xmgl.modules.project.entity.XzUserToSupplier;
|
||||
import com.zhgd.xmgl.modules.project.service.IProjectEnterpriseService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.EnterpriseInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.service.IEnterpriseInfoService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
|
||||
import com.zhgd.xmgl.modules.xz.service.IXzUserToSupplierService;
|
||||
import com.zhgd.xmgl.security.entity.UserInfo;
|
||||
import com.zhgd.xmgl.security.util.SecurityUtils;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
@ -50,6 +62,17 @@ public class XzFlowController {
|
||||
@Autowired
|
||||
private WflowModelGroupsMapper wflowModelGroupsMapper;
|
||||
|
||||
@Autowired
|
||||
private IXzUserToSupplierService xzUserToSupplierService;
|
||||
|
||||
@Autowired
|
||||
private ISystemUserService systemUserService;
|
||||
|
||||
@Autowired
|
||||
private IWorkerInfoService workerInfoService;
|
||||
|
||||
@Autowired
|
||||
private IProjectEnterpriseService projectEnterpriseService;
|
||||
|
||||
@ApiOperation(value = "查询工作流统计信息", notes = "查询工作流统计信息", httpMethod = "GET")
|
||||
@ApiImplicitParams({
|
||||
@ -76,16 +99,7 @@ public class XzFlowController {
|
||||
})
|
||||
@GetMapping(value = "/getStatDetailByState")
|
||||
public Result<List<Map<String, Object>>> getStatDetailByState(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
HistoricProcessInstanceQuery instanceQuery = historyService.createHistoricProcessInstanceQuery();
|
||||
instanceQuery.startedAfter(DateUtil.offsetDay(new Date(), -7));
|
||||
instanceQuery.processInstanceTenantId(MapUtils.getString(param, "projectSn"));
|
||||
String state = MapUtils.getString(param, "state");
|
||||
List<HistoricProcessInstance> list = instanceQuery.list();
|
||||
List<ProcessInstanceVo> processInstanceVos = getInstances(list);
|
||||
processInstanceVos = processInstanceVos.stream().filter(p -> p.getResult().toString().equals(state)).collect(Collectors.toList());
|
||||
List<WflowModelHistorys> wflowModelHistorys = wflowModelHistorysMapper.selectList(null);
|
||||
List<WflowModelGroups> wflowModelGroups = wflowModelGroupsMapper.selectList(Wrappers.<WflowModelGroups>lambdaQuery()
|
||||
.ne(WflowModelGroups::getGroupName, "已停用"));
|
||||
List<Map<String, Object>> resultList = new ArrayList<>();
|
||||
Map<String, Object> total = new HashMap<>();
|
||||
if (state.equals("RUNNING")) {
|
||||
@ -95,13 +109,29 @@ public class XzFlowController {
|
||||
} else if (state.equals("PASS")) {
|
||||
total.put("name", "已通过");
|
||||
}
|
||||
|
||||
String all [] = {"人员入场申请","长期车辆申请","临时车辆申请","访客预约申请","材料进场申请","材料进场申请","动火作业","受限空间安全作业","盲板抽堵安全作业票","高处安全作业票","吊装安全作业票","临时用电安全作业票","动土安全作业票","断路安全作业票"};
|
||||
List<String> allList = Arrays.asList(all);
|
||||
List<WflowModels> wflowModelsList = wflowModelsMapper.selectList(Wrappers.<WflowModels>lambdaQuery()
|
||||
.in(WflowModels::getFormName, allList));
|
||||
HistoricProcessInstanceQuery instanceQuery = historyService.createHistoricProcessInstanceQuery();
|
||||
instanceQuery.startedAfter(DateUtil.offsetDay(new Date(), -7));
|
||||
instanceQuery.processInstanceTenantId(MapUtils.getString(param, "projectSn"));
|
||||
List<HistoricProcessInstance> list = instanceQuery.list();
|
||||
List<ProcessInstanceVo> processInstanceVos = getInstances(list);
|
||||
processInstanceVos = processInstanceVos.stream().filter(p -> p.getResult().toString().equals(state) &&
|
||||
wflowModelsList.stream().map(w -> w.getFormId()).collect(Collectors.toList()).contains(p.getFormId())).collect(Collectors.toList());
|
||||
total.put("num", processInstanceVos.size());
|
||||
resultList.add(total);
|
||||
for (WflowModelGroups wflowModelGroup : wflowModelGroups) {
|
||||
String name [] = {"人员入场申请","长期车辆申请,临时车辆申请","材料进场申请,材料进场申请","访客预约申请","动火作业,受限空间安全作业,盲板抽堵安全作业票,高处安全作业票,吊装安全作业票,临时用电安全作业票,动土安全作业票,断路安全作业票"};
|
||||
List<String> nameList = Arrays.asList(name);
|
||||
String type [] = {"人员","车辆","材料","访客","特殊作业"};
|
||||
List<String> typeList = Arrays.asList(type);
|
||||
for (int i = 0; i < typeList.size(); i++) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
resultMap.put("name", wflowModelGroup.getGroupName());
|
||||
List<WflowModelHistorys> modelHistorysList = wflowModelHistorys.stream().filter(w -> w.getGroupId() == wflowModelGroup.getGroupId()).collect(Collectors.toList());
|
||||
List<String> collect = modelHistorysList.stream().map(m -> m.getFormId()).collect(Collectors.toList());
|
||||
resultMap.put("name", typeList.get(i));
|
||||
int finalI = i;
|
||||
List<String> collect = wflowModelsList.stream().filter(w -> nameList.get(finalI).contains(w.getFormName())).map(w -> w.getFormId()).collect(Collectors.toList());
|
||||
long count = processInstanceVos.stream().filter(p -> collect.contains(p.getFormId())).count();
|
||||
int number = (int) count;
|
||||
resultMap.put("num", number);
|
||||
@ -112,7 +142,6 @@ public class XzFlowController {
|
||||
}
|
||||
resultList.add(resultMap);
|
||||
}
|
||||
resultList = resultList.stream().sorted((o1, o2) -> MapUtils.getInteger(o2, "num").compareTo(MapUtils.getInteger(o1, "num"))).collect(Collectors.toList());
|
||||
return Result.success(resultList);
|
||||
}
|
||||
|
||||
@ -138,6 +167,29 @@ public class XzFlowController {
|
||||
list.addAll(instanceQuery.list());
|
||||
}
|
||||
List<ProcessInstanceVo> processInstanceVos = getInstances(list);
|
||||
// 人员数据权限
|
||||
UserInfo user = SecurityUtils.getUser();
|
||||
SystemUser systemUser = systemUserService.getById(user.getUserId());
|
||||
XzUserToSupplier xzUserToSupplier = xzUserToSupplierService.getOne(Wrappers.<XzUserToSupplier>lambdaQuery()
|
||||
.eq(XzUserToSupplier::getUserId, systemUser.getUserId()));
|
||||
Long enterpriseId = xzUserToSupplier.getXzSupplierId();
|
||||
List<ProjectEnterprise> allList = projectEnterpriseService.list(Wrappers.<ProjectEnterprise>lambdaQuery()
|
||||
.eq(ProjectEnterprise::getProjectSn, systemUser.getProjectSn()));
|
||||
ProjectEnterprise projectEnterprise = projectEnterpriseService.getOne(Wrappers.<ProjectEnterprise>lambdaQuery()
|
||||
.eq(ProjectEnterprise::getProjectSn, systemUser.getProjectSn())
|
||||
.eq(ProjectEnterprise::getEnterpriseId, enterpriseId));
|
||||
List<Long> enterpriseIds = allList.stream().filter(a -> a.getAncestors().contains(projectEnterprise.getId().toString())).collect(Collectors.toList())
|
||||
.stream().map(p -> p.getEnterpriseId()).collect(Collectors.toList());
|
||||
enterpriseIds.add(enterpriseId);
|
||||
List<Long> workerInfos = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery().in(WorkerInfo::getEnterpriseId, enterpriseIds))
|
||||
.stream().map(w -> w.getId()).collect(Collectors.toList());
|
||||
if (workerInfos.size() > 0) {
|
||||
List<Long> systemUserList = systemUserService.list(Wrappers.<SystemUser>lambdaQuery().in(SystemUser::getWorkerId, workerInfos))
|
||||
.stream().map(u -> u.getUserId()).collect(Collectors.toList());
|
||||
processInstanceVos = processInstanceVos.stream().filter(p -> systemUserList.contains(p.getStaterUserId())).collect(Collectors.toList());
|
||||
} else {
|
||||
processInstanceVos = new ArrayList<>();
|
||||
}
|
||||
Map<String, Object> total = new HashMap<>();
|
||||
total.put("running", processInstanceVos.stream().filter(l -> l.getFinishTime() == null).count());
|
||||
total.put("complete", processInstanceVos.stream().filter(l -> l.getFinishTime() != null).count());
|
||||
|
||||
@ -58,6 +58,7 @@ import io.swagger.annotations.ApiImplicitParams;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.MapUtils;
|
||||
import org.apache.commons.math3.dfp.DfpField;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.Lazy;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@ -138,7 +139,9 @@ public class XzRiskPredictionController {
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
// 人员数量
|
||||
List<WorkerInfo> list = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery().eq(WorkerInfo::getProjectSn, projectSn));
|
||||
List<WorkerInfo> list = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery()
|
||||
.eq(WorkerInfo::getProjectSn, projectSn)
|
||||
.eq(WorkerInfo::getInserviceType, 1));
|
||||
resultMap.put("total", list.size());
|
||||
// 高龄人员
|
||||
long ageCount = list.stream().filter(l -> StringUtils.isNotBlank(l.getBirthday()) && DateUtil.ageOfNow(l.getBirthday()) >= 50).count();
|
||||
@ -187,9 +190,10 @@ public class XzRiskPredictionController {
|
||||
// 安全检查隐患
|
||||
List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = xzSecurityQualityInspectionRecordService.list(Wrappers.<XzSecurityQualityInspectionRecord>lambdaQuery()
|
||||
.eq(XzSecurityQualityInspectionRecord::getRecordType, 1)
|
||||
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn));
|
||||
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn)
|
||||
.ne(XzSecurityQualityInspectionRecord::getStatus, 6));
|
||||
if (xzSecurityQualityInspectionRecords.size() > 0) {
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && x.getStatus() != 6).count();
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5).count();
|
||||
resultMap.put("security", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
} else {
|
||||
resultMap.put("security", 0);
|
||||
@ -621,10 +625,12 @@ public class XzRiskPredictionController {
|
||||
|
||||
List<XzSecurityQualityInspectionRecord> allXzSecurityQualityInspectionRecords = xzSecurityQualityInspectionRecordService.list(Wrappers.<XzSecurityQualityInspectionRecord>lambdaQuery()
|
||||
.eq(XzSecurityQualityInspectionRecord::getRecordType, 1)
|
||||
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn));
|
||||
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn)
|
||||
.ne(XzSecurityQualityInspectionRecord::getStatus, 6));
|
||||
|
||||
List<WorkerInfo> allWorkerList = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery()
|
||||
.eq(WorkerInfo::getProjectSn, projectSn));
|
||||
.eq(WorkerInfo::getProjectSn, projectSn)
|
||||
.eq(WorkerInfo::getInserviceType, 1));
|
||||
|
||||
WorkerType workerType = workerTypeService.getOne(Wrappers.<WorkerType>lambdaQuery()
|
||||
.eq(WorkerType::getProjectSn, projectSn)
|
||||
@ -642,7 +648,7 @@ public class XzRiskPredictionController {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
// 人员数量
|
||||
List<WorkerInfo> list = allWorkerList.stream().filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList());
|
||||
resultMap.put("total", list.size());
|
||||
resultMap.put("total", new BigDecimal(list.size()).divide(new BigDecimal(allWorkerList.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
// 高龄人员
|
||||
long ageCount = list.stream().filter(l -> StringUtils.isNotBlank(l.getBirthday()) && DateUtil.ageOfNow(l.getBirthday()) >= 50).count();
|
||||
resultMap.put("age", new BigDecimal(ageCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
@ -688,7 +694,7 @@ public class XzRiskPredictionController {
|
||||
List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = allXzSecurityQualityInspectionRecords.stream()
|
||||
.filter(a -> enterpriseIds.contains(a.getEnterpriseId())).collect(Collectors.toList());
|
||||
if (xzSecurityQualityInspectionRecords.size() > 0) {
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && x.getStatus() != 6).count();
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5).count();
|
||||
resultMap.put("security", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
} else {
|
||||
resultMap.put("security", 0);
|
||||
@ -721,15 +727,16 @@ public class XzRiskPredictionController {
|
||||
// 安全检查隐患
|
||||
List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = xzSecurityQualityInspectionRecordService.list(Wrappers.<XzSecurityQualityInspectionRecord>lambdaQuery()
|
||||
.eq(XzSecurityQualityInspectionRecord::getRecordType, 1)
|
||||
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn));
|
||||
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn)
|
||||
.ne(XzSecurityQualityInspectionRecord::getStatus, 6));
|
||||
if (xzSecurityQualityInspectionRecords.size() > 0) {
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && x.getStatus() != 6).count();
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5).count();
|
||||
resultMap.put("security", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
} else {
|
||||
resultMap.put("security", 0);
|
||||
}
|
||||
// 安全评分
|
||||
List<WorkerInfo> list = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery().eq(WorkerInfo::getProjectSn, projectSn));
|
||||
List<WorkerInfo> list = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery().eq(WorkerInfo::getProjectSn, projectSn).eq(WorkerInfo::getInserviceType, 1));
|
||||
Double safeScore = list.stream().mapToDouble(e -> e.getSafeScore()).sum();
|
||||
resultMap.put("safe", new BigDecimal(safeScore).divide(new BigDecimal(100)).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
// 一级二级分险占比
|
||||
@ -741,7 +748,7 @@ public class XzRiskPredictionController {
|
||||
}
|
||||
// 超期未关闭
|
||||
if (xzSecurityQualityInspectionRecords.size() > 0) {
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && x.getStatus() != 6 && DateUtil.parseDate(x.getChangeLimitTime()).compareTo(new Date()) < 0).count();
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && DateUtil.parseDate(x.getChangeLimitTime()).compareTo(new Date()) < 0).count();
|
||||
resultMap.put("limitTime", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
} else {
|
||||
resultMap.put("limitTime", 0);
|
||||
@ -770,10 +777,12 @@ public class XzRiskPredictionController {
|
||||
|
||||
List<XzSecurityQualityInspectionRecord> allXzSecurityQualityInspectionRecords = xzSecurityQualityInspectionRecordService.list(Wrappers.<XzSecurityQualityInspectionRecord>lambdaQuery()
|
||||
.eq(XzSecurityQualityInspectionRecord::getRecordType, 1)
|
||||
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn));
|
||||
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn)
|
||||
.ne(XzSecurityQualityInspectionRecord::getStatus, 6));
|
||||
|
||||
List<WorkerInfo> allWorkerList = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery()
|
||||
.eq(WorkerInfo::getProjectSn, projectSn));
|
||||
.eq(WorkerInfo::getProjectSn, projectSn)
|
||||
.eq(WorkerInfo::getInserviceType, 1));
|
||||
|
||||
for (ProjectEnterprise projectEnterprise : parentList) {
|
||||
EnterpriseInfo enterpriseInfo = enterpriseInfoService.getById(projectEnterprise.getEnterpriseId());
|
||||
@ -785,7 +794,7 @@ public class XzRiskPredictionController {
|
||||
// 安全检查隐患
|
||||
List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = allXzSecurityQualityInspectionRecords.stream().filter(x -> enterpriseIds.contains(x.getEnterpriseId())).collect(Collectors.toList());
|
||||
if (xzSecurityQualityInspectionRecords.size() > 0) {
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && x.getStatus() != 6).count();
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5).count();
|
||||
resultMap.put("security", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
} else {
|
||||
resultMap.put("security", 0);
|
||||
@ -803,7 +812,7 @@ public class XzRiskPredictionController {
|
||||
}
|
||||
// 超期未关闭
|
||||
if (xzSecurityQualityInspectionRecords.size() > 0) {
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && x.getStatus() != 6 && DateUtil.parseDate(x.getChangeLimitTime()).compareTo(new Date()) < 0).count();
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && DateUtil.parseDate(x.getChangeLimitTime()).compareTo(new Date()) < 0).count();
|
||||
resultMap.put("limitTime", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
} else {
|
||||
resultMap.put("limitTime", 0);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user