Commit 92cf07ec by lijingjing

添加原铝、电解质、磷生铁统计分析

parent e0c67824
...@@ -3,12 +3,17 @@ package com.patzn.cloud.service.lims.hmhj.controller; ...@@ -3,12 +3,17 @@ package com.patzn.cloud.service.lims.hmhj.controller;
import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.mapper.Wrapper;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.ReportDTO; import com.patzn.cloud.service.hmhj.dto.ReportDTO;
import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSample; import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustSampleItemStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSamplePrepareStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustSamplePrepareStatusEnum;
import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum; import com.patzn.cloud.service.hmhj.enums.EntrustSampleStatusEnum;
import com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO;
import com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -24,6 +29,7 @@ import io.swagger.annotations.ApiImplicitParams; ...@@ -24,6 +29,7 @@ import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 委托单样品 前端控制器 * 委托单样品 前端控制器
...@@ -447,4 +453,21 @@ public class EntrustSampleController extends ServiceController { ...@@ -447,4 +453,21 @@ public class EntrustSampleController extends ServiceController {
return success(entrustSampleService.pageTestResultQuery(getPage(), entrustSample)); return success(entrustSampleService.pageTestResultQuery(getPage(), entrustSample));
} }
@ApiOperation("原铝品味统计查询")
@PostMapping("/al_taste_stats_query")
public RestResult<List<AlTasteStatsVO>> getAlTasteStatsQuery(StatsQueryDTO statsQueryDTO) {
return success(entrustSampleService.getAlTasteStatsQuery(statsQueryDTO));
}
@ApiOperation("电解质分子比统计查询")
@PostMapping("/electrolyte_ratio_stats_query")
public RestResult<List<ElectrolyteRatioStatsVO>> getElectrolyteRatioStatsQuery(QueryDTO queryDTO) {
return success(entrustSampleService.getElectrolyteRatioStatsQuery(queryDTO));
}
@ApiOperation("磷生铁统计查询")
@PostMapping("/p_make_fe_stats_query")
public RestResult<List<PMakeFeStatsVO>> getPMakeFeStatsQuery(QueryDTO queryDTO) {
return success(entrustSampleService.getPMakeFeStatsQuery(queryDTO));
}
} }
...@@ -61,6 +61,7 @@ public class UserInspectionCodeController extends ServiceController { ...@@ -61,6 +61,7 @@ public class UserInspectionCodeController extends ServiceController {
@ApiOperation("添加") @ApiOperation("添加")
@PostMapping("/") @PostMapping("/")
public RestResult<Boolean> add(UserInspectionCode userInspectionCode) { public RestResult<Boolean> add(UserInspectionCode userInspectionCode) {
userInspectionCode.setCreator(getAccount().getUserName());
return success(userInspectionCodeService.save(userInspectionCode)); return success(userInspectionCodeService.save(userInspectionCode));
} }
......
package com.patzn.cloud.service.lims.hmhj.mapper; package com.patzn.cloud.service.lims.hmhj.mapper;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSample; import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.commons.mapper.BatchMapper; import com.patzn.cloud.commons.mapper.BatchMapper;
import com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO;
import com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.RowBounds; import org.apache.ibatis.session.RowBounds;
...@@ -26,4 +31,10 @@ public interface EntrustSampleMapper extends BatchMapper<EntrustSample> { ...@@ -26,4 +31,10 @@ public interface EntrustSampleMapper extends BatchMapper<EntrustSample> {
List<EntrustSampleVO> selectMinStatusByEntrustIds(@Param("entrustIds") List<Long> entrustIds); List<EntrustSampleVO> selectMinStatusByEntrustIds(@Param("entrustIds") List<Long> entrustIds);
List<EntrustSampleVO> selectTestResultQuery(RowBounds rowBounds,@Param("vo") EntrustSampleVO entrustSample); List<EntrustSampleVO> selectTestResultQuery(RowBounds rowBounds,@Param("vo") EntrustSampleVO entrustSample);
List<AlTasteStatsVO> selectAlTasteStats(@Param("vo") StatsQueryDTO queryDTO);
List<ElectrolyteRatioStatsVO> selectElectrolyteRatioStats(@Param("vo") QueryDTO queryDTO);
List<PMakeFeStatsVO> selectPMakeFeStats(@Param("vo") QueryDTO queryDTO);
} }
...@@ -4,9 +4,14 @@ import com.baomidou.mybatisplus.mapper.Wrapper; ...@@ -4,9 +4,14 @@ import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.plugins.Page;
import com.patzn.cloud.commons.controller.Account; import com.patzn.cloud.commons.controller.Account;
import com.patzn.cloud.commons.service.IBaseService; import com.patzn.cloud.commons.service.IBaseService;
import com.patzn.cloud.service.hmhj.dto.QueryDTO;
import com.patzn.cloud.service.hmhj.dto.ReportDTO; import com.patzn.cloud.service.hmhj.dto.ReportDTO;
import com.patzn.cloud.service.hmhj.dto.StatsQueryDTO;
import com.patzn.cloud.service.hmhj.entity.EntrustSample; import com.patzn.cloud.service.hmhj.entity.EntrustSample;
import com.patzn.cloud.service.hmhj.vo.AlTasteStatsVO;
import com.patzn.cloud.service.hmhj.vo.ElectrolyteRatioStatsVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.PMakeFeStatsVO;
import java.util.List; import java.util.List;
...@@ -53,4 +58,10 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> { ...@@ -53,4 +58,10 @@ public interface IEntrustSampleService extends IBaseService<EntrustSample> {
Page<EntrustSampleVO> pageTestResultQuery(Page<EntrustSampleVO> page, EntrustSampleVO entrustSample); Page<EntrustSampleVO> pageTestResultQuery(Page<EntrustSampleVO> page, EntrustSampleVO entrustSample);
int countByEntrustId(Long id); int countByEntrustId(Long id);
List<AlTasteStatsVO> getAlTasteStatsQuery(StatsQueryDTO queryDTO);
List<ElectrolyteRatioStatsVO> getElectrolyteRatioStatsQuery(QueryDTO queryDTO);
List<PMakeFeStatsVO> getPMakeFeStatsQuery(QueryDTO queryDTO);
} }
...@@ -8,6 +8,7 @@ import com.patzn.cloud.commons.controller.LoginHelper; ...@@ -8,6 +8,7 @@ import com.patzn.cloud.commons.controller.LoginHelper;
import com.patzn.cloud.commons.toolkit.DateUtils; import com.patzn.cloud.commons.toolkit.DateUtils;
import com.patzn.cloud.commons.toolkit.StringHandleUtils; import com.patzn.cloud.commons.toolkit.StringHandleUtils;
import com.patzn.cloud.feign.base.client.SysOrgClient; import com.patzn.cloud.feign.base.client.SysOrgClient;
import com.patzn.cloud.feign.lims.hmhj.client.LmsChemicalCategoryClient;
import com.patzn.cloud.service.base.entity.SysOrg; import com.patzn.cloud.service.base.entity.SysOrg;
import com.patzn.cloud.service.hmhj.dto.EntrustDTO; import com.patzn.cloud.service.hmhj.dto.EntrustDTO;
import com.patzn.cloud.service.hmhj.dto.EntrustSampleDTO; import com.patzn.cloud.service.hmhj.dto.EntrustSampleDTO;
...@@ -16,6 +17,7 @@ import com.patzn.cloud.service.hmhj.enums.*; ...@@ -16,6 +17,7 @@ import com.patzn.cloud.service.hmhj.enums.*;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO;
import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO; import com.patzn.cloud.service.hmhj.vo.EntrustSampleVO;
import com.patzn.cloud.service.hmhj.vo.EntrustVO; import com.patzn.cloud.service.hmhj.vo.EntrustVO;
import com.patzn.cloud.service.lims.chemical.entity.LmsChemicalCategory;
import com.patzn.cloud.service.lims.common.service.ILmsMsgService; import com.patzn.cloud.service.lims.common.service.ILmsMsgService;
import com.patzn.cloud.service.lims.hmhj.mapper.EntrustMapper; import com.patzn.cloud.service.lims.hmhj.mapper.EntrustMapper;
import com.patzn.cloud.service.lims.hmhj.service.*; import com.patzn.cloud.service.lims.hmhj.service.*;
...@@ -73,6 +75,9 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -73,6 +75,9 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
@Autowired @Autowired
private SysOrgClient sysOrgClient; private SysOrgClient sysOrgClient;
@Autowired
private LmsChemicalCategoryClient lmsChemicalCategoryClient;
@Override @Override
public Page<Entrust> page(Page<Entrust> page, Entrust entrust) { public Page<Entrust> page(Page<Entrust> page, Entrust entrust) {
...@@ -97,47 +102,82 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust> ...@@ -97,47 +102,82 @@ public class EntrustServiceImpl extends BaseServiceImpl<EntrustMapper, Entrust>
public void initSampleCode(EntrustSample sample) { public void initSampleCode(EntrustSample sample) {
// 样品类型
String category = sample.getCategory();
RestAssert.fail(StringUtils.isBlank(category), "样品类型不能为空");
String parentCategory = "";
if (StringUtils.isNotBlank(category)) {
LmsChemicalCategory chemicalCategory = lmsChemicalCategoryClient.getTopCategory(category).getData();
RestAssert.fail(null == chemicalCategory, "样品(物资)类型不能为空");
parentCategory = chemicalCategory.getName();
}
Account account = LoginHelper.getAccount(); Account account = LoginHelper.getAccount();
int codeTypeNo = 0; int codeTypeNo = 0;
List<SysOrg> orgList = sysOrgClient.getListByUserId(account.getUserId()).getData(); List<SysOrg> orgList = sysOrgClient.getListByUserId(account.getUserId()).getData();
// 是否包含二期部门 // 具体是哪一期
boolean secondPhase = orgList.stream().filter(t -> t.getName().contains("二期")).count() > 0; String phase = orgList.stream().filter(t -> t.getName().contains("二期")).count() > 0 ? "Z" : "F";
// 默认样品初始编号 // 默认样品初始编号
CodeTypeEnum codeType = null; CodeTypeEnum codeType = null;
switch (sample.getName()) { switch (parentCategory) {
case "原铝": case "原铝":
codeType = CodeTypeEnum.SAMPLE_YL_CODE; codeType = CodeTypeEnum.SAMPLE_YL_CODE;
break; break;
case "电解质": case "电解质":
codeType = CodeTypeEnum.SAMPLE_DJZ_CODE; codeType = CodeTypeEnum.SAMPLE_DJZ_CODE;
break; break;
case "外委检测": case "外委检测物质":
codeType = CodeTypeEnum.SAMPLE_WWJC_CODE; codeType = CodeTypeEnum.SAMPLE_WWJC_CODE;
break; break;
case "三级编码物质":
codeType = CodeTypeEnum.SAMPLE_YFL_CODE;
break;
default: default:
codeType = CodeTypeEnum.SAMPLE_CODE; codeType = CodeTypeEnum.SAMPLE_CODE;
break; break;
} }
String sampleCode = codeRuleService.getKey((Integer) codeType.getValue(), codeType.getName(), sample); String sampleCode = codeRuleService.getKey((Integer) codeType.getValue(), codeType.getName(), sample);
String replaceStr = "XX", inspectNo = "", secondCode = "", thirdCode = "";
// 若为外委检测和三级编码,则查询质检编号
if (CodeTypeEnum.SAMPLE_WWJC_CODE == codeType || CodeTypeEnum.SAMPLE_YFL_CODE == codeType) {
List<UserInspectionCode> userInspectionCodeList = userInspectionCodeService.list(Condition.create().eq("user_id", account.getUserId()).eq("type", "ZJ").eq("deleted", 0));
if (CollectionUtils.isNotEmpty(userInspectionCodeList)) {
inspectNo = userInspectionCodeList.get(0).getNo();
}
}
if (CodeTypeEnum.SAMPLE_YL_CODE == codeType || CodeTypeEnum.SAMPLE_DJZ_CODE == codeType) { if (CodeTypeEnum.SAMPLE_YL_CODE == codeType || CodeTypeEnum.SAMPLE_DJZ_CODE == codeType) {
sampleCode += sample.getSlotNo(); sampleCode += sample.getSlotNo();
} else if (CodeTypeEnum.SAMPLE_WWJC_CODE == codeType) { }
sampleCode = (secondPhase ? "Z" : "F") + sampleCode.substring(1); // 外委检测样品编号
// XX替换成质检员编号 else if (CodeTypeEnum.SAMPLE_WWJC_CODE == codeType) {
// sampleCode = sampleCode.replace("XX", "01"); sampleCode = phase + sampleCode.substring(1);
List<UserInspectionCode> userInspectionCodeList = userInspectionCodeService.list(Condition.create().eq("user_id",account.getUserId()).eq("type","ZJ").eq("deleted",0)); secondCode = sampleCode.replace(replaceStr, "");
if(CollectionUtils.isNotEmpty(userInspectionCodeList)){ sampleCode = sampleCode.replace(replaceStr, inspectNo);
sampleCode = sampleCode.replace("XX",userInspectionCodeList.get(0).getNo()); }
} // 三级编码默认使用第一级别的委托的编码,也就是默认为A
else if (CodeTypeEnum.SAMPLE_YFL_CODE == codeType) {
sampleCode = phase + sampleCode.substring(1);
secondCode = sampleCode.replace("A", "B").replace(replaceStr, inspectNo);
thirdCode = sampleCode.replace("A", "C").replace(replaceStr, "HY");
sampleCode = sampleCode.replace(replaceStr, inspectNo);
} }
if (StringUtils.isNotBlank(sampleCode)) { if (StringUtils.isNotBlank(sampleCode)) {
sample.setCode(sampleCode); sample.setCode(sampleCode);
// 现只有一级编码
sample.setCodeType(codeTypeNo);
sample.setFirstCode(sampleCode); sample.setFirstCode(sampleCode);
// 默认一级编码
sample.setCodeType(codeTypeNo);
// 若为三级编号,修改对应类别
if (codeType == CodeTypeEnum.SAMPLE_WWJC_CODE) {
sample.setCodeType(2);
sample.setSecondCode(secondCode);
} else if (codeType == CodeTypeEnum.SAMPLE_YFL_CODE) {
sample.setCodeType(3);
sample.setSecondCode(secondCode);
sample.setThirdCode(thirdCode);
}
} }
} }
......
...@@ -35,15 +35,18 @@ ...@@ -35,15 +35,18 @@
<select id="selectByItemLeftRight" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO"> <select id="selectByItemLeftRight" resultType="com.patzn.cloud.service.hmhj.vo.EntrustSampleItemVO">
WITH i AS ( WITH i AS (
SELECT SELECT
id, id,
entrust_sample_id, entrust_sample_id,
name, name,
status, status,
company_id, company_id,
standard, standard,
group_name, group_name,
test_value, test_value,
group_id group_id,
tester,
tester_id,
test_time
FROM FROM
entrust_sample_item entrust_sample_item
WHERE WHERE
......
-- 新增视图-用户所属第几期
-- 新增视图-用户所属第几期
create or replace view v_user_period
as
SELECT rel.user_id,
CASE
WHEN sum(strpos(r.name::text, '三期'::text)) > 0 THEN '三期'::text
ELSE '二期'::text
END AS period
FROM sys_user_rel_role rel
JOIN sys_role r ON r.id = rel.role_id
WHERE r.status = 1
GROUP BY rel.user_id
\ No newline at end of file
-- 开启dblink拓展
-- 开启dblink拓展
--执行:create extension dblink;
create extension dblink;
-- 创建数据库链接
SELECT dblink_connect('dev_base', 'host=localhost dbname=dev_base user=postgres password=post123');
SELECT dblink_connect('dev_lims', 'host=localhost dbname=dev_lims user=postgres password=post123');
SELECT dblink_connect('pc_base', 'host=localhost dbname=pc_base user=hjhmdb password=hm57hj6');
SELECT dblink_connect('pc_lims', 'host=localhost dbname=pc_lims user=hjhmdb password=hm57hj6');
-------------------------------------------------------------------------------------------------
-- 创建字符,数字处理函数
CREATE OR REPLACE FUNCTION "public"."func_decode"(VARIADIC "p_decode_list" _text)
RETURNS "pg_catalog"."text" AS $BODY$
declare
-- 获取数组长度(即入参个数)
v_len integer := array_length(p_decode_list, 1);
-- 声明存放返回值的变量
v_ret text;
begin
/*
* 功能说明:模拟Oracle中的DECODE功能(字符串处理, 其它格式可以自行转换返回值)
* 参数说明:格式同Oracle相同,至少三个参数
* 实现原理: 1、VARIADIC 允许变参; 2、Oracle中的DECODE是拿第一个数依次和之后的偶数位值进行比较,相同则取偶数位+1的数值,否则取最后一位值(最后一位为偶数为,否则为null)
*/
-- 同Oracle相同当参数不足三个抛出异常
if v_len >= 3 then
-- Oracle中的DECODE是拿第一个数依次和之后的偶数位值进行比较,相同则取偶数位+1的数值
for i in 2..(v_len - 1) loop
v_ret := null;
if mod(i, 2) = 0 then
if p_decode_list[1] = p_decode_list[i] then
v_ret := p_decode_list[i+1];
elsif p_decode_list[1] <> p_decode_list[i] then
if v_len = i + 2 and v_len > 3 then
v_ret := p_decode_list[v_len];
end if;
end if;
end if;
exit when v_ret is not null;
end loop;
else
raise exception 'UPG-00938: not enough args for function.';
end if;
return v_ret;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
------------------------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION "public"."func_if"("p_condition" bool, "p_fist_val" text, "p_last_val" text)
RETURNS "pg_catalog"."text" AS $BODY$
declare
v_ret_val text;
begin
/*
* 功能说明:模拟三元表达式 ( condition ? value1 : value2 );
* 参数说明:p_condition 接收 boolean类型的表达式 如: 1 = 1, 2 > 1 等; 后两个值是根据p_condition的真假对应的返回值
* 实现原理: p_condition 为真则返回p_fist_val, 否则返回P_last_val
*/
v_ret_val := null;
if true = p_condition then
v_ret_val := p_fist_val;
elsif false = p_condition then
v_ret_val := P_last_val;
end if;
return v_ret_val;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
--------------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION "public"."func_if_int"("p_condition" bool, "p_fist_val" int8, "p_last_val" int8)
RETURNS "pg_catalog"."int8" AS $BODY$
declare
v_ret_val int8;
begin
/*
* 功能说明:模拟三元表达式 ( condition ? value1 : value2 );
* 参数说明:p_condition 接收 boolean类型的表达式 如: 1 = 1, 2 > 1 等; 后两个值是根据p_condition的真假对应的返回值
* 实现原理: p_condition 为真则返回p_fist_val, 否则返回P_last_val
*/
v_ret_val := null;
if true = p_condition then
v_ret_val := p_fist_val;
elsif false = p_condition then
v_ret_val := P_last_val;
end if;
return v_ret_val;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
----------------------------------------------------------------------------------
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