Commit e3607375 by lijingjing

添加部分大屏接口查询;

parent e9c79dc3
package com.patzn.cloud.service.lims.hmhj.controller;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
......@@ -81,4 +82,16 @@ public class EntrustSampleItemIndexController extends ServiceController {
public RestResult<Boolean> delete(@RequestParam("ids") List<Long> ids) {
return success(entrustSampleItemIndexService.removeByIds(ids));
}
@ApiOperation("根据检测项目ID查询信息")
@GetMapping("/get_by_item_info")
public RestResult<EntrustSampleItemIndex> getByItemIdName(@RequestParam("itemId") Long itemId) {
return success(entrustSampleItemIndexService.getByItemIdName(itemId));
}
@ApiOperation("添加或修改指标")
@PostMapping("/save_or_update")
public RestResult<Boolean> saveOrUpdate(EntrustSampleItemIndex entrustSampleItemIndex) {
return success(entrustSampleItemIndexService.saveOrUpdateData(entrustSampleItemIndex));
}
}
......@@ -3,6 +3,7 @@ package com.patzn.cloud.service.lims.hmhj.controller;
import com.patzn.cloud.commons.api.RestResult;
import com.patzn.cloud.commons.controller.ServiceController;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.WorkloadStatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.Statistics;
import com.patzn.cloud.service.lims.hmhj.service.IStatisticsService;
import io.swagger.annotations.Api;
......@@ -67,7 +68,7 @@ public class StatisticsController extends ServiceController {
@ApiOperation("工作量统计")
@PostMapping("/workload_quantity")
public RestResult<List<Statistics>> getWorkloadQuantity(QueryDTO queryDTO) {
public RestResult<Statistics> getWorkloadQuantity(WorkloadStatsQueryDTO queryDTO) {
return success(statsService.getWorkloadQuantity(queryDTO));
}
......@@ -79,8 +80,8 @@ public class StatisticsController extends ServiceController {
@ApiOperation("本周自产炭块质量统计")
@PostMapping("/cur_week_carbon blocks")
public RestResult<List<Statistics>> getCurWeekCarbonBlocksStats(QueryDTO queryDTO) {
return success(statsService.getCurWeekCarbonBlocksStats(queryDTO));
public RestResult<List<Statistics>> getCurWeekCarbonBlocks(QueryDTO queryDTO) {
return success(statsService.getCurWeekCarbonBlocks(queryDTO));
}
@ApiOperation("当日原铝质量统计")
......
......@@ -2,6 +2,7 @@ package com.patzn.cloud.service.lims.hmhj.mapper;
import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.WorkloadStatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.Statistics;
import org.apache.ibatis.annotations.Param;
......@@ -12,4 +13,10 @@ public interface StatisticsMapper extends BatchMapper<Statistics> {
List<Statistics> selectAlBrandsRateStats(@Param("vo") QueryDTO dto);
Statistics selectOutTestFinishStats(@Param("vo") QueryDTO queryDTO);
List<Statistics> selectCurWeekCarbonBlocks(@Param("vo") QueryDTO queryDTO);
List<Statistics> selectCurWeekAcceptanceQualified(@Param("vo") QueryDTO queryDTO);
Statistics selectWorkloadQuantity(@Param("vo") WorkloadStatsQueryDTO workloadStatsQueryDTO);
}
......@@ -8,7 +8,7 @@ import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO;
import java.util.List;
/**
* 服务类
* 服务类
*
* @author wwd
* @since 2021-06-15
......@@ -27,4 +27,9 @@ public interface IEntrustSampleItemIndexService extends IBaseService<EntrustSamp
List<EntrustSampleItemIndexVO> listVOBySampleIds(List<Long> sampleIds);
List<EntrustSampleItemIndex> listByItemId(Long itemId);
EntrustSampleItemIndex getByItemIdName(Long itemId);
boolean saveOrUpdateData(EntrustSampleItemIndex entrustSampleItemIndex);
}
......@@ -2,6 +2,7 @@ package com.patzn.cloud.service.lims.hmhj.service;
import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.WorkloadStatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.Statistics;
import java.util.List;
......@@ -35,9 +36,9 @@ public interface IStatisticsService extends IBaseService<Statistics> {
List<Statistics> getOutTestItemQuantity(QueryDTO queryDTO);
List<Statistics> getWorkloadQuantity(QueryDTO queryDTO);
Statistics getWorkloadQuantity(WorkloadStatsQueryDTO queryDTO);
List<Statistics> getCurWeekAcceptanceQualified(QueryDTO queryDTO);
List<Statistics> getCurWeekCarbonBlocksStats(QueryDTO queryDTO);
List<Statistics> getCurWeekCarbonBlocks(QueryDTO queryDTO);
}
......@@ -2,10 +2,12 @@ package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.baomidou.mybatisplus.mapper.Condition;
import com.baomidou.mybatisplus.toolkit.CollectionUtils;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItem;
import com.patzn.cloud.service.hmhj.entity.EntrustSampleItemIndex;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemIndexVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.lims.common.BeanUtils;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustSampleItemIndexMapper;
import com.patzn.cloud.service.lims.hmhj.service.IEntrustSampleItemIndexService;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
......@@ -18,6 +20,7 @@ import com.baomidou.mybatisplus.plugins.Page;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
......@@ -82,4 +85,38 @@ public class EntrustSampleItemIndexServiceImpl extends BaseServiceImpl<EntrustSa
}
return baseMapper.listBySampleIds(sampleIds);
}
@Override
public List<EntrustSampleItemIndex> listByItemId(Long itemId) {
if (null == itemId) {
return null;
}
return list(Condition.create().eq("entrust_sample_item_id", itemId));
}
@Override
public EntrustSampleItemIndex getByItemIdName(Long itemId) {
RestAssert.fail(null == itemId, "检测项目为空");
EntrustSampleItem item = entrustSampleItemService.getById(itemId);
RestAssert.fail(null == item, "检测项目为空");
List<EntrustSampleItemIndex> itemIndices = list(Condition.create().eq("entrust_sample_item_id", itemId).eq("name", item.getName() + "-result"));
return CollectionUtils.isEmpty(itemIndices) ? new EntrustSampleItemIndex() : itemIndices.get(0);
}
@Override
public boolean saveOrUpdateData(EntrustSampleItemIndex itemIndex) {
RestAssert.fail(null == itemIndex && null == itemIndex.getEntrustSampleItemId(), "添加时检测项目ID为空");
if (null == itemIndex.getId()) {
EntrustSampleItemIndex indexData = getByItemIdName(itemIndex.getEntrustSampleItemId());
if (null != indexData && null != indexData.getId()) {
BeanUtils.copyProperties(itemIndex, indexData, true);
return updateById(indexData);
}
EntrustSampleItem item = entrustSampleItemService.getById(itemIndex.getEntrustSampleItemId());
itemIndex.setName(item.getName() + "-result");
itemIndex.setStatus(0);
return save(itemIndex);
}
return updateById(itemIndex);
}
}
package com.patzn.cloud.service.lims.hmhj.service.impl;
import com.patzn.cloud.commons.api.RestAssert;
import com.patzn.cloud.commons.service.impl.BaseServiceImpl;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.WorkloadStatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.Statistics;
import com.patzn.cloud.service.lims.hmhj.mapper.StatisticsMapper;
import com.patzn.cloud.service.lims.hmhj.service.IStatisticsService;
import org.apache.commons.lang.time.DateUtils;
import org.springframework.stereotype.Service;
import java.util.List;
......@@ -58,17 +61,23 @@ public class StatisticsServiceImpl extends BaseServiceImpl<StatisticsMapper, Sta
}
@Override
public List<Statistics> getWorkloadQuantity(QueryDTO queryDTO) {
return null;
public Statistics getWorkloadQuantity(WorkloadStatsQueryDTO queryDTO) {
RestAssert.fail(null == queryDTO.getTimeS() || null == queryDTO.getTimeE(), "起始和结束时间为空");
queryDTO.setLastYearTimeS(DateUtils.addYears(queryDTO.getTimeS(), -1));
queryDTO.setLastYearTimeE(DateUtils.addYears(queryDTO.getTimeE(), -1));
long days = com.patzn.cloud.commons.toolkit.DateUtils.getDaysBetweenTwoDate(queryDTO.getTimeS(), queryDTO.getTimeE());
queryDTO.setPrevTimeS(DateUtils.addDays(queryDTO.getTimeS(), -(int) days));
queryDTO.setPrevTimeE(queryDTO.getTimeS());
return baseMapper.selectWorkloadQuantity(queryDTO);
}
@Override
public List<Statistics> getCurWeekAcceptanceQualified(QueryDTO queryDTO) {
return null;
return baseMapper.selectCurWeekAcceptanceQualified(queryDTO);
}
@Override
public List<Statistics> getCurWeekCarbonBlocksStats(QueryDTO queryDTO) {
return null;
public List<Statistics> getCurWeekCarbonBlocks(QueryDTO queryDTO) {
return baseMapper.selectCurWeekCarbonBlocks(queryDTO);
}
}
......@@ -105,8 +105,7 @@
</if>
AND i.company_id = #{vo.companyId}
</where>
ORDER BY i.name,s.code ASC
ORDER BY s.order_by asc ,s.code ASC
</select>
<select id="selectVOList" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO">
......@@ -524,7 +523,7 @@
<select id="selectSampleItemStats" resultType="com.patzn.cloud.service.hmhj.vo.SampleItemStatsVO">
SELECT
s.code "sample_code",
'[' || string_agg('{"key":"'||ii.name||'","value":'||COALESCE(ii.test_value,'0')||'}',',') || ']' "itemJson"
'[' || string_agg('{"key":"'||replace(ii.name,'-result','')||'","value":'||COALESCE(ii.test_value,'0')||'}',',') || ']' "itemJson"
FROM
entrust_sample_item_index ii
JOIN entrust_sample_item i ON i.ID = ii.entrust_sample_item_id
......
......@@ -85,7 +85,6 @@
</select>
<select id="selectMinStatusByEntrustIds" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleVO">
WITH summary AS (
SELECT p.id,
p.name,
......@@ -103,7 +102,6 @@
#{entrustId}
</foreach>
</if>
)
SELECT s.id,
s.name,
......@@ -112,15 +110,9 @@
s.status
FROM summary s
WHERE s.ranks = 1
</select>
<select id="selectTestResultQuery" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleVO">
SELECT
s.ID,
s.NAME,
......@@ -135,11 +127,10 @@
FROM entrust_sample s
JOIN entrust e ON s.entrust_id = e.ID
JOIN (
SELECT i.entrust_sample_id FROM entrust_sample_item i
JOIN entrust_sample_item_index x ON i.ID = x.entrust_sample_item_id
WHERE i.deleted = 0 AND x.deleted = 0 AND x.test_value IS NOT NULL
GROUP BY i.entrust_sample_id
SELECT i.entrust_sample_id FROM entrust_sample_item i
JOIN entrust_sample_item_index x ON i.ID = x.entrust_sample_item_id
WHERE i.deleted = 0 AND x.deleted = 0 AND x.test_value IS NOT NULL
GROUP BY i.entrust_sample_id
) k ON s.ID = k.entrust_sample_id
left join (
-- 实际每个样品一条记录,此处去除测试冗余数据
......
......@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.patzn.cloud.service.lims.hmhj.mapper.StatisticsMapper">
<!--当日原铝质量统计-->
<select id="selectAlBrandsRateStatus" resultType="com.patzn.cloud.service.hmhj.entity.Statistics">
<select id="selectAlBrandsRateStats" resultType="com.patzn.cloud.service.hmhj.entity.Statistics">
SELECT
s.sample_grading "brand",
A.total,
......@@ -11,23 +11,24 @@
FROM
entrust_sample s,
(
SELECT COUNT ( 1 ) "total" FROM entrust_sample s WHERE s.deleted = 0 AND s.sample_grading IS NOT NULL
-- AND to_char(s.judge_time, 'yyyy-MM-dd') = to_char( now(), 'yyyy-MM-dd')
SELECT COUNT (1) "total" FROM entrust_sample s WHERE s.deleted = 0 AND s.sample_grading IS NOT NULL
AND to_char(s.judge_time, 'yyyy-MM-dd') = to_char( now(), 'yyyy-MM-dd')
) A
WHERE
s.deleted = 0
AND s.sample_grading IS NOT NULL -- AND to_char( s.judge_time, 'yyyy-MM-dd' ) = to_char(now(), 'yyyy-MM-dd')
AND s.sample_grading IS NOT NULL AND to_char( s.judge_time, 'yyyy-MM-dd' ) = to_char(now(), 'yyyy-MM-dd')
GROUP BY
A.total_num,
A.total,
s.sample_grading
ORDER BY
s.sample_grading DESC
</select>
<!--外委完成量统计-->
<select id="selectOutTestFinishStats" resultType="com.patzn.cloud.service.hmhj.entity.Statistics">
SELECT
count(1) "total",
sum(case when s.status = 70 and s.judge_status = 2 then 1 else 0 end) "finish_num"
sum(case when s.status = 70 and s.judge_status = 2 then 1 else 0 end) "done_num"
FROM
contract_sample c, entrust_sample s
WHERE
......@@ -35,4 +36,101 @@
and c.type = 1
</select>
<!--本周自产炭块质量统计-->
<select id="selectCurWeekCarbonBlocks" resultType="com.patzn.cloud.service.hmhj.entity.Statistics">
SELECT
s.sample_grading "brand",
A.total,
sum(case when s.status = 70 and s.judge_status = 2 then 1 else 0 end) "brand_num",
round( sum(case when s.status = 70 and s.judge_status = 2 then 1 else 0 end) :: NUMERIC / A.total, 2 ) "ratio"
FROM
entrust_sample s,
(
SELECT COUNT( 1 ) "total"
FROM
entrust_sample s
WHERE
s.deleted = 0
AND s.sample_grading IS NOT NULL
AND s.NAME = '自产阳极炭块'
AND EXTRACT ( YEAR FROM s.judge_time ) = EXTRACT ( YEAR FROM NOW() )
AND EXTRACT ( WEEK FROM s.judge_time ) = EXTRACT ( WEEK FROM NOW() )
) A
WHERE
s.deleted = 0
AND s.sample_grading IS NOT NULL
AND s.NAME = '自产阳极炭块'
AND EXTRACT ( YEAR FROM s.judge_time ) = EXTRACT ( YEAR FROM NOW() )
AND EXTRACT ( WEEK FROM s.judge_time ) = EXTRACT ( WEEK FROM NOW() )
GROUP BY
A.total,
s.sample_grading
ORDER BY
s.sample_grading DESC
</select>
<!--本周验收合格情况-->
<select id="selectCurWeekAcceptanceQualified" resultType="com.patzn.cloud.service.hmhj.entity.Statistics">
SELECT
to_char(s.judge_time,'yyyy-MM-dd') "occur_date",
sum(case when s.ok_judge = '合格' then 1 else 0 end) "done_num",
sum(case when s.ok_judge = '不合格' then 1 else 0 end) "fail_num"
FROM
entrust_sample s
WHERE
s.deleted = 0
AND s.sample_grading IS NOT NULL
AND s.status = 70 AND s.judge_status = 2
AND EXTRACT ( YEAR FROM s.judge_time ) = EXTRACT ( YEAR FROM NOW() )
AND EXTRACT ( WEEK FROM s.judge_time ) = EXTRACT ( WEEK FROM NOW() )
GROUP BY
to_char(s.judge_time,'yyyy-MM-dd')
ORDER BY
to_char(s.judge_time,'yyyy-MM-dd') ASC
</select>
<!--工作量统计-->
<select id="selectWorkloadQuantity" resultType="com.patzn.cloud.service.hmhj.entity.Statistics">
SELECT
a.*,
round((case when 0 = b.total then 0 else a.total - b.total end)::numeric / (case when 0 = b.total then 1 else b.total end),2) "chain_ratio",
round((case when 0 = c.total then 0 else a.total - c.total end)::numeric / (case when 0 = c.total then 1 else c.total end),2) "sames_ratio"
from (SELECT
count(r.id) "total",
sum(case when s.ok_judge = '合格' then 1 else 0 end) "done_num",
count(1) - sum(case when s.ok_judge = '合格' then 1 else 0 end) "fail_num",
round(sum(case when s.ok_judge = '合格' then 1 else 0 end):: NUMERIC / count(1),2) "done_ratio",
round((count(1) - sum(case when s.ok_judge = '合格' then 1 else 0 end)):: NUMERIC / count(1),2) "fail_ratio"
FROM
entrust_sample s
join entrust e on e.id = s.entrust_id
join entrust_report r on r.entrust_id = e.id
WHERE
s.deleted = 0 and e.deleted = 0 and r.deleted = 0
AND s.status = 70 AND s.judge_status = 2
AND s.judge_time between #{timeS} and #{timeE}
) a , (SELECT
count(r.id) "total"
FROM
entrust_sample s
join entrust e on e.id = s.entrust_id
join entrust_report r on r.entrust_id = e.id
WHERE
s.deleted = 0 and e.deleted = 0 and r.deleted = 0
AND s.status = 70 AND s.judge_status = 2
AND s.judge_time between #{lastYearTimeS} and #{lastYearTimeE}
) b,
(SELECT
count(r.id) "total"
FROM
entrust_sample s
join entrust e on e.id = s.entrust_id
join entrust_report r on r.entrust_id = e.id
WHERE
s.deleted = 0 and e.deleted = 0 and r.deleted = 0
AND s.status = 70 AND s.judge_status = 2
AND s.judge_time between #{prevTimeS} and #{prevTimeE}
) c
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment