jiangping
2023-08-14 f2343d4e86b4dfe53122a1bd62d7d2f263c3ed3d
新增员工绩效分页查询接口
已添加3个文件
已修改6个文件
252 ■■■■ 文件已修改
server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/ext/vo/UserBaseInfoVO.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/src/main/resources/mappers/WorkorderRecordExtMapper.xml 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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")
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/QueryUserSalaryListDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package doumeemes.dao.ext.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
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 QueryUserSalaryListDTO {
    @ApiModelProperty(value = "生产人员编码", example = "1")
    private Integer userId;
    @ApiModelProperty(value = "工序编码", example = "1")
    private Integer procedureId;
    @ApiModelProperty(value = "物料编码", example = "1")
    private Integer materialId;
    @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;
}
server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java
@@ -18,21 +18,11 @@
@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 = "生成人员信息")
    private UserBaseInfoVO userInfo;
    @ApiModelProperty(value = "计件工资(分)", example = "1")
    @ExcelColumn(name="计件工资(分)")
    private BigDecimal jijianSalary;
server/src/main/java/doumeemes/dao/ext/vo/UserBaseInfoVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,36 @@
package doumeemes.dao.ext.vo;
import doumeemes.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2022/04/20 10:56
 */
@Data
@ApiModel("用户基本信息数据")
public class UserBaseInfoVO implements Serializable{
    @ApiModelProperty(value = "生产人员编码", example = "1")
    @ExcelColumn(name="生产人员编码")
    private Integer userId;
    @ApiModelProperty(value = "生产人员姓名和部门名称组合")
    @ExcelColumn(name="生产人员姓名和部门名称组合")
    private String nameAndDepart;
    @ApiModelProperty(value = "生产人员姓名")
    @ExcelColumn(name="生产人员姓名")
    private String userName;
    @ApiModelProperty(value = "所属部门编码", example = "1")
    @ExcelColumn(name="所属部门编码")
    private Integer departId;
    @ApiModelProperty(value = "所属部门名称")
    @ExcelColumn(name="所属部门名称")
    private String departName;
}
server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,59 @@
package doumeemes.dao.ext.vo;
import doumeemes.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2022/04/20 10:56
 */
@Data
@ApiModel("员工绩效分页数据")
public class UserSalaryListVO implements Serializable{
    @ApiModelProperty(value = "生产人员编码", example = "1")
    @ExcelColumn(name="生产人员编码")
    private Integer userId;
    @ApiModelProperty(value = "生成人员信息")
    private UserBaseInfoVO userInfo;
    @ApiModelProperty(value = "物料编码", example = "1")
    @ExcelColumn(name="物料编码")
    private String materialCode;
    @ApiModelProperty(value = "物料主键", example = "1")
    @ExcelColumn(name="物料主键")
    private Integer materialId;
    @ApiModelProperty(value = "工单编码", example = "1")
    @ExcelColumn(name="工单编码")
    private String workorderCode;
    @ApiModelProperty(value = "工单料主键", example = "1")
    @ExcelColumn(name="工单主键")
    private Integer workorderId;
    @ApiModelProperty(value = "工序主键", example = "1")
    @ExcelColumn(name="工序主键")
    private Integer procedureId;
    @ApiModelProperty(value = "工序名称")
    @ExcelColumn(name="工序名称")
    private String procedureName;
    @ApiModelProperty(value = "单位")
    @ExcelColumn(name="单位")
    private String unitName;
    @ApiModelProperty(value = "报工数")
    @ExcelColumn(name="报工数")
    private BigDecimal num;
    @ApiModelProperty(value = "良品数")
    @ExcelColumn(name="良品数")
    private BigDecimal qualifiedNum;
    @ApiModelProperty(value = "不良品数")
    @ExcelColumn(name="不良品数")
    private BigDecimal unQualifiedNum;
    @ApiModelProperty(value = "合格率(%)")
    @ExcelColumn(name="合格率")
    private BigDecimal rate;
}
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,6 @@
   void exportExcel(PageWrap<QueryWorkorderRecordExtDTO> pageWrap ,HttpServletResponse response);
   PageData<SalaryStatisticsListVO> salaryStatistic(PageWrap<QuerySalaryStatisticDTO> pageWrap);
    PageData<UserSalaryListVO> userSalaryPage(PageWrap<QueryUserSalaryListDTO> pageWrap);
}
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java
@@ -149,30 +149,37 @@
        }
        //只能查看当前根组织的数据
        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));
            }
        }
        return PageData.from(new PageInfo<>(result));
@@ -193,20 +200,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) {
server/src/main/resources/mappers/WorkorderRecordExtMapper.xml
@@ -431,6 +431,28 @@
    </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
    ,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
    ,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 procedures f on a.PROCEDURE_ID =f.ID
    where a.DELETED = 0
    <if test="rootDepartId != null">
      AND  `ROOT_DEPART_ID` = #{rootDepartId}
    </if>
    <if test="userId != null">
      AND  `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
    ,sum(CASE  WHEN salary_type=0 THEN  0 ELSE salary  END ) as jishiSalary
@@ -445,7 +467,7 @@
      AND  `CREATE_USER` = #{userId}
    </if>
    group by  `CREATE_USER`
   <!-- order by `CREATE_TIME` desc-->
  </select>
  <select id="selectListNew" parameterType="doumeemes.dao.ext.dto.QueryWorkorderRecordExtDTO" resultMap="WorkorderRecordExtListVO">
    SELECT