维修养护-数据统计
parent
54474b63de
commit
9deb5985fa
|
|
@ -0,0 +1,69 @@
|
|||
package com.gunshi.project.hsz.controller;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gunshi.core.result.R;
|
||||
import com.gunshi.db.dto.DateTimeRangeSo;
|
||||
import com.gunshi.db.dto.MonthRangeSo;
|
||||
import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo;
|
||||
import com.gunshi.project.hsz.entity.vo.MentenceInfoCount12Vo;
|
||||
import com.gunshi.project.hsz.entity.vo.MentenceInfoCountVo;
|
||||
import com.gunshi.project.hsz.service.FileAssociationsService;
|
||||
import com.gunshi.project.hsz.service.MentenceFarmerRecordService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Tag(name = "维修养护-维护信息统计分析")
|
||||
@RestController
|
||||
@RequestMapping(value="/mic")
|
||||
public class MentenceInfoCountController extends AbstractCommonFileController {
|
||||
|
||||
|
||||
@Autowired
|
||||
private MentenceFarmerRecordService mentenceFarmerRecordService;
|
||||
|
||||
@Autowired
|
||||
private FileAssociationsService fileService;
|
||||
|
||||
@Operation(summary = "分页")
|
||||
@PostMapping("/page")
|
||||
public R<Page<MentenceInfoCountVo>> page(@RequestBody MentenceFarmerRecordPageSo pageSo) {
|
||||
Page<MentenceInfoCountVo> byPage = mentenceFarmerRecordService.pageInfoCountQuery(pageSo);
|
||||
if(!CollectionUtils.isEmpty(byPage.getRecords())){
|
||||
byPage.getRecords().forEach(o -> o.setFiles(
|
||||
fileService.getFiles(getGroupId(),o.getId().toString())
|
||||
));
|
||||
}
|
||||
return R.ok(byPage);
|
||||
}
|
||||
|
||||
@Operation(summary = "根据时间统计隐患数目")
|
||||
@PostMapping("/count12")
|
||||
public List<MentenceInfoCount12Vo> count12(@RequestBody MonthRangeSo monthRangeSo){
|
||||
List<MentenceInfoCount12Vo> list = mentenceFarmerRecordService.count12(monthRangeSo);
|
||||
return list;
|
||||
}
|
||||
|
||||
@Operation(summary = "根据时间统计隐患类型数目")
|
||||
@PostMapping("/countType")
|
||||
public Map<Integer,Integer> countType(@RequestBody MonthRangeSo monthRangeSo){
|
||||
Map<Integer,Integer> map = mentenceFarmerRecordService.countType(monthRangeSo);
|
||||
return map;
|
||||
}
|
||||
|
||||
@Operation(summary = "统计本年的隐患数")
|
||||
@GetMapping("/countYear/{year}")
|
||||
public Map<Integer,Integer> countYear(@PathVariable("year") String year){
|
||||
Map<Integer,Integer> map = mentenceFarmerRecordService.countYear(year);
|
||||
return map;
|
||||
}
|
||||
@Override
|
||||
public String getGroupId() {
|
||||
return "mentenceFarmerRecord";
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,6 @@
|
|||
package com.gunshi.project.hsz.entity.so;
|
||||
|
||||
import com.gunshi.db.dto.DateTimeRangeSo;
|
||||
import com.gunshi.db.dto.PageSo;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
|
@ -15,4 +16,10 @@ public class MentenceFarmerRecordPageSo {
|
|||
|
||||
@Schema(description = "维护项目Id")
|
||||
private Long mentenceStDetailId;
|
||||
|
||||
@Schema(description = "状态")
|
||||
private Integer status;
|
||||
|
||||
@Schema(description = "时间范围")
|
||||
private DateTimeRangeSo dateTimeSo;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,14 @@
|
|||
package com.gunshi.project.hsz.entity.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class MentenceInfoCount12Vo {
|
||||
|
||||
private String month;
|
||||
|
||||
private Integer hiddenCount;
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.gunshi.project.hsz.entity.vo;
|
||||
|
||||
|
||||
import com.gunshi.project.hsz.model.FileAssociations;
|
||||
import com.gunshi.project.hsz.model.HiddenInfo;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Schema(description = "维护信息统计分析")
|
||||
public class MentenceInfoCountVo extends HiddenInfo {
|
||||
|
||||
@Schema(description = "维护对象名称")
|
||||
private String mentenceStName;
|
||||
|
||||
@Schema(description = "维护项目名称")
|
||||
private String mentenceStDetailName;
|
||||
|
||||
@Schema(description = "维护人Id")
|
||||
private String mentencePersonId;
|
||||
|
||||
@Schema(description = "维护人名称")
|
||||
private String mentencePersonName;
|
||||
|
||||
private List<FileAssociations> files;
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package com.gunshi.project.hsz.entity.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class StatusCountVo {
|
||||
private Integer status;
|
||||
private Integer count;
|
||||
}
|
||||
|
|
@ -1,10 +1,67 @@
|
|||
package com.gunshi.project.hsz.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.gunshi.db.dto.DateTimeRangeSo;
|
||||
import com.gunshi.db.dto.MonthRangeSo;
|
||||
import com.gunshi.project.hsz.entity.vo.MentenceInfoCount12Vo;
|
||||
import com.gunshi.project.hsz.entity.vo.StatusCountVo;
|
||||
import com.gunshi.project.hsz.model.HiddenInfo;
|
||||
import com.gunshi.project.hsz.model.MentenceFarmerRecord;
|
||||
import org.apache.ibatis.annotations.MapKey;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Mapper
|
||||
public interface HiddenInfoMapper extends BaseMapper<HiddenInfo> {
|
||||
|
||||
@Select("""
|
||||
<script>
|
||||
SELECT
|
||||
TO_CHAR(found_time, 'YYYY-MM') AS month,
|
||||
COUNT(*) AS hidden_count
|
||||
FROM hidden_info
|
||||
WHERE found_time >= DATE_TRUNC('month', #{dto.start}::timestamp)
|
||||
AND found_time < DATE_TRUNC('month', #{dto.end}::timestamp) + INTERVAL '1 month'
|
||||
GROUP BY TO_CHAR(found_time, 'YYYY-MM')
|
||||
ORDER BY month;
|
||||
</script>
|
||||
""")
|
||||
List<MentenceInfoCount12Vo> selectCount12(@Param("dto") MonthRangeSo monthRangeSo);
|
||||
|
||||
|
||||
@Select("""
|
||||
<script>
|
||||
SELECT
|
||||
status,
|
||||
COUNT(*) AS count
|
||||
FROM hidden_info
|
||||
WHERE found_time >= DATE_TRUNC('month', #{dto.start}::timestamp)
|
||||
AND found_time < DATE_TRUNC('month', #{dto.end}::timestamp) + INTERVAL '1 month'
|
||||
GROUP BY status
|
||||
ORDER BY status;
|
||||
</script>
|
||||
""")
|
||||
@MapKey("status")
|
||||
List<StatusCountVo> selectCountType(@Param("dto") MonthRangeSo monthRangeSo);
|
||||
|
||||
@Select("""
|
||||
WITH all_status AS (
|
||||
SELECT 0 AS status UNION
|
||||
SELECT 1 AS status
|
||||
)
|
||||
SELECT
|
||||
a.status,
|
||||
COALESCE(COUNT(h.id), 0) AS count
|
||||
FROM all_status a
|
||||
LEFT JOIN hidden_info h
|
||||
ON a.status = h.status
|
||||
AND TO_CHAR(h.found_time, 'YYYY') = #{year}
|
||||
GROUP BY a.status
|
||||
ORDER BY a.status;
|
||||
""")
|
||||
@MapKey("status")
|
||||
List<StatusCountVo> countYear(@Param("year") String year);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,10 @@ package com.gunshi.project.hsz.mapper;
|
|||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo;
|
||||
import com.gunshi.project.hsz.entity.vo.MentenceInfoCountVo;
|
||||
import com.gunshi.project.hsz.model.MentenceFarmerRecord;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
@Mapper
|
||||
|
|
@ -12,9 +14,44 @@ public interface MentenceFarmerRecordMapper extends BaseMapper<MentenceFarmerRec
|
|||
|
||||
|
||||
@Select("""
|
||||
<script>
|
||||
select t1.*,t2.name as mentenceStDetailName,t3.st_name as mentenceStName from mentence_farmer_record t1
|
||||
join mentence_st_detail t2 on t1.mentence_st_detail_id = t2.id
|
||||
join mentence_st t3 on t1.mentence_st_id = t3.id
|
||||
where 1=1
|
||||
<if test="dto.mentenceStId != null">
|
||||
and t1.mentence_st_id = #{dto.mentenceStId}
|
||||
</if>
|
||||
<if test="dto.mentenceStDetailId != null">
|
||||
and t1.mentence_st_detail_id = #{dto.mentenceStDetailId}
|
||||
</if>
|
||||
</script>
|
||||
""")
|
||||
Page<MentenceFarmerRecord> pageQuery(Page<MentenceFarmerRecord> page, MentenceFarmerRecordPageSo pageSo);
|
||||
Page<MentenceFarmerRecord> pageQuery(Page<MentenceFarmerRecord> page,@Param(value = "dto") MentenceFarmerRecordPageSo pageSo);
|
||||
|
||||
@Select("""
|
||||
<script>
|
||||
select t1.*,t2.mentence_person_id as mentencePersonId,t2.mentence_person_name as mentencePersonName,
|
||||
t3.name as mentenceStDetailName,t4.st_name as mentenceStName
|
||||
from hidden_info t1
|
||||
join mentence_farmer_record t2 on t1.mentence_farmer_record_id = t2.id
|
||||
join mentence_st_detail t3 on t2.mentence_st_detail_id = t3.id
|
||||
join mentence_st t4 on t2.mentence_st_id = t4.id
|
||||
where 1=1
|
||||
<if test="dto.mentenceStId != null">
|
||||
and t2.mentence_st_id = #{dto.mentenceStId}
|
||||
</if>
|
||||
<if test="dto.mentenceStDetailId != null">
|
||||
and t2.mentence_st_detail_id = #{dto.mentenceStDetailId}
|
||||
</if>
|
||||
<if test="dto.dateTimeSo !=null">
|
||||
and t1.found_time between #{dto.dateTimeSo.start} and #{dto.dateTimeSo.end}
|
||||
</if>
|
||||
<if test="dto.status != null">
|
||||
and t1.status = #{dto.status}
|
||||
</if>
|
||||
</script>
|
||||
""")
|
||||
Page<MentenceInfoCountVo> pageInfoCountQuery(Page<Object> page,@Param("dto") MentenceFarmerRecordPageSo pageSo);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,14 +5,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.gunshi.db.dto.DateTimeRangeSo;
|
||||
import com.gunshi.db.dto.MonthRangeSo;
|
||||
import com.gunshi.project.hsz.entity.so.MentenceFarmerRecordPageSo;
|
||||
import com.gunshi.project.hsz.entity.vo.MentenceInfoCount12Vo;
|
||||
import com.gunshi.project.hsz.entity.vo.MentenceInfoCountVo;
|
||||
import com.gunshi.project.hsz.entity.vo.StatusCountVo;
|
||||
import com.gunshi.project.hsz.mapper.HiddenInfoMapper;
|
||||
import com.gunshi.project.hsz.mapper.MentenceFarmerRecordMapper;
|
||||
import com.gunshi.project.hsz.mapper.MentencePlanDetailMapper;
|
||||
import com.gunshi.project.hsz.model.HiddenInfo;
|
||||
import com.gunshi.project.hsz.model.MentenceFarmerRecord;
|
||||
import com.gunshi.project.hsz.model.MentencePlanDetail;
|
||||
import com.gunshi.project.hsz.model.MentenceTemplate;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
|
|
@ -28,7 +30,10 @@ import java.net.URLEncoder;
|
|||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collector;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Service
|
||||
@Slf4j
|
||||
|
|
@ -107,6 +112,12 @@ public class MentenceFarmerRecordService extends ServiceImpl<MentenceFarmerRecor
|
|||
return pageRecord;
|
||||
}
|
||||
|
||||
|
||||
public Page<MentenceInfoCountVo> pageInfoCountQuery(MentenceFarmerRecordPageSo pageSo) {
|
||||
Page<MentenceInfoCountVo> voPage = baseMapper.pageInfoCountQuery(pageSo.getPageSo().toPage(),pageSo);
|
||||
return voPage;
|
||||
}
|
||||
|
||||
public void exportToExcel(List<MentenceFarmerRecord> records, HttpServletResponse response) {
|
||||
Workbook workbook = new XSSFWorkbook();
|
||||
Sheet sheet = workbook.createSheet("日常养护记录");
|
||||
|
|
@ -134,6 +145,22 @@ public class MentenceFarmerRecordService extends ServiceImpl<MentenceFarmerRecor
|
|||
}
|
||||
}
|
||||
|
||||
public List<MentenceInfoCount12Vo> count12(MonthRangeSo monthRangeSo) {
|
||||
List<MentenceInfoCount12Vo> res = hiddenInfoMapper.selectCount12(monthRangeSo);
|
||||
return res;
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> countType(MonthRangeSo monthRangeSo) {
|
||||
return hiddenInfoMapper.selectCountType(monthRangeSo).stream()
|
||||
.collect(Collectors.toMap(StatusCountVo::getStatus, StatusCountVo::getCount));
|
||||
}
|
||||
|
||||
public Map<Integer, Integer> countYear(String year) {
|
||||
return hiddenInfoMapper.countYear(year).stream()
|
||||
.collect(Collectors.toMap(StatusCountVo::getStatus, StatusCountVo::getCount));
|
||||
}
|
||||
|
||||
|
||||
private static class StyleGroup {
|
||||
CellStyle headerStyle;
|
||||
CellStyle dataStyle;
|
||||
|
|
|
|||
Loading…
Reference in New Issue