From b51035f9b991bb08f8afd6fa60e04e548da9a74e Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 14 八月 2023 17:57:29 +0800
Subject: [PATCH] 新增员工绩效\工资报表导出接口
---
server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java | 10 +++++
server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java | 11 +++++
server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java | 5 ++
server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java | 4 ++
server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java | 2
server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java | 13 ++++++
log/eva.log | 0
server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java | 6 +++
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java | 29 ++++++++++++++
server/src/main/resources/mappers/WorkorderRecordExtMapper.xml | 38 ++++++++++++++-----
10 files changed, 105 insertions(+), 13 deletions(-)
diff --git a/log/eva.log b/log/eva.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/log/eva.log
diff --git a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
index 071ff92..1c7d59d 100644
--- a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
@@ -175,6 +175,16 @@
public void exportExcel (@RequestBody PageWrap<QueryWorkorderRecordExtDTO> pageWrap, HttpServletResponse response) {
workorderRecordExtService.exportExcel(pageWrap,response);
}
+ @ApiOperation("瀵煎嚭鍛樺伐缁╂晥鏄庣粏")
+ @PostMapping("/exportUserSalary")
+ public void exportUserSalary (@RequestBody PageWrap<QueryUserSalaryListDTO> pageWrap, HttpServletResponse response) {
+ workorderRecordExtService.exportUserSalary(pageWrap,response);
+ }
+ @ApiOperation("瀵煎嚭宸ヨ祫鎶ヨ〃")
+ @PostMapping("/exportSalaryStatistics")
+ public void exportSalaryStatistics (@RequestBody PageWrap<QuerySalaryStatisticDTO> pageWrap, HttpServletResponse response) {
+ workorderRecordExtService.exportSalaryStatistics(pageWrap,response);
+ }
@ApiOperation("鏍规嵁ID鏌ヨ")
@GetMapping("/{id}")
diff --git a/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java b/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
index ea33fb8..010996c 100644
--- a/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
+++ b/server/src/main/java/doumeemes/core/annotation/excel/ExcelExporter.java
@@ -2,6 +2,8 @@
import doumeemes.core.constants.ResponseStatus;
import doumeemes.core.exception.BusinessException;
+import doumeemes.dao.ext.vo.UserBaseInfoVO;
+import doumeemes.dao.ext.vo.UserSalaryListVO;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.apache.commons.lang3.BooleanUtils;
@@ -170,6 +172,10 @@
return new ArrayList<>(sortedFields.values());
}
+ public static void main(String[] args) {
+ ExcelExporter m = new ExcelExporter();
+ ExcelExporter.build(UserSalaryListVO.class).getColumns();
+ }
/**
* 閰嶇疆鏁版嵁鍗曞厓鏍�
*/
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java
index ef5771d..63e0adb 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java
@@ -22,7 +22,7 @@
private Integer rootDepartId;
@ApiModelProperty(value = "寮�濮嬫椂闂�")
@JsonFormat(pattern = "yyyy-MM-dd")
- private Date stateDate;
+ private Date startDate;
@ApiModelProperty(value = "缁撴潫鏃堕棿")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate;
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java
index 93e9397..049cf7d 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java
@@ -1,6 +1,7 @@
package doumeemes.dao.ext.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
+import doumeemes.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -21,11 +22,13 @@
private Integer procedureId;
@ApiModelProperty(value = "鐗╂枡缂栫爜", example = "1")
private Integer materialId;
+ @ApiModelProperty(value = "鐗╂枡鍚嶇О鎴栫墿鏂檆ode缂栫爜" )
+ private String materialName;
@ApiModelProperty(value = "鏍圭粍缁囩紪鐮�", example = "1",hidden = true)
private Integer rootDepartId;
@ApiModelProperty(value = "寮�濮嬫椂闂�")
@JsonFormat(pattern = "yyyy-MM-dd")
- private Date stateDate;
+ private Date startDate;
@ApiModelProperty(value = "缁撴潫鏃堕棿")
@JsonFormat(pattern = "yyyy-MM-dd")
private Date endDate;
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
index f00415d..792ddfb 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
@@ -23,6 +23,17 @@
private Integer userId;
@ApiModelProperty(value = "鐢熸垚浜哄憳淇℃伅")
private UserBaseInfoVO userInfo;
+
+ @ApiModelProperty(value = "鐢熶骇浜哄憳濮撳悕",hidden = true)
+ @ExcelColumn(name="鐢熶骇浜哄憳濮撳悕")
+ private String userName;
+ @ApiModelProperty(value = "鎵�灞為儴闂ㄧ紪鐮�", example = "1",hidden = true)
+ @ExcelColumn(name="鎵�灞為儴闂ㄧ紪鐮�")
+ private Integer departId;
+
+ @ApiModelProperty(value = "鎵�灞為儴闂ㄥ悕绉�",hidden = true)
+ @ExcelColumn(name="鎵�灞為儴闂ㄥ悕绉�")
+ private String departName;
@ApiModelProperty(value = "璁′欢宸ヨ祫锛堝垎锛�", example = "1")
@ExcelColumn(name="璁′欢宸ヨ祫锛堝垎锛�")
private BigDecimal jijianSalary;
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java
index 71bc585..7e44571 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java
@@ -22,9 +22,22 @@
@ApiModelProperty(value = "鐢熸垚浜哄憳淇℃伅")
private UserBaseInfoVO userInfo;
+ @ApiModelProperty(value = "鐢熶骇浜哄憳濮撳悕",hidden = true)
+ @ExcelColumn(name="鐢熶骇浜哄憳濮撳悕")
+ private String userName;
+ @ApiModelProperty(value = "鎵�灞為儴闂ㄧ紪鐮�", example = "1",hidden = true)
+ @ExcelColumn(name="鎵�灞為儴闂ㄧ紪鐮�")
+ private Integer departId;
+
+ @ApiModelProperty(value = "鎵�灞為儴闂ㄥ悕绉�",hidden = true)
+ @ExcelColumn(name="鎵�灞為儴闂ㄥ悕绉�")
+ private String departName;
@ApiModelProperty(value = "鐗╂枡缂栫爜", example = "1")
@ExcelColumn(name="鐗╂枡缂栫爜")
private String materialCode;
+ @ApiModelProperty(value = "鐗╂枡鍚嶇О", example = "1")
+ @ExcelColumn(name="鐗╂枡鍚嶇О")
+ private String materialName;
@ApiModelProperty(value = "鐗╂枡涓婚敭", example = "1")
@ExcelColumn(name="鐗╂枡涓婚敭")
private Integer materialId;
diff --git a/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java b/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
index 7620570..5fe02b9 100644
--- a/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
+++ b/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
@@ -52,4 +52,8 @@
PageData<SalaryStatisticsListVO> salaryStatistic(PageWrap<QuerySalaryStatisticDTO> pageWrap);
PageData<UserSalaryListVO> userSalaryPage(PageWrap<QueryUserSalaryListDTO> pageWrap);
+
+ void exportUserSalary(PageWrap<QueryUserSalaryListDTO> pageWrap, HttpServletResponse response);
+
+ void exportSalaryStatistics(PageWrap<QuerySalaryStatisticDTO> pageWrap, HttpServletResponse response);
}
diff --git a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
index 6b36bd8..c200c20 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
@@ -173,13 +173,16 @@
PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
//鏁版嵁鏉冮檺
- List<Integer> dataPermission = user.getDepartPermissionList();
+// List<Integer> dataPermission = user.getDepartPermissionList();
List<UserSalaryListVO> result = workorderRecordExtMapper.userSalaryPage(pageWrap.getModel());
if(result!=null){
List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
for(UserSalaryListVO model : result){
//鏌ヨ鐢熶骇浜哄憳濮撳悕
model.setUserInfo(initProUser(user,model.getUserId(),allDepartList));
+ if(Constants.formatBigdecimal4Float(model.getNum()).compareTo(new BigDecimal(0))>1){
+ model.setRate(Constants.formatBigdecimal4Float(model.getQualifiedNum()).divide(model.getNum()).multiply(new BigDecimal(100)));
+ }
}
}
return PageData.from(new PageInfo<>(result));
@@ -1670,6 +1673,30 @@
@Override
+ public void exportUserSalary(PageWrap<QueryUserSalaryListDTO> pageWrap, HttpServletResponse response) {
+ List<UserSalaryListVO> result=this.userSalaryPage(pageWrap).getRecords();
+ for(UserSalaryListVO model : result) {
+ if(model.getUserInfo()!=null){
+ model.setUserName(model.getUserInfo().getUserName());
+ model.setDepartName(model.getUserInfo().getDepartName());
+ }
+ }
+ ExcelExporter.build(UserSalaryListVO.class).export(result, "鍛樺伐缁╂晥鏄庣粏"+System.currentTimeMillis(), response);
+
+ }
+ @Override
+ public void exportSalaryStatistics(PageWrap<QuerySalaryStatisticDTO> pageWrap, HttpServletResponse response){
+ List<SalaryStatisticsListVO> result=this.salaryStatistic(pageWrap).getRecords();
+ for(SalaryStatisticsListVO model : result) {
+ if(model.getUserInfo()!=null){
+ model.setUserName(model.getUserInfo().getUserName());
+ model.setDepartName(model.getUserInfo().getDepartName());
+ }
+ }
+ ExcelExporter.build(SalaryStatisticsListVO.class).export(result, "宸ヨ祫鎶ヨ〃"+System.currentTimeMillis(), response);
+
+ }
+ @Override
public void exportExcel(PageWrap<QueryWorkorderRecordExtDTO> pageWrap, HttpServletResponse response) {
List<WorkorderRecordExtListVO> result=this.findPage(pageWrap).getRecords();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
diff --git a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
index 3f53846..c8fb3d7 100644
--- a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
+++ b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
@@ -432,29 +432,41 @@
limit 1
</select>
<select id="userSalaryPage" parameterType="doumeemes.dao.ext.dto.QueryUserSalaryListDTO" resultType="doumeemes.dao.ext.vo.UserSalaryListVO">
-
select a.WORKORDER_ID,b.`CODE` as workorderCode,c.`NAME` as materialName,c.code as materialCode
- ,d.name as unitName,a.PROCEDURE_ID,f.`NAME` as procedureName
- ,sum(CASE WHEN a.DONE_TYPE=0 THEN a.num ELSE 0 END ) as qualifiedNum
- ,sum(CASE WHEN a.DONE_TYPE=0 THEN 0 ELSE a.num END ) as unQualifiedNum
+ ,d.name as unitName,a.PROCEDURE_ID,f.`NAME` as procedureName,a.CREATE_USER as userId
+ ,sum(a.QUALIFIED_NUM) as qualifiedNum
+ ,sum(a.UNQUALIFIED_NUM) as unQualifiedNum
,sum(a.num) as NUM
from `workorder_record` a
left join workorder b on a.WORKORDER_ID=b.id
- left join material c on b.MATERIAL_ID = c.ID
- left join unit_distribute d on a.UNIT_ID = d.ID
+ left join material_distribute m on b.MATERIAL_ID = m.ID
+ left join material c on m.MATERIAL_ID = c.ID
+ left join unit d on a.UNIT_ID = d.ID
left join procedures f on a.PROCEDURE_ID =f.ID
where a.DELETED = 0
<if test="rootDepartId != null">
- AND `ROOT_DEPART_ID` = #{rootDepartId}
+ AND a.`ROOT_DEPART_ID` = #{rootDepartId}
+ </if>
+ <if test="procedureId != null">
+ AND a.`PROCEDURE_ID` = #{procedureId}
+ </if>
+ <if test="materialName != null and materialName !=''">
+ AND (c.`name` like concat('%', #{materialName},'%') or c.`code` like concat('%', #{materialName},'%'))
+ </if>
+ <if test="startDate != null">
+ AND a.`CREATE_TIME` >= #{startDate}
+ </if>
+ <if test="endDate != null">
+ AND #{endDate} >= a.`CREATE_TIME`
</if>
<if test="userId != null">
- AND `CREATE_USER` = #{userId}
+ AND a.`CREATE_USER` = #{userId}
</if>
group by a.`WORKORDER_ID`
- <!--order by a.`CREATE_TIME` desc-->
+ order by a.CREATE_TIME desc
</select>
<select id="salaryStatistic" parameterType="doumeemes.dao.ext.dto.QuerySalaryStatisticDTO" resultType="doumeemes.dao.ext.vo.SalaryStatisticsListVO">
- select `CREATE_USER` ,sum(CASE WHEN salary_type=0 THEN salary ELSE 0 END ) as jijiaSalry
+ select `CREATE_USER` as userId ,sum(CASE WHEN salary_type=0 THEN salary ELSE 0 END ) as jijianSalary
,sum(CASE WHEN salary_type=0 THEN 0 ELSE salary END ) as jishiSalary
,count(id) as num
,sum(salary) as totalSalary
@@ -466,6 +478,12 @@
<if test="userId != null">
AND `CREATE_USER` = #{userId}
</if>
+ <if test="startDate != null">
+ AND a.`CREATE_TIME` >= #{startDate}
+ </if>
+ <if test="endDate != null">
+ AND #{endDate} >= a.`CREATE_TIME`
+ </if>
group by `CREATE_USER`
<!-- order by `CREATE_TIME` desc-->
</select>
--
Gitblit v1.9.3