log/eva.log
server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java
@@ -15,11 +15,9 @@ import doumeemes.dao.ext.bean.EndCheckApBean; import doumeemes.dao.ext.beanDto.QueryWStockDto; import doumeemes.dao.ext.dto.QuerySalaryStatisticDTO; import doumeemes.dao.ext.dto.QueryUserSalaryListDTO; 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; import doumeemes.dao.ext.vo.*; import doumeemes.service.business.WorkorderRecordService; import doumeemes.service.ext.WorkorderExtService; import doumeemes.service.ext.WorkorderRecordExtService; @@ -142,6 +140,12 @@ public ApiResponse<PageData<WorkorderRecordExtListVO>> findPage (@RequestBody PageWrap<QueryWorkorderRecordExtDTO> pageWrap) { return ApiResponse.success(workorderRecordExtService.findPage(pageWrap)); } @ApiOperation("员工绩效分页查询") @PostMapping("/userSalary") @RequiresPermissions("ext:workorderrecordext:query") public ApiResponse<PageData<UserSalaryListVO>> userSalaryPage (@RequestBody PageWrap<QueryUserSalaryListDTO> pageWrap) { return ApiResponse.success(workorderRecordExtService.userSalaryPage(pageWrap)); } @ApiOperation("工资报表统计分页查询") @PostMapping("/salaryStatistic") @RequiresPermissions("ext:workorderrecordext:query") @@ -171,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}") 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(); } /** * 配置数据单元格 */ server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java
@@ -3,10 +3,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; import doumeemes.dao.ext.dto.QueryUserSalaryListDTO; import doumeemes.dao.ext.vo.*; import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO; import io.lettuce.core.dynamic.annotation.Param; @@ -38,4 +36,5 @@ List<WorkorderRecordExtListVO> checkIsWork(@Param("ids")String ids); List<UserSalaryListVO> userSalaryPage(QueryUserSalaryListDTO model); } 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; server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
@@ -18,21 +18,22 @@ @Data @ApiModel("工资报表统计分页数据") public class SalaryStatisticsListVO implements Serializable{ @ApiModelProperty(value = "生产人员编码", example = "1") @ExcelColumn(name="生产人员编码") private Integer userId; @ApiModelProperty(value = "生产人员姓名") @ApiModelProperty(value = "生成人员信息") private UserBaseInfoVO userInfo; @ApiModelProperty(value = "生产人员姓名",hidden = true) @ExcelColumn(name="生产人员姓名") private String userName; @ApiModelProperty(value = "所属部门编码", example = "1") @ApiModelProperty(value = "所属部门编码", example = "1",hidden = true) @ExcelColumn(name="所属部门编码") private Integer departId; @ApiModelProperty(value = "所属部门名称") @ApiModelProperty(value = "所属部门名称",hidden = true) @ExcelColumn(name="所属部门名称") private String departName; @ApiModelProperty(value = "计件工资(分)", example = "1") @ExcelColumn(name="计件工资(分)") private BigDecimal jijianSalary; server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java
@@ -7,8 +7,10 @@ import doumeemes.dao.business.model.WorkorderRecord; import doumeemes.dao.ext.bean.EndCheckApBean; import doumeemes.dao.ext.dto.QuerySalaryStatisticDTO; import doumeemes.dao.ext.dto.QueryUserSalaryListDTO; import doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO; import doumeemes.dao.ext.vo.SalaryStatisticsListVO; import doumeemes.dao.ext.vo.UserSalaryListVO; import doumeemes.dao.ext.vo.WorkorderRecordExtListVO; import javax.servlet.http.HttpServletResponse; @@ -48,4 +50,10 @@ void exportExcel(PageWrap<QueryWorkorderRecordExtDTO> pageWrap ,HttpServletResponse response); 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); } server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
@@ -149,30 +149,40 @@ } //只能查看当前根组织的数据 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); // model.setUserName(initProUser(user,model.getUserId(),allDepartList)); model.setUserInfo(initProUser(user,model.getUserId(),allDepartList)); } } return PageData.from(new PageInfo<>(result)); } @Override public PageData<UserSalaryListVO> userSalaryPage(PageWrap<QueryUserSalaryListDTO> 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(); 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)); @@ -193,20 +203,28 @@ data.setProcedureName(comp.getName()+"-"+dName); } } private void initProUser(LoginUserInfo user, SalaryStatisticsListVO data, List<DepartmentExtListVO> allDepartList) { if(data.getUserId() ==null){ return; private UserBaseInfoVO initProUser(LoginUserInfo user, Integer userId, List<DepartmentExtListVO> allDepartList) { if(userId ==null){ return null; } CompanyUser query=new CompanyUser(); query.setUserId(data.getUserId()); query.setUserId(userId); query.setRootDepartId(user.getRootDepartment().getId()); query.setDeleted(Constants.ZERO); CompanyUser comp= companyUserExtMapper.selectOne(new QueryWrapper<>(query).last(" limit 1")); if(comp!=null){ UserBaseInfoVO userinfo = new UserBaseInfoVO(); DepartmentExtListVO d = departmentExtService.getModelById(user.getCompany().getId(),comp.getDepartmentId(),allDepartList); String dName =d==null?"":StringUtils.defaultString(d.getName(),""); data.setUserName(comp.getName()+"-"+dName); userinfo.setNameAndDepart (comp.getName()+"-"+dName); userinfo.setDepartId(d.getId()); userinfo.setUserId(userId); userinfo.setUserName(comp.getName()); userinfo.setDepartName(d.getName()); return userinfo; } return null; } @Override public List<WorkorderRecordExtListVO> findAll(QueryWorkorderRecordExtDTO pageWrap) { @@ -1655,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"); server/src/main/java/doumeemes/service/system/impl/SystemPermissionServiceImpl.java
@@ -116,7 +116,11 @@ if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ pageWrap.getModel().setType(Constants.USERTYPE.COM); }else{ pageWrap.getModel().setType(Constants.USERTYPE.PLAT); if(pageWrap.getModel().getType()!=null){ //走查询 }else{ pageWrap.getModel().setType(Constants.USERTYPE.PLAT); } } PageHelper.startPage(pageWrap.getPage(), pageWrap.getCapacity()); return PageData.from(new PageInfo<>(systemPermissionMapper.selectManageList(pageWrap.getModel(), pageWrap.getOrderByClause()))); server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
@@ -431,8 +431,42 @@ </where> 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,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_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 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 a.`CREATE_USER` = #{userId} </if> group by a.`WORKORDER_ID` 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 @@ -444,8 +478,14 @@ <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> <select id="selectListNew" parameterType="doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO" resultMap="WorkorderRecordExtListVO"> SELECT