Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
87f1686d
Commit
87f1686d
authored
Jul 09, 2024
by
suhuiguang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.检验检测概览接口
parent
ee41c37f
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
267 additions
and
0 deletions
+267
-0
InspectTimeCountDto.java
...in/amos/boot/module/jyjc/api/dto/InspectTimeCountDto.java
+31
-0
JyjcInspectionApplicationEquipMapper.java
...jyjc/api/mapper/JyjcInspectionApplicationEquipMapper.java
+11
-0
DPFilterParamDto.java
...oin/amos/boot/module/jyjc/api/model/DPFilterParamDto.java
+29
-0
JyjcInspectionApplicationEquipMapper.xml
...resources/mapper/JyjcInspectionApplicationEquipMapper.xml
+35
-0
DPStatisticsController.java
...ot/module/jyjc/biz/controller/DPStatisticsController.java
+50
-0
DPStatisticsServiceImpl.java
...boot/module/jyjc/biz/service/DPStatisticsServiceImpl.java
+111
-0
No files found.
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/dto/InspectTimeCountDto.java
0 → 100644
View file @
87f1686d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* @author Administrator
*/
@Data
@ApiModel
public
class
InspectTimeCountDto
{
@ApiModelProperty
(
value
=
"检验类型"
)
private
String
bizType
;
@ApiModelProperty
(
value
=
"设备种类code"
)
private
String
equList
;
@ApiModelProperty
(
value
=
"设备类别code"
)
private
String
equCategory
;
@ApiModelProperty
(
value
=
"设备品种code"
)
private
String
equipDefine
;
@ApiModelProperty
(
value
=
"次数"
)
private
Integer
num
;
@ApiModelProperty
(
value
=
"区域信息省#市#区,按照#分割"
)
private
String
areaCode
;
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/mapper/JyjcInspectionApplicationEquipMapper.java
View file @
87f1686d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
mapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.dto.InspectTimeCountDto
;
import
com.yeejoin.amos.boot.module.jyjc.api.entity.JyjcInspectionApplicationEquip
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.DPFilterParamDto
;
import
java.util.List
;
/**
* Mapper 接口
...
...
@@ -11,4 +15,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public
interface
JyjcInspectionApplicationEquipMapper
extends
BaseMapper
<
JyjcInspectionApplicationEquip
>
{
public
void
deleteByApplicationSeq
(
Long
applicationSeq
);
/**
* 检验检测次数统计维度按照设备种类、检验类型进行统计
* @param dpFilterParamDto g过滤条件
* @return 统计列表
*/
List
<
InspectTimeCountDto
>
countInspectTimeCountByTypeAndEquList
(
DPFilterParamDto
dpFilterParamDto
);
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/java/com/yeejoin/amos/boot/module/jyjc/api/model/DPFilterParamDto.java
0 → 100644
View file @
87f1686d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
api
.
model
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
/**
* 大屏筛选过滤对象
*
* @author Administrator
*/
@Data
public
class
DPFilterParamDto
{
/**
* 区域
*/
@NotBlank
(
message
=
"区域编码不能为空!"
)
private
String
cityCode
;
/**
* 数据统计的开始日期
*/
private
String
beginDate
;
/**
* 数据统计的结束日期
*/
private
String
endDate
;
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-api/src/main/resources/mapper/JyjcInspectionApplicationEquipMapper.xml
View file @
87f1686d
...
...
@@ -12,4 +12,39 @@
</delete>
<select
id=
"countInspectTimeCountByTypeAndEquList"
resultType=
"com.yeejoin.amos.boot.module.jyjc.api.dto.InspectTimeCountDto"
>
select
c.biz_type,
c.equ_list,
c.equ_category,
c.equ_define,
count(1) as num
from
(SELECT
ae.equ_list,
ae.equ_category,
ae.equ_define,
a.biz_type,
concat(u.PROVINCE,'#', u.CITY,'#', u.COUNTY) as areaCode
FROM
"tz_jyjc_inspection_application_equip" ae,
tz_jyjc_inspection_application a,
"idx_biz_jg_use_info" u
where
ae.equip_unicode = u."RECORD"
and a.sequence_nbr = ae.application_seq
and (a.application_date between #{beginDate} and #{endDate})
and a.status='6616'
and u."PROVINCE"
<![CDATA[<>]]>
''
and u."CITY"
<![CDATA[<>]]>
''
and u."COUNTY"
<![CDATA[<>]]>
''
) c
where
c.areaCode like concat('%',#{cityCode}, '%')
group by c.biz_type,
c.equ_list,
c.equ_category,
c.equ_define
</select>
</mapper>
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/controller/DPStatisticsController.java
0 → 100644
View file @
87f1686d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
controller
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.DPFilterParamDto
;
import
com.yeejoin.amos.boot.module.jyjc.biz.service.DPStatisticsServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.validation.FieldError
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.typroject.tyboot.core.foundation.enumeration.UserType
;
import
org.typroject.tyboot.core.restful.doc.TycloudOperation
;
import
org.typroject.tyboot.core.restful.exception.instance.BadRequest
;
import
org.typroject.tyboot.core.restful.utils.ResponseHelper
;
import
org.typroject.tyboot.core.restful.utils.ResponseModel
;
import
java.util.List
;
import
java.util.Map
;
/**
* 大屏统计controller
*
* @author Administrator
*/
@RestController
@RequestMapping
(
"/db/statistics"
)
@Api
(
tags
=
"大屏统计"
)
public
class
DPStatisticsController
{
private
DPStatisticsServiceImpl
statisticsService
;
public
DPStatisticsController
(
DPStatisticsServiceImpl
statisticsService
)
{
this
.
statisticsService
=
statisticsService
;
}
@TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@ApiOperation
(
httpMethod
=
"POST"
,
value
=
"检验检测次数统计"
,
notes
=
"按照维度设备种类、检验类型进行统计"
)
@PostMapping
(
value
=
"/inspectTime/count/byEquListAndInspectType"
)
public
ResponseModel
<
Map
<
String
,
Object
>>
inspectTimeCountByTypeAndEquList
(
@Validated
@RequestBody
DPFilterParamDto
dpFilterParamDto
,
BindingResult
result
)
{
List
<
FieldError
>
fieldErrors
=
result
.
getFieldErrors
();
if
(!
fieldErrors
.
isEmpty
()){
throw
new
BadRequest
(
fieldErrors
.
get
(
0
).
getDefaultMessage
());
}
return
ResponseHelper
.
buildResponse
(
statisticsService
.
inspectTimeCountByTypeAndEquList
(
dpFilterParamDto
));
}
}
amos-boot-system-tzs/amos-boot-module-jyjc/amos-boot-module-jyjc-biz/src/main/java/com/yeejoin/amos/boot/module/jyjc/biz/service/DPStatisticsServiceImpl.java
0 → 100644
View file @
87f1686d
package
com
.
yeejoin
.
amos
.
boot
.
module
.
jyjc
.
biz
.
service
;
import
cn.hutool.core.date.DateUtil
;
import
com.yeejoin.amos.boot.module.jyjc.api.dto.InspectTimeCountDto
;
import
com.yeejoin.amos.boot.module.jyjc.api.enums.BizTypeEnum
;
import
com.yeejoin.amos.boot.module.jyjc.api.mapper.JyjcInspectionApplicationEquipMapper
;
import
com.yeejoin.amos.boot.module.jyjc.api.model.DPFilterParamDto
;
import
com.yeejoin.amos.boot.module.ymt.api.dto.EquipmentCategoryDto
;
import
com.yeejoin.amos.boot.module.ymt.api.mapper.EquipmentCategoryMapper
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
* 大屏统计实现类
*
* @author Administrator
*/
@Service
public
class
DPStatisticsServiceImpl
{
/**
* 压力容器设备种类
*/
private
final
static
String
EQU_LIST_CYLINDER
=
"2000"
;
/**
* 气瓶设备类别
*/
private
final
static
String
EQU_CATEGORY_CYLINDER
=
"2300"
;
private
EquipmentCategoryMapper
equipmentCategoryMapper
;
private
JyjcInspectionApplicationEquipMapper
inspectionApplicationEquipMapper
;
public
DPStatisticsServiceImpl
(
EquipmentCategoryMapper
equipmentCategoryMapper
,
JyjcInspectionApplicationEquipMapper
inspectionApplicationEquipMapper
)
{
this
.
equipmentCategoryMapper
=
equipmentCategoryMapper
;
this
.
inspectionApplicationEquipMapper
=
inspectionApplicationEquipMapper
;
}
public
Map
<
String
,
Object
>
inspectTimeCountByTypeAndEquList
(
DPFilterParamDto
dpFilterParamDto
)
{
// 1.查询条件构造未上送时间时,默认查询数据为近一个月数据
this
.
setDefaultFilter
(
dpFilterParamDto
);
// 2.按照前端约定格式返回数据
Map
<
String
,
Object
>
result
=
new
HashMap
<>();
//2.1 图列数据构造
List
<
BizTypeEnum
>
bizTypeEnums
=
getBizTypeList
();
result
.
put
(
"legendData"
,
this
.
getLegendData
(
bizTypeEnums
));
// 8大类设备种类
List
<
EquipmentCategoryDto
>
equipmentCategoryDtos
=
equipmentCategoryMapper
.
selectClassify
();
//2.2 x轴数据构造
result
.
put
(
"xdata"
,
this
.
getXData
(
equipmentCategoryDtos
));
//2.3 y轴数据构造
this
.
buildYData
(
result
,
bizTypeEnums
,
dpFilterParamDto
,
equipmentCategoryDtos
);
return
result
;
}
private
void
buildYData
(
Map
<
String
,
Object
>
result
,
List
<
BizTypeEnum
>
bizTypeEnums
,
DPFilterParamDto
dpFilterParamDto
,
List
<
EquipmentCategoryDto
>
equipmentCategoryDtos
)
{
// 待统计的数据本来sql可以单独统计,但是要求气瓶单独从压力容器里拎出来,与八大类同级,故java处理
List
<
InspectTimeCountDto
>
inspectTimeCountDtos
=
inspectionApplicationEquipMapper
.
countInspectTimeCountByTypeAndEquList
(
dpFilterParamDto
);
bizTypeEnums
.
forEach
(
bizTypeEnum
->
{
result
.
put
(
bizTypeEnum
.
getCode
(),
this
.
countNumByBizTypeAndEquList
(
equipmentCategoryDtos
,
bizTypeEnum
.
getCode
(),
inspectTimeCountDtos
));
});
}
private
List
<
Integer
>
countNumByBizTypeAndEquList
(
List
<
EquipmentCategoryDto
>
equipmentCategoryDtos
,
String
bizType
,
List
<
InspectTimeCountDto
>
inspectTimeCountDtos
)
{
List
<
Integer
>
item
=
new
ArrayList
<>();
// 8大类数据统计数量
equipmentCategoryDtos
.
forEach
(
equipmentCategoryDto
->
{
int
num
=
0
;
// 压力容器要去掉气瓶2300,气瓶单独统计
if
(
EQU_LIST_CYLINDER
.
equals
(
equipmentCategoryDto
.
getCode
()))
{
num
=
inspectTimeCountDtos
.
stream
().
filter
(
c
->
c
.
getBizType
().
equals
(
bizType
)
&&
c
.
getEquList
().
equals
(
equipmentCategoryDto
.
getCode
())
&&
!
EQU_CATEGORY_CYLINDER
.
equals
(
c
.
getEquCategory
())).
mapToInt
(
InspectTimeCountDto:
:
getNum
).
sum
();
}
else
{
num
=
inspectTimeCountDtos
.
stream
().
filter
(
c
->
c
.
getBizType
().
equals
(
bizType
)
&&
c
.
getEquList
().
equals
(
equipmentCategoryDto
.
getCode
())).
mapToInt
(
InspectTimeCountDto:
:
getNum
).
sum
();
}
item
.
add
(
num
);
});
// 再增加气瓶(设备类别2300)专项
int
num
=
inspectTimeCountDtos
.
stream
().
filter
(
c
->
c
.
getBizType
().
equals
(
bizType
)
&&
EQU_CATEGORY_CYLINDER
.
equals
(
c
.
getEquCategory
())).
mapToInt
(
InspectTimeCountDto:
:
getNum
).
sum
();
item
.
add
(
num
);
return
item
;
}
private
List
<
String
>
getXData
(
List
<
EquipmentCategoryDto
>
equipmentCategoryDtos
)
{
// 8大类 + 气瓶 注意数据顺序和要和这个x轴一致
List
<
String
>
names
=
equipmentCategoryDtos
.
stream
().
map
(
EquipmentCategoryDto:
:
getName
).
collect
(
Collectors
.
toList
());
names
.
add
(
"气瓶"
);
return
names
;
}
private
List
<
BizTypeEnum
>
getBizTypeList
()
{
return
Arrays
.
asList
(
BizTypeEnum
.
FIRST_INSPECTION
,
BizTypeEnum
.
SUPERVISE
,
BizTypeEnum
.
DETECTION
);
}
private
List
<
String
>
getLegendData
(
List
<
BizTypeEnum
>
bizTypeEnums
)
{
return
bizTypeEnums
.
stream
().
map
(
BizTypeEnum:
:
getName
).
collect
(
Collectors
.
toList
());
}
private
void
setDefaultFilter
(
DPFilterParamDto
dpFilterParamDto
)
{
if
(
StringUtils
.
isEmpty
(
dpFilterParamDto
.
getBeginDate
()))
{
dpFilterParamDto
.
setBeginDate
(
DateUtil
.
lastMonth
().
toDateStr
());
}
if
(
StringUtils
.
isEmpty
(
dpFilterParamDto
.
getEndDate
()))
{
dpFilterParamDto
.
setEndDate
(
DateUtil
.
today
());
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment