Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
patzn-cloud-service-hmhj
Overview
Overview
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
wangweidong
patzn-cloud-service-hmhj
Commits
dfcbb9b1
Commit
dfcbb9b1
authored
Jul 13, 2021
by
lijingjing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加满意度调查相关查询和数据统计;
parent
3404cf37
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
360 additions
and
0 deletions
+360
-0
QuestionnaireController.java
...service/lims/hmhj/controller/QuestionnaireController.java
+101
-0
QuestionnaireMapper.java
...n/cloud/service/lims/hmhj/mapper/QuestionnaireMapper.java
+19
-0
IQuestionnaireService.java
...loud/service/lims/hmhj/service/IQuestionnaireService.java
+33
-0
QuestionnaireServiceImpl.java
...vice/lims/hmhj/service/impl/QuestionnaireServiceImpl.java
+207
-0
No files found.
src/main/java/com/patzn/cloud/service/lims/hmhj/controller/QuestionnaireController.java
0 → 100644
View file @
dfcbb9b1
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
controller
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.patzn.cloud.commons.api.RestConstants
;
import
com.patzn.cloud.commons.api.RestResult
;
import
com.patzn.cloud.commons.controller.ServiceController
;
import
com.patzn.cloud.service.hmhj.entity.Questionnaire
;
import
com.patzn.cloud.service.hmhj.vo.QuestionnaireVO
;
import
com.patzn.cloud.service.lims.hmhj.service.IQuestionnaireService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.*
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
/**
* 满意度调查表 前端控制器
*
* @author meazty
* @since 2021-07-11
*/
@Api
(
tags
=
"满意度调查表"
)
@RestController
@RequestMapping
(
"/v1/questionnaire"
)
public
class
QuestionnaireController
extends
ServiceController
{
@Autowired
private
IQuestionnaireService
questionnaireService
;
@ApiOperation
(
"分页列表"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_PAGE
,
value
=
"请求数据的页码"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
@ApiImplicitParam
(
name
=
RestConstants
.
PAGE_ROWS
,
value
=
"每页条数"
,
required
=
true
,
paramType
=
"query"
,
dataTypeClass
=
Integer
.
class
),
})
@PostMapping
(
"/page"
)
public
RestResult
<
Page
<
Questionnaire
>>
getPage
(
QuestionnaireVO
questionnaire
)
{
return
success
(
questionnaireService
.
page
(
getPage
(),
questionnaire
));
}
@ApiOperation
(
"查询 id 信息"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"主键"
,
required
=
true
,
paramType
=
"path"
,
dataTypeClass
=
Long
.
class
),
})
@GetMapping
(
"/{id}"
)
public
RestResult
<
Questionnaire
>
get
(
@PathVariable
(
"id"
)
Long
id
)
{
return
success
(
questionnaireService
.
getById
(
id
));
}
@ApiOperation
(
"根据 id 修改信息"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"主键"
,
required
=
true
,
paramType
=
"path"
,
dataTypeClass
=
Long
.
class
),
})
@PutMapping
(
"/{id}"
)
public
RestResult
<
Boolean
>
edit
(
@PathVariable
(
"id"
)
Long
id
,
Questionnaire
questionnaire
)
{
questionnaire
.
setId
(
id
);
return
success
(
questionnaireService
.
updateById
(
questionnaire
));
}
@ApiOperation
(
"添加"
)
@PostMapping
(
"/"
)
public
RestResult
<
Boolean
>
add
(
Questionnaire
questionnaire
)
{
return
success
(
questionnaireService
.
save
(
questionnaire
));
}
@ApiOperation
(
"添加或修改调查表"
)
@PostMapping
(
"/addOrUpdate"
)
public
RestResult
<
Boolean
>
addQuestionnaire
(
Questionnaire
questionnaire
)
{
return
success
(
questionnaireService
.
saveOrUpdate
(
questionnaire
,
getAccount
()));
}
@ApiOperation
(
"根据 ids 删除"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"ids"
,
value
=
"主键列表"
,
required
=
true
,
paramType
=
"query"
,
allowMultiple
=
true
,
dataTypeClass
=
Long
.
class
),
})
@DeleteMapping
(
"/"
)
public
RestResult
<
Boolean
>
delete
(
@RequestParam
(
"ids"
)
List
<
Long
>
ids
)
{
return
success
(
questionnaireService
.
deleteByIds
(
ids
));
}
@ApiOperation
(
"提交满意度调查"
)
@PostMapping
(
"/submit"
)
public
RestResult
<
Boolean
>
submit
(
@RequestParam
(
"id"
)
Long
id
)
{
return
success
(
questionnaireService
.
submitQuestionnaire
(
id
,
getAccount
()));
}
@ApiOperation
(
"导出Excel"
)
@GetMapping
(
"/export"
)
public
void
export
(
@RequestParam
(
"ids"
)
Long
[]
ids
,
HttpServletResponse
response
)
{
questionnaireService
.
exportExcel
(
ids
,
response
,
getAccount
());
}
@ApiOperation
(
"导出统计Excel"
)
@GetMapping
(
"/exportStatusExcel"
)
public
void
exportStatusExcel
(
@RequestParam
(
"ids"
)
Long
[]
ids
,
HttpServletResponse
response
)
{
questionnaireService
.
exportStatusExcel
(
ids
,
response
,
getAccount
());
}
}
src/main/java/com/patzn/cloud/service/lims/hmhj/mapper/QuestionnaireMapper.java
0 → 100644
View file @
dfcbb9b1
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
mapper
;
import
com.patzn.cloud.commons.mapper.BatchMapper
;
import
com.patzn.cloud.service.hmhj.entity.Questionnaire
;
import
com.patzn.cloud.service.hmhj.vo.QuestionnaireStatsVO
;
import
org.apache.ibatis.annotations.Param
;
/**
* <p>
* 满意度调查表 Mapper 接口
* </p>
*
* @author meazty
* @since 2021-07-11
*/
public
interface
QuestionnaireMapper
extends
BatchMapper
<
Questionnaire
>
{
QuestionnaireStatsVO
selectStatsList
(
@Param
(
"ids"
)
Long
[]
ids
);
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/IQuestionnaireService.java
0 → 100644
View file @
dfcbb9b1
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
service
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.patzn.cloud.commons.controller.Account
;
import
com.patzn.cloud.commons.service.IBaseService
;
import
com.patzn.cloud.service.hmhj.entity.Questionnaire
;
import
com.patzn.cloud.service.hmhj.vo.QuestionnaireVO
;
import
javax.servlet.http.HttpServletResponse
;
import
java.util.List
;
/**
* 满意度调查表 服务类
*
* @author meazty
* @since 2021-07-11
*/
public
interface
IQuestionnaireService
extends
IBaseService
<
Questionnaire
>
{
Page
<
Questionnaire
>
page
(
Page
<
Questionnaire
>
page
,
QuestionnaireVO
questionnaireVO
);
boolean
saveOrUpdate
(
Questionnaire
questionnaire
,
Account
account
);
boolean
removeByIds
(
List
<
Long
>
ids
);
boolean
submitQuestionnaire
(
Long
id
,
Account
account
);
void
exportExcel
(
Long
[]
ids
,
HttpServletResponse
response
,
Account
account
);
void
exportStatusExcel
(
Long
[]
ids
,
HttpServletResponse
response
,
Account
account
);
boolean
deleteByIds
(
List
<
Long
>
ids
);
}
src/main/java/com/patzn/cloud/service/lims/hmhj/service/impl/QuestionnaireServiceImpl.java
0 → 100644
View file @
dfcbb9b1
package
com
.
patzn
.
cloud
.
service
.
lims
.
hmhj
.
service
.
impl
;
import
com.baomidou.mybatisplus.mapper.Condition
;
import
com.baomidou.mybatisplus.mapper.EntityWrapper
;
import
com.baomidou.mybatisplus.mapper.Wrapper
;
import
com.baomidou.mybatisplus.plugins.Page
;
import
com.baomidou.mybatisplus.toolkit.ArrayUtils
;
import
com.baomidou.mybatisplus.toolkit.CollectionUtils
;
import
com.baomidou.mybatisplus.toolkit.StringUtils
;
import
com.patzn.cloud.commons.api.RestAssert
;
import
com.patzn.cloud.commons.controller.Account
;
import
com.patzn.cloud.commons.service.impl.BaseServiceImpl
;
import
com.patzn.cloud.commons.toolkit.DateUtils
;
import
com.patzn.cloud.feign.base.client.SysUserClient
;
import
com.patzn.cloud.feign.lims.base.client.LmsBaseDictClient
;
import
com.patzn.cloud.service.base.vo.SysUserOrgVO
;
import
com.patzn.cloud.service.hmhj.entity.Questionnaire
;
import
com.patzn.cloud.service.hmhj.vo.QuestionnaireStatsVO
;
import
com.patzn.cloud.service.hmhj.vo.QuestionnaireVO
;
import
com.patzn.cloud.service.lims.base.entity.LmsBaseDict
;
import
com.patzn.cloud.service.lims.common.service.IExportService
;
import
com.patzn.cloud.service.lims.hmhj.handler.QuestionnaireExportHandler
;
import
com.patzn.cloud.service.lims.hmhj.mapper.QuestionnaireMapper
;
import
com.patzn.cloud.service.lims.hmhj.service.IQuestionnaireService
;
import
org.apache.poi.xssf.usermodel.XSSFRow
;
import
org.apache.poi.xssf.usermodel.XSSFSheet
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
javax.servlet.http.HttpServletResponse
;
import
java.io.UnsupportedEncodingException
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.Date
;
import
java.util.List
;
/**
* 满意度调查表 服务实现类
*
* @author meazty
* @since 2021-07-11
*/
@Service
public
class
QuestionnaireServiceImpl
extends
BaseServiceImpl
<
QuestionnaireMapper
,
Questionnaire
>
implements
IQuestionnaireService
{
private
static
final
String
DICT_TYPE
=
"满意度间隔时间"
;
@Autowired
private
LmsBaseDictClient
lmsBaseDictClient
;
@Autowired
private
SysUserClient
sysUserClient
;
@Autowired
private
IExportService
exportService
;
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
saveOrUpdate
(
Questionnaire
questionnaire
,
Account
account
)
{
calcScore
(
questionnaire
);
List
<
SysUserOrgVO
>
list
=
sysUserClient
.
getUserOrg
(
Arrays
.
asList
(
account
.
getUserId
())).
serviceData
();
SysUserOrgVO
sysUserOrgVO
=
list
.
get
(
0
);
questionnaire
.
setOrgName
(
sysUserOrgVO
.
getOrgName
());
questionnaire
.
setLid
(
account
.
getUserId
());
if
(
null
!=
questionnaire
.
getStatus
()
&&
1
==
questionnaire
.
getStatus
().
intValue
())
{
questionnaire
.
setSubmitTime
(
new
Date
());
questionnaire
.
setCreator
(
account
.
getUserName
());
submitHandler
(
questionnaire
,
account
);
}
if
(
null
==
questionnaire
.
getId
())
{
return
save
(
questionnaire
);
}
return
updateById
(
questionnaire
);
}
@Override
public
Page
<
Questionnaire
>
page
(
Page
<
Questionnaire
>
page
,
QuestionnaireVO
questionnaireVO
)
{
Wrapper
wrapper
=
new
EntityWrapper
<>(
new
Questionnaire
());
if
(
StringUtils
.
isNotEmpty
(
questionnaireVO
.
getCreator
()))
{
wrapper
.
like
(
"creator"
,
questionnaireVO
.
getCreator
());
}
if
(
null
!=
questionnaireVO
.
getTimeS
())
{
wrapper
.
ge
(
"submit_time"
,
questionnaireVO
.
getTimeS
());
}
if
(
null
!=
questionnaireVO
.
getTimeE
())
{
wrapper
.
le
(
"submit_time"
,
questionnaireVO
.
getTimeE
());
}
if
(
null
!=
questionnaireVO
.
getStatus
())
{
wrapper
.
eq
(
"status"
,
questionnaireVO
.
getStatus
());
}
wrapper
.
orderBy
(
"ctime"
,
false
);
return
this
.
page
(
page
,
wrapper
);
}
@Override
public
boolean
removeByIds
(
List
<
Long
>
ids
)
{
return
baseMapper
.
deleteBatchIds
(
ids
)
>
0
;
}
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
public
boolean
submitQuestionnaire
(
Long
id
,
Account
account
)
{
RestAssert
.
fail
(
null
==
id
,
"满意度调查表不能为空"
);
Questionnaire
questionnaire
=
getById
(
id
);
RestAssert
.
fail
(
null
==
questionnaire
,
"满意度调查表不能为空"
);
calcScore
(
questionnaire
);
questionnaire
.
setSubmitTime
(
new
Date
());
submitHandler
(
questionnaire
,
account
);
questionnaire
.
setStatus
(
1
);
questionnaire
.
setCreator
(
account
.
getUserName
());
return
updateById
(
questionnaire
);
}
private
void
submitHandler
(
Questionnaire
questionnaire
,
Account
account
)
{
LmsBaseDict
baseDict
=
lmsBaseDictClient
.
getByType
(
DICT_TYPE
,
account
.
getCompanyId
()).
getData
();
RestAssert
.
fail
(
null
==
baseDict
,
"未配置满意度调查间隔时间,请先配置默认间隔时间"
);
Integer
seqDays
=
Integer
.
parseInt
(
baseDict
.
getCode
());
// 提交时间与当前时间比较,若提交时间满足 + seqDays > new Date(),那么可以继续提交
RestAssert
.
fail
(
DateUtils
.
dateAddDays
(
questionnaire
.
getSubmitTime
(),
seqDays
).
after
(
new
Date
()),
String
.
format
(
"未满 %d 个月,无法继续提交满意度调查表。"
,
seqDays
/
30
));
}
private
void
calcScore
(
Questionnaire
questionnaire
)
{
RestAssert
.
fail
(
null
==
questionnaire
.
getAccuracy
()
||
null
==
questionnaire
.
getClarity
()
||
null
==
questionnaire
.
getCoordination
()
||
null
==
questionnaire
.
getServiceAttitude
()
||
null
==
questionnaire
.
getTimeliness
(),
"满意度调查表分数不能为空"
);
BigDecimal
accuracy
=
questionnaire
.
getAccuracy
();
BigDecimal
clarity
=
questionnaire
.
getClarity
();
BigDecimal
coordination
=
questionnaire
.
getCoordination
();
BigDecimal
serviceAttitude
=
questionnaire
.
getServiceAttitude
();
BigDecimal
timeliness
=
questionnaire
.
getTimeliness
();
BigDecimal
score
=
accuracy
.
add
(
clarity
).
add
(
coordination
).
add
(
serviceAttitude
).
add
(
timeliness
);
questionnaire
.
setScore
(
score
);
}
@Override
public
void
exportExcel
(
Long
[]
ids
,
HttpServletResponse
response
,
Account
account
)
{
RestAssert
.
fail
(
ArrayUtils
.
isEmpty
(
ids
),
"请选择要导出的调查表"
);
List
<
Questionnaire
>
questionnaireList
=
getBatchIds
(
Arrays
.
asList
(
ids
));
RestAssert
.
fail
(
CollectionUtils
.
isEmpty
(
questionnaireList
),
"请选择要导出的调查表"
);
new
QuestionnaireExportHandler
(
questionnaireList
).
generater
(
response
);
}
@Override
public
void
exportStatusExcel
(
Long
[]
ids
,
HttpServletResponse
response
,
Account
account
)
{
RestAssert
.
fail
(
ArrayUtils
.
isEmpty
(
ids
),
"请选择要导出的调查表"
);
QuestionnaireStatsVO
questionnaireVO
=
baseMapper
.
selectStatsList
(
ids
);
RestAssert
.
fail
(
null
==
questionnaireVO
,
"请选择要导出的调查表"
);
XSSFWorkbook
xssfWorkbook
=
exportService
.
getXSSFWorkbook
(
"QuestionnaireStatsExport.xlsx"
);
XSSFSheet
sheet
=
xssfWorkbook
.
getSheetAt
(
0
);
Integer
numTotal
=
questionnaireVO
.
getNumTotal
();
for
(
int
i
=
1
;
i
<
7
;
i
++)
{
XSSFRow
row
=
sheet
.
getRow
(
i
);
double
sumValue
=
0.0
,
avgValue
=
0.0
;
switch
(
i
)
{
case
1
:
sumValue
=
questionnaireVO
.
getFwtdSum
();
avgValue
=
questionnaireVO
.
getFwtdAvg
();
break
;
case
2
:
sumValue
=
questionnaireVO
.
getXtgtSum
();
avgValue
=
questionnaireVO
.
getXtgtAvg
();
break
;
case
3
:
sumValue
=
questionnaireVO
.
getRjsxSum
();
avgValue
=
questionnaireVO
.
getRjsxAvg
();
break
;
case
4
:
sumValue
=
questionnaireVO
.
getRzqxSum
();
avgValue
=
questionnaireVO
.
getRzqxAvg
();
break
;
case
5
:
sumValue
=
questionnaireVO
.
getQxzjSum
();
avgValue
=
questionnaireVO
.
getQxzjAvg
();
break
;
case
6
:
sumValue
=
questionnaireVO
.
getSumTotal
();
avgValue
=
questionnaireVO
.
getAvgTotal
();
break
;
}
row
.
getCell
(
1
).
setCellValue
(
sumValue
);
row
.
getCell
(
2
).
setCellValue
(
numTotal
);
row
.
getCell
(
3
).
setCellValue
(
avgValue
);
}
String
fileName
=
null
;
try
{
fileName
=
java
.
net
.
URLEncoder
.
encode
(
"客户满意度调查表"
,
"UTF-8"
);
}
catch
(
UnsupportedEncodingException
e
)
{
fileName
=
"questionnaireExcel"
;
}
exportService
.
downloadXlsx
(
response
,
fileName
+
".xlsx"
,
xssfWorkbook
);
}
@Override
public
boolean
deleteByIds
(
List
<
Long
>
ids
)
{
List
list
=
list
(
Condition
.
create
().
in
(
"id"
,
ids
).
eq
(
"status"
,
1
).
eq
(
"deleted"
,
0
));
RestAssert
.
fail
(
CollectionUtils
.
isNotEmpty
(
list
),
"已提交的调查表不能删除!"
);
return
removeByIds
(
ids
);
}
}
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