diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/taskreport/TaskReportController.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/taskreport/TaskReportController.java index ddf564f8..d2f3d6b8 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/taskreport/TaskReportController.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/controller/admin/taskreport/TaskReportController.java @@ -10,7 +10,10 @@ import com.chanko.yunxi.mes.module.biz.controller.admin.taskreport.vo.*; import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskdispatch.TaskDispatchDetailDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskreport.TaskReportDO; import com.chanko.yunxi.mes.module.biz.dal.mysql.taskdispatch.TaskDispatchDetailMapper; +import com.chanko.yunxi.mes.module.biz.dal.mysql.taskreport.TaskReportMapper; import com.chanko.yunxi.mes.module.biz.service.taskreport.TaskReportService; +import com.chanko.yunxi.mes.module.system.controller.admin.user.vo.user.UserPageReqVO; +import com.chanko.yunxi.mes.module.system.controller.admin.user.vo.user.UserSalaryRespVO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -38,6 +41,9 @@ public class TaskReportController { @Resource private TaskDispatchDetailMapper taskDispatchDetailMapper; + @Resource + private TaskReportMapper taskReportMapper; + @PostMapping("/create") @Operation(summary = "创建任务报工") @PreAuthorize("@ss.hasPermission('biz:task-report:create')") @@ -152,4 +158,16 @@ public class TaskReportController { return success(taskReportService.getUserReportDetail(userid,yearMonth)); } + @GetMapping("/export-salary-detail-excel") + @Operation(summary = "导出员工工资 Excel") + @PreAuthorize("@ss.hasPermission('system:user:list')") + @OperateLog(type = EXPORT) + public void exportUserSalaryDetailExcel(@Valid UserPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = taskReportMapper.selectUserReportDetail(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "员工工资明细.xls", "数据", UserSalaryRespVO.class, + BeanUtils.toBean(list, UserSalaryRespVO.class)); + } } diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java index 6ed2b335..72a4ccc1 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/dal/mysql/taskreport/TaskReportMapper.java @@ -14,6 +14,7 @@ import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskdispatch.TaskDispatchD import com.chanko.yunxi.mes.module.biz.dal.dataobject.taskreport.TaskReportDO; import com.chanko.yunxi.mes.module.biz.dal.dataobject.warehouse.WarehouseDO; import com.chanko.yunxi.mes.module.biz.dal.mysql.warehouse.WarehouseMapper; +import com.chanko.yunxi.mes.module.system.controller.admin.user.vo.user.UserPageReqVO; import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; @@ -168,5 +169,37 @@ public interface TaskReportMapper extends BaseMapperX { return selectList(query); } + default PageResult selectUserReportDetail(UserPageReqVO pageReqVO) { + MPJLambdaWrapperX query = new MPJLambdaWrapperX<>(); + query.distinct() + .select("d.code project_code,h.name dept_name,e.code material_code,e.name material_name,e.spec,f.nickname as ownerName,DATE_FORMAT(t.report_time,'%Y-%m-%d') as report_time") + .select("g.name procedure_name,sum(t.work_time) work_time,sum(t.amount) amount") + .leftJoin("pro_task_dispatch_detail as a on a.id=t.dispatch_detail_id") + .leftJoin("pro_task_dispatch as b on b.id=a.dispatch_id") + .leftJoin("project_sale_order_sub as c on c.id=b.project_sub_id") + .leftJoin("project_sale_order as d on d.id=c.project_order_id") + .leftJoin("base_material as e on e.id=c.material_id") + .leftJoin("system_users as f on f.id=t.owner") + .leftJoin("base_procedure as g on g.id=t.procedure_id") + .leftJoin("system_dept as h on h.id=f.dept_id") + .groupBy("d.code,h.name,e.code,e.name,e.spec,t.owner,DATE_FORMAT(t.report_time,'%Y-%m-%d'),t.procedure_id") + .disableSubLogicDel(); + + if(!StringUtils.isEmpty(pageReqVO.getUserNickName())){ + query.apply(true, "(f.nickname like {0} or f.username like {0})","%"+ pageReqVO.getUserNickName()+"%"); + } + if(!StringUtils.isEmpty(pageReqVO.getProjectCode())){ + query.apply(true, "d.code like {0}",pageReqVO.getProjectCode()); + } + if(!StringUtils.isEmpty(pageReqVO.getExternalCode())){ + query.apply(true, "d.external_code like {0}",pageReqVO.getExternalCode()); + } + if(!StringUtils.isEmpty(pageReqVO.getYearMonth())){ + query.eq(true, "DATE_FORMAT(t.report_time,'%Y%m')",pageReqVO.getYearMonth()); + } + + return selectPage(pageReqVO,query); + } + } diff --git a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/user/UserController.java b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/user/UserController.java index e147a3fe..cc49adf4 100644 --- a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/user/UserController.java +++ b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/user/UserController.java @@ -189,4 +189,6 @@ public class UserController { ExcelUtils.write(response, "员工工资.xls", "数据", UserSalaryRespVO.class, BeanUtils.toBean(list, UserSalaryRespVO.class)); } + + }