特殊作业修改
This commit is contained in:
parent
c46e7a0505
commit
2d331ca5c7
@ -5,7 +5,10 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.wflow.bean.entity.WflowModelGroups;
|
||||
import com.wflow.bean.entity.WflowModelHistorys;
|
||||
import com.wflow.bean.entity.WflowModels;
|
||||
import com.wflow.mapper.WflowModelGroupsMapper;
|
||||
import com.wflow.mapper.WflowModelHistorysMapper;
|
||||
import com.wflow.mapper.WflowModelsMapper;
|
||||
import com.wflow.workflow.bean.process.OrgUser;
|
||||
@ -49,9 +52,15 @@ public class XzFlowController {
|
||||
@Autowired
|
||||
private HistoryService historyService;
|
||||
|
||||
@Autowired
|
||||
private WflowModelsMapper wflowModelsMapper;
|
||||
|
||||
@Autowired
|
||||
private WflowModelHistorysMapper wflowModelHistorysMapper;
|
||||
|
||||
@Autowired
|
||||
private WflowModelGroupsMapper wflowModelGroupsMapper;
|
||||
|
||||
|
||||
@ApiOperation(value = "查询工作流统计信息", notes = "查询工作流统计信息", httpMethod = "GET")
|
||||
@ApiImplicitParams({
|
||||
@ -112,6 +121,51 @@ public class XzFlowController {
|
||||
return Result.success(resultList);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "查询特殊作业统计信息", notes = "查询特殊作业统计信息", httpMethod = "GET")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, dataType = "String"),
|
||||
})
|
||||
@GetMapping(value = "/getStatBySpecial")
|
||||
public Result<Map<String, Object>> getStatBySpecial(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
WflowModelGroups modelGroups = wflowModelGroupsMapper.selectOne(Wrappers.<WflowModelGroups>lambdaQuery()
|
||||
.eq(WflowModelGroups::getGroupName, "特殊作业"));
|
||||
List<WflowModels> wflowModels = wflowModelsMapper.selectList(Wrappers.<WflowModels>lambdaQuery()
|
||||
.eq(WflowModels::getGroupId, modelGroups.getGroupId()));
|
||||
List<WflowModelHistorys> wflowModelHistorys = wflowModelHistorysMapper.selectList(Wrappers.<WflowModelHistorys>lambdaQuery()
|
||||
.in(WflowModelHistorys::getFormId, wflowModels.stream().map(w -> w.getFormId()).collect(Collectors.toList())));
|
||||
List<HistoricProcessInstance> list = new ArrayList<>();
|
||||
for (WflowModelHistorys wflowModelHistory : wflowModelHistorys) {
|
||||
HistoricProcessInstanceQuery instanceQuery = historyService.createHistoricProcessInstanceQuery();
|
||||
instanceQuery.processDefinitionId(wflowModelHistory.getProcessDefId());
|
||||
instanceQuery.processInstanceTenantId(projectSn);
|
||||
list.addAll(instanceQuery.list());
|
||||
}
|
||||
List<ProcessInstanceVo> processInstanceVos = getInstances(list);
|
||||
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());
|
||||
resultMap.put("total", total);
|
||||
List<String> formIds = wflowModels.stream().map(p -> p.getFormId()).collect(Collectors.toList());
|
||||
List<Map<String, Object>> resultList = new ArrayList<>();
|
||||
for (String formId : formIds) {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
List<WflowModelHistorys> collect = wflowModelHistorys.stream().filter(w -> w.getFormId().equals(formId)).collect(Collectors.toList());
|
||||
map.put("name", collect.get(collect.size() - 1).getFormName());
|
||||
List<ProcessInstanceVo> typeList = processInstanceVos.stream().filter(p -> p.getFormId().equals(formId)).collect(Collectors.toList());
|
||||
long count = processInstanceVos.stream().filter(p -> p.getFormId().equals(formId)).count();
|
||||
int number = (int) count;
|
||||
map.put("num", number);
|
||||
map.put("ratio", new BigDecimal(number).divide(new BigDecimal(processInstanceVos.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)));
|
||||
map.put("running", typeList.stream().filter(l -> l.getFinishTime() == null).count());
|
||||
map.put("complete", typeList.stream().filter(l -> l.getFinishTime() != null).count());
|
||||
resultList.add(map);
|
||||
}
|
||||
resultMap.put("groupByType", resultList);
|
||||
return Result.success(resultMap);
|
||||
}
|
||||
|
||||
/**
|
||||
* 构造流程实例列表
|
||||
*
|
||||
|
||||
@ -5,8 +5,19 @@ import com.baomidou.mybatisplus.core.toolkit.StringUtils;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.wflow.workflow.bean.vo.ProcessInstanceVo;
|
||||
import com.zhgd.jeecg.common.api.vo.Result;
|
||||
import com.zhgd.xmgl.modules.exam.entity.ExamTrain;
|
||||
import com.zhgd.xmgl.modules.exam.entity.ExamTrainRecord;
|
||||
import com.zhgd.xmgl.modules.exam.service.IExamTrainRecordService;
|
||||
import com.zhgd.xmgl.modules.exam.service.IExamTrainService;
|
||||
import com.zhgd.xmgl.modules.worker.entity.TeamInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerInfo;
|
||||
import com.zhgd.xmgl.modules.worker.entity.WorkerType;
|
||||
import com.zhgd.xmgl.modules.worker.service.ITeamInfoService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerInfoService;
|
||||
import com.zhgd.xmgl.modules.worker.service.IWorkerTypeService;
|
||||
import com.zhgd.xmgl.modules.xz.security.entity.XzSecurityQualityInspectionRecord;
|
||||
import com.zhgd.xmgl.modules.xz.security.service.IXzSecurityInspectTaskRecordService;
|
||||
import com.zhgd.xmgl.modules.xz.security.service.IXzSecurityQualityInspectionRecordService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiImplicitParam;
|
||||
import io.swagger.annotations.ApiImplicitParams;
|
||||
@ -22,10 +33,13 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import springfox.documentation.annotations.ApiIgnore;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/xmgl/xzRiskPrediction")
|
||||
@ -36,6 +50,21 @@ public class XzRiskPredictionController {
|
||||
@Autowired
|
||||
private IWorkerInfoService workerInfoService;
|
||||
|
||||
@Autowired
|
||||
private IWorkerTypeService workerTypeService;
|
||||
|
||||
@Autowired
|
||||
private ITeamInfoService teamInfoService;
|
||||
|
||||
@Autowired
|
||||
private IExamTrainService examTrainService;
|
||||
|
||||
@Autowired
|
||||
private IExamTrainRecordService examTrainRecordService;
|
||||
|
||||
@Autowired
|
||||
private IXzSecurityQualityInspectionRecordService xzSecurityQualityInspectionRecordService;
|
||||
|
||||
@ApiOperation(value = "查询总项目的人员风险趋势分析", notes = "查询总项目的人员风险趋势分析", httpMethod = "GET")
|
||||
@ApiImplicitParams({
|
||||
@ApiImplicitParam(name = "projectSn", value = "项目SN", paramType = "query", required = true, dataType = "String"),
|
||||
@ -44,10 +73,55 @@ public class XzRiskPredictionController {
|
||||
public Result<Map<String, Object>> getWorkerRiskByProject(@ApiIgnore @RequestParam HashMap<String, Object> param) {
|
||||
String projectSn = MapUtils.getString(param, "projectSn");
|
||||
Map<String, Object> resultMap = new HashMap<>();
|
||||
// 人员数量
|
||||
List<WorkerInfo> list = workerInfoService.list(Wrappers.<WorkerInfo>lambdaQuery().eq(WorkerInfo::getProjectSn, projectSn));
|
||||
resultMap.put("total", list.size());
|
||||
long count = list.stream().filter(l -> StringUtils.isNotBlank(l.getBirthday()) && DateUtil.ageOfNow(l.getBirthday()) >= 50).count();
|
||||
resultMap.put("age", count);
|
||||
// 高龄人员
|
||||
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));
|
||||
// 特殊工种人数
|
||||
WorkerType workerType = workerTypeService.getOne(Wrappers.<WorkerType>lambdaQuery()
|
||||
.eq(WorkerType::getProjectSn, projectSn)
|
||||
.eq(WorkerType::getTypeName, "特殊工种"));
|
||||
if (workerType != null) {
|
||||
List<TeamInfo> teamInfoList = teamInfoService.list(Wrappers.<TeamInfo>lambdaQuery()
|
||||
.eq(TeamInfo::getWorkerTypeId, workerType.getId()));
|
||||
if (teamInfoList.size() > 0) {
|
||||
long workerTypeCount = list.stream().filter(l -> teamInfoList.stream().map(t -> t.getId()).collect(Collectors.toList()).contains(l.getTeamId())).count();
|
||||
resultMap.put("workerType", new BigDecimal(workerTypeCount).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
} else {
|
||||
resultMap.put("workerType", 0);
|
||||
}
|
||||
} else {
|
||||
resultMap.put("workerType", 0);
|
||||
}
|
||||
List<ExamTrain> examTrainList = examTrainService.list(Wrappers.<ExamTrain>lambdaQuery().eq(ExamTrain::getProjectSn, projectSn)
|
||||
.isNotNull(ExamTrain::getExamPaperId));
|
||||
List<Long> ids = examTrainList.stream().map(e -> e.getId()).collect(Collectors.toList());
|
||||
if (ids.size() > 0) {
|
||||
List<ExamTrainRecord> examTrainRecordList = examTrainRecordService.list(Wrappers.<ExamTrainRecord>lambdaQuery().in(ExamTrainRecord::getTrainId, ids));
|
||||
for (ExamTrain record : examTrainList) {
|
||||
if (record.getExamPaperId() != null) {
|
||||
List<ExamTrainRecord> trainRecordList = examTrainRecordList.stream().filter(e -> e.getTrainId().toString().equals(record.getId().toString())).collect(Collectors.toList());
|
||||
if (trainRecordList.size() > 0) {
|
||||
int pass = trainRecordList.stream().filter(t -> t.getIsPass() == 1).collect(Collectors.toList()).size();
|
||||
record.setPassRadio(new BigDecimal(pass).divide(new BigDecimal(trainRecordList.size()), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 教育培训
|
||||
BigDecimal passRadio = examTrainList.stream().map(e -> e.getPassRadio()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
resultMap.put("exam", new BigDecimal(1).subtract(passRadio.divide(new BigDecimal(examTrainList.size()), 2, BigDecimal.ROUND_HALF_UP)));
|
||||
// 安全评分
|
||||
Double safeScore = list.stream().mapToDouble(e -> e.getSafeScore()).sum();
|
||||
resultMap.put("safe", new BigDecimal(1).subtract(new BigDecimal(safeScore).divide(new BigDecimal(list.size()), 2, BigDecimal.ROUND_HALF_UP)));
|
||||
// 安全检查隐患
|
||||
List<XzSecurityQualityInspectionRecord> xzSecurityQualityInspectionRecords = xzSecurityQualityInspectionRecordService.list(Wrappers.<XzSecurityQualityInspectionRecord>lambdaQuery()
|
||||
.eq(XzSecurityQualityInspectionRecord::getRecordType, 1)
|
||||
.eq(XzSecurityQualityInspectionRecord::getProjectSn, projectSn));
|
||||
long inspectionCount = xzSecurityQualityInspectionRecords.stream().filter(x -> x.getStatus() != 5 && x.getStatus() != 6).count();
|
||||
resultMap.put("security", new BigDecimal(inspectionCount).divide(new BigDecimal(xzSecurityQualityInspectionRecords.size()), 2, BigDecimal.ROUND_HALF_UP));
|
||||
return Result.success(resultMap);
|
||||
}
|
||||
|
||||
|
||||
@ -141,10 +141,10 @@ public class XzHoistSafetyWorkController {
|
||||
List<String> siSuoPersonName = JSONObject.parseObject(JSON.toJSONString(siSuoPersonNameArray), List.class);
|
||||
paramMap.put("siSuoPersonName", siSuoPersonName == null ? "" : siSuoPersonName.stream().collect(Collectors.joining(",")));
|
||||
}
|
||||
JSONArray commanderArray = paramMap.getJSONArray("commander");
|
||||
JSONArray commanderArray = paramMap.getJSONArray("commanderName");
|
||||
if (commanderArray != null) {
|
||||
List<String> commander = JSONObject.parseObject(JSON.toJSONString(commanderArray), List.class);
|
||||
paramMap.put("commander", commander == null ? "" : commander.stream().collect(Collectors.joining(",")));
|
||||
List<String> commanderName = JSONObject.parseObject(JSON.toJSONString(commanderArray), List.class);
|
||||
paramMap.put("commanderName", commanderName == null ? "" : commanderName.stream().collect(Collectors.joining(",")));
|
||||
}
|
||||
String [] param1 = {"name", "flag"};
|
||||
JSONArray safeMeasures = paramMap.getJSONArray("safeMeasure");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user