server/src/main/java/doumeemes/api/ext/WorkorderRecordExtController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/dao/ext/WorkorderRecordExtMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/dao/ext/dto/QueryUserSalaryListDTO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/dao/ext/vo/SalaryStatisticsListVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/dao/ext/vo/UserBaseInfoVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/dao/ext/vo/UserSalaryListVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/service/ext/WorkorderRecordExtService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/java/doumeemes/service/ext/impl/WorkorderRecordExtServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
server/src/main/resources/mappers/WorkorderRecordExtMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | 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