From 28dbf0501428eba7ff733c5d7687e11171319db0 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 14 八月 2023 12:00:07 +0800
Subject: [PATCH] 新增工资报表统计分页查询接口
---
server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java | 8 ++
server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java | 49 ++++++++++++
server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java | 3
server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderRecordExtDTO.java | 5
server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java | 3
server/src/main/java/doumeemes/dao/business/model/Workorder.java | 8 +
server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java | 33 ++++++++
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java | 51 ++++++++++++
server/src/main/resources/mappers/WorkorderRecordExtMapper.xml | 18 ++++
server/src/main/java/doumeemes/dao/business/model/SalaryParam.java | 5 +
server/src/main/java/doumeemes/dao/ext/vo/WorkorderRecordExtListVO.java | 7 +
11 files changed, 182 insertions(+), 8 deletions(-)
diff --git a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
index c18ad2f..305e561 100644
--- a/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
+++ b/server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
@@ -14,7 +14,9 @@
import doumeemes.dao.business.model.WorkorderRecord;
import doumeemes.dao.ext.bean.EndCheckApBean;
import doumeemes.dao.ext.beanDto.QueryWStockDto;
+import doumeemes.dao.ext.dto.QuerySalaryStatisticDTO;
import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO;
+import doumeemes.dao.ext.vo.SalaryStatisticsListVO;
import doumeemes.dao.ext.vo.WStockExtListForWorkorderVO;
import doumeemes.dao.ext.vo.WStockExtListVO;
import doumeemes.dao.ext.vo.WorkorderRecordExtListVO;
@@ -140,6 +142,12 @@
public ApiResponse<PageData<WorkorderRecordExtListVO>> findPage (@RequestBody PageWrap<QueryWorkorderRecordExtDTO> pageWrap) {
return ApiResponse.success(workorderRecordExtService.findPage(pageWrap));
}
+ @ApiOperation("宸ヨ祫鎶ヨ〃缁熻鍒嗛〉鏌ヨ")
+ @PostMapping("/salaryStatistic")
+ @RequiresPermissions("ext:workorderrecordext:query")
+ public ApiResponse<PageData<SalaryStatisticsListVO>> salaryStatistic (@RequestBody PageWrap<QuerySalaryStatisticDTO> pageWrap) {
+ return ApiResponse.success(workorderRecordExtService.salaryStatistic(pageWrap));
+ }
@ApiOperation("鏌ヨ鍏ㄩ儴")
@PostMapping("/all")
diff --git a/server/src/main/java/doumeemes/dao/business/model/SalaryParam.java b/server/src/main/java/doumeemes/dao/business/model/SalaryParam.java
index e686ebc..32a4fec 100644
--- a/server/src/main/java/doumeemes/dao/business/model/SalaryParam.java
+++ b/server/src/main/java/doumeemes/dao/business/model/SalaryParam.java
@@ -66,9 +66,12 @@
@ExcelColumn(name="bom缂栫爜锛堝叧鑱攂om琛級")
private Integer bomId;
+ @ApiModelProperty(value = "宸ヨ祫缁撴灉锛堝厓)", example = "1")
+ @ExcelColumn(name="宸ヨ祫缁撴灉锛堝厓)")
+ private Integer salary;
@ApiModelProperty(value = "宸ヨ祫鍗曚环锛堝厓)", example = "1")
@ExcelColumn(name="宸ヨ祫鍗曚环锛堝厓)")
- private Integer salary;
+ private Integer salaryPrice;
@ApiModelProperty(value = "鏍囧噯鏁伴噺", example = "1")
@ExcelColumn(name="鏍囧噯鏁伴噺")
diff --git a/server/src/main/java/doumeemes/dao/business/model/Workorder.java b/server/src/main/java/doumeemes/dao/business/model/Workorder.java
index 7967078..a9f914a 100644
--- a/server/src/main/java/doumeemes/dao/business/model/Workorder.java
+++ b/server/src/main/java/doumeemes/dao/business/model/Workorder.java
@@ -230,10 +230,12 @@
@ExcelColumn(name="鎶ュ伐鏃堕暱锛堢锛�")
private Integer duration;
- @ApiModelProperty(value = "宸ヨ祫鍗曚环锛堝垎)", example = "1")
- @ExcelColumn(name="宸ヨ祫鍗曚环锛堝垎)")
+ @ApiModelProperty(value = "宸ヨ祫缁撴灉锛堝厓)", example = "1")
+ @ExcelColumn(name="宸ヨ祫缁撴灉锛堝厓)")
private Integer salary;
-
+ @ApiModelProperty(value = "宸ヨ祫鍗曚环锛堝厓)", example = "1")
+ @ExcelColumn(name="宸ヨ祫鍗曚环锛堝厓)")
+ private Integer salaryPrice;
@ApiModelProperty(value = "鏍囧噯鏁伴噺", example = "1")
@ExcelColumn(name="鏍囧噯鏁伴噺")
private Integer salaryNum;
diff --git a/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java b/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
index 1916a9a..a892a10 100644
--- a/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
+++ b/server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
@@ -2,6 +2,8 @@
import doumeemes.dao.business.model.WorkorderRecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import doumeemes.dao.ext.dto.QuerySalaryStatisticDTO;
+import doumeemes.dao.ext.vo.SalaryStatisticsListVO;
import doumeemes.dao.ext.vo.WOutboundRecordExtListVO;
import doumeemes.dao.ext.vo.WStockExtListForWorkorderVO;
import doumeemes.dao.ext.vo.WorkorderRecordExtListVO;
@@ -18,6 +20,7 @@
* @date 2022/04/20 10:56
*/
List<WorkorderRecordExtListVO> selectListNew(QueryWorkorderRecordExtDTO dto);
+ List<SalaryStatisticsListVO> salaryStatistic(QuerySalaryStatisticDTO dto);
List<WStockExtListForWorkorderVO> choiceWorkorderRecordUseStockList(QueryWorkorderRecordExtDTO dto);
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java
new file mode 100644
index 0000000..ef5771d
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QuerySalaryStatisticDTO.java
@@ -0,0 +1,33 @@
+package doumeemes.dao.ext.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import doumeemes.dao.business.dto.MaterialListDTO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2022/04/20 10:56
+ */
+@Data
+@ApiModel("宸ヨ祫鎶ヨ〃缁熻鍒嗛〉鏌ヨ璇锋眰鍙傛暟")
+public class QuerySalaryStatisticDTO {
+ @ApiModelProperty(value = "鐢熶骇浜哄憳缂栫爜", example = "1")
+ private Integer userId;
+ @ApiModelProperty(value = "鏍圭粍缁囩紪鐮�", example = "1",hidden = true)
+ private Integer rootDepartId;
+ @ApiModelProperty(value = "寮�濮嬫椂闂�")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date stateDate;
+ @ApiModelProperty(value = "缁撴潫鏃堕棿")
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date endDate;
+
+ @ApiModelProperty(value = "鏁版嵁鏉冮檺閮ㄩ棬缂栫爜闆嗗悎" ,hidden = true)
+ private List<Integer> departIds;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderRecordExtDTO.java b/server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderRecordExtDTO.java
index 686a2e3..fd16f61 100644
--- a/server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderRecordExtDTO.java
+++ b/server/src/main/java/doumeemes/dao/ext/dto/QueryWorkorderRecordExtDTO.java
@@ -644,9 +644,10 @@
@ApiModelProperty(value = "鎶ュ伐鏃堕暱锛堢锛�", example = "1")
private Integer duration;
- @ApiModelProperty(value = "宸ヨ祫鍗曚环锛堝垎)", example = "1")
+ @ApiModelProperty(value = "宸ヨ祫缁撴灉锛堝厓)", example = "1")
private Integer salary;
-
+ @ApiModelProperty(value = "宸ヨ祫鍗曚环锛堝厓)", example = "1")
+ private Integer salaryPrice;
@ApiModelProperty(value = "鏍囧噯鏁伴噺", example = "1")
private Integer salaryNum;
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
new file mode 100644
index 0000000..c7bc2ed
--- /dev/null
+++ b/server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
@@ -0,0 +1,49 @@
+package doumeemes.dao.ext.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import doumeemes.core.annotation.excel.ExcelColumn;
+import doumeemes.dao.business.model.*;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2022/04/20 10:56
+ */
+@Data
+@ApiModel("宸ヨ祫鎶ヨ〃缁熻鍒嗛〉鏁版嵁")
+public class SalaryStatisticsListVO implements Serializable{
+
+ @ApiModelProperty(value = "鐢熶骇浜哄憳缂栫爜", example = "1")
+ @ExcelColumn(name="鐢熶骇浜哄憳缂栫爜")
+ private Integer userId;
+ @ApiModelProperty(value = "鐢熶骇浜哄憳濮撳悕")
+ @ExcelColumn(name="鐢熶骇浜哄憳濮撳悕")
+ private String userName;
+ @ApiModelProperty(value = "鎵�灞為儴闂ㄧ紪鐮�", example = "1")
+ @ExcelColumn(name="鎵�灞為儴闂ㄧ紪鐮�")
+ private Integer departId;
+
+ @ApiModelProperty(value = "鎵�灞為儴闂ㄥ悕绉�")
+ @ExcelColumn(name="鎵�灞為儴闂ㄥ悕绉�")
+ private String departName;
+
+ @ApiModelProperty(value = "璁′欢宸ヨ祫锛堝垎锛�", example = "1")
+ @ExcelColumn(name="璁′欢宸ヨ祫锛堝垎锛�")
+ private BigDecimal jijianSalary;
+ @ApiModelProperty(value = "璁℃椂宸ヨ祫锛堝垎锛�", example = "1")
+ @ExcelColumn(name="璁℃椂宸ヨ祫锛堝垎锛�")
+ private BigDecimal jishiSalary;
+ @ApiModelProperty(value = "灏忚宸ヨ祫锛堝垎锛�", example = "1")
+ @ExcelColumn(name="灏忚宸ヨ祫锛堝垎锛�")
+ private BigDecimal totalSalary;
+ @ApiModelProperty(value = "鎶ュ伐鎬诲崟鏁�,涓嶅寘鍚伐璧勪负0鐨�", example = "1")
+ @ExcelColumn(name="鎶ュ伐鎬诲崟鏁�")
+ private Integer num;
+
+}
diff --git a/server/src/main/java/doumeemes/dao/ext/vo/WorkorderRecordExtListVO.java b/server/src/main/java/doumeemes/dao/ext/vo/WorkorderRecordExtListVO.java
index 8036ce9..0a1061e 100644
--- a/server/src/main/java/doumeemes/dao/ext/vo/WorkorderRecordExtListVO.java
+++ b/server/src/main/java/doumeemes/dao/ext/vo/WorkorderRecordExtListVO.java
@@ -230,9 +230,12 @@
@ExcelColumn(name="鎶ュ伐鏃堕暱锛堢锛�")
private Integer duration;
- @ApiModelProperty(value = "宸ヨ祫鍗曚环锛堝垎)", example = "1")
- @ExcelColumn(name="宸ヨ祫鍗曚环锛堝垎)")
+ @ApiModelProperty(value = "宸ヨ祫缁撴灉锛堝厓)", example = "1")
+ @ExcelColumn(name="宸ヨ祫缁撴灉锛堝厓)")
private Integer salary;
+ @ApiModelProperty(value = "宸ヨ祫鍗曚环锛堝厓)", example = "1")
+ @ExcelColumn(name="宸ヨ祫鍗曚环锛堝厓)")
+ private Integer salaryPrice;
@ApiModelProperty(value = "鏍囧噯鏁伴噺", example = "1")
@ExcelColumn(name="鏍囧噯鏁伴噺")
diff --git a/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java b/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
index 6992d45..c1f4d46 100644
--- a/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
+++ b/server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
@@ -6,7 +6,9 @@
import doumeemes.dao.business.model.Workorder;
import doumeemes.dao.business.model.WorkorderRecord;
import doumeemes.dao.ext.bean.EndCheckApBean;
+import doumeemes.dao.ext.dto.QuerySalaryStatisticDTO;
import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO;
+import doumeemes.dao.ext.vo.SalaryStatisticsListVO;
import doumeemes.dao.ext.vo.WorkorderRecordExtListVO;
import javax.servlet.http.HttpServletResponse;
@@ -45,4 +47,5 @@
void exportExcel(PageWrap<QueryWorkorderRecordExtDTO> pageWrap ,HttpServletResponse response);
+ PageData<SalaryStatisticsListVO> salaryStatistic(PageWrap<QuerySalaryStatisticDTO> pageWrap);
}
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 0cdce35..e121285 100644
--- a/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
@@ -141,6 +141,42 @@
}
return PageData.from(new PageInfo<>(result));
}
+ @Override
+ public PageData<SalaryStatisticsListVO> salaryStatistic(PageWrap<QuerySalaryStatisticDTO> pageWrap) {
+ LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+ if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎮ㄦ棤鏉冮檺杩涜璇ユ搷浣滐紒");
+ }
+ //鍙兘鏌ョ湅褰撳墠鏍圭粍缁囩殑鏁版嵁
+ pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
+ pageWrap.getModel().setRootDepartId(user.getRootDepartment().getId());
+ PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity());
+
+ //鏁版嵁鏉冮檺
+ List<Integer> dataPermission = user.getDepartPermissionList();
+ if(dataPermission!=null){
+// pageWrap.getModel().setUserId(user.getId());
+// pageWrap.getModel().setDepartIds(dataPermission);
+ /*if(dataPermission.size() == 0){
+ //鍙兘鐪嬭嚜宸辩殑(鐢熶骇浜哄憳淇℃伅锛�
+ // pageWrap.getModel().setProUserId(user.getId());
+ //闇�姹傚彉鏇� 鏌ョ湅鏁版嵁鏉冮檺鑼冨洿鍐呯殑鏁版嵁锛堣蛋鍒涘缓浜烘垨鑰呯敓浜т汉鍛樹负鎴戞暟鎹潈闄愯寖鍥村唴锛夛紱
+ pageWrap.getModel().setCreateUser(user.getId());
+ }else{
+ //鍚﹀垯璧版暟鎹潈闄�
+ pageWrap.getModel().setDepartIds(dataPermission);
+ }*/
+ }
+ List<SalaryStatisticsListVO> result = workorderRecordExtMapper.salaryStatistic(pageWrap.getModel());
+ if(result!=null){
+ List<DepartmentExtListVO> allDepartList = RedisUtil.getObject(redisTemplate,Constants.RedisKeys.COM_DEPART_LIST_KEY+user.getCompany().getId(),ArrayList.class);
+ for(SalaryStatisticsListVO model : result){
+ //鏌ヨ鐢熶骇浜哄憳濮撳悕
+ initProUser(user,model,allDepartList);
+ }
+ }
+ return PageData.from(new PageInfo<>(result));
+ }
private void initProUser(LoginUserInfo user, WorkorderRecordExtListVO data, List<DepartmentExtListVO> allDepartList) {
if(data.getCreateUser() ==null){
@@ -157,6 +193,21 @@
data.setProcedureName(comp.getName()+"-"+dName);
}
}
+ private void initProUser(LoginUserInfo user, SalaryStatisticsListVO data, List<DepartmentExtListVO> allDepartList) {
+ if(data.getUserId() ==null){
+ return;
+ }
+ CompanyUser query=new CompanyUser();
+ query.setUserId(data.getUserId());
+ query.setRootDepartId(user.getRootDepartment().getId());
+ query.setDeleted(Constants.ZERO);
+ CompanyUser comp= companyUserExtMapper.selectOne(new QueryWrapper<>(query).last(" limit 1"));
+ if(comp!=null){
+ DepartmentExtListVO d = departmentExtService.getModelById(user.getCompany().getId(),comp.getDepartmentId(),allDepartList);
+ String dName =d==null?"":StringUtils.defaultString(d.getName(),"");
+ data.setUserName(comp.getName()+"-"+dName);
+ }
+ }
@Override
public List<WorkorderRecordExtListVO> findAll(QueryWorkorderRecordExtDTO pageWrap) {
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
diff --git a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
index 1d8fd97..8989776 100644
--- a/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
+++ b/server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
@@ -431,6 +431,22 @@
</where>
limit 1
</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
+ ,sum(CASE WHEN salary_type=0 THEN 0 ELSE salary END ) as jishiSalary
+ ,count(id) as num
+ ,sum(salary) as totalSalary
+ from `workorder_record`
+ where `DELETED` =0 and `SALARY` >0
+ <if test="rootDepartId != null">
+ AND `ROOT_DEPART_ID` = #{rootDepartId}
+ </if>
+ <if test="userId != null">
+ AND `CREATE_USER` = #{userId}
+ </if>
+ group by `CREATE_USER`
+
+ </select>
<select id="selectListNew" parameterType="doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO" resultMap="WorkorderRecordExtListVO">
SELECT
`a`.`ID`,
@@ -1427,6 +1443,7 @@
RELOBJ_TYPE,
`DURATION`,
`SALARY`,
+ `SALARY_PRICE`,
`SALARY_NUM`,
`SALARY_TIMES`,
`SALARY_UNQUALIFIED`,
@@ -1471,6 +1488,7 @@
#{item.relobjType},
#{item.duration},
#{item.salary},
+ #{item.salaryPrice},
#{item.salaryNum},
#{item.salaryTimes},
#{item.salaryUnqualified},
--
Gitblit v1.9.3