From 585ea7d3d927931e801d8aa195ce25acf57f4d7e Mon Sep 17 00:00:00 2001 From: siontion Date: Sun, 14 Jul 2024 21:46:33 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=91=98=E5=B7=A5=E5=B7=A5=E8=B5=84?= =?UTF-8?q?=E6=98=8E=E7=BB=86=E3=80=91=20=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../taskreport/TaskReportController.java | 23 +++- .../mysql/taskreport/TaskReportMapper.java | 43 +++++++- .../service/taskreport/TaskReportService.java | 3 + .../taskreport/TaskReportServiceImpl.java | 10 ++ .../admin/user/vo/user/UserSalaryRespVO.java | 104 +++++++++++++++++- 5 files changed, 173 insertions(+), 10 deletions(-) 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 4f60f3d9..c060a642 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 @@ -18,6 +18,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -25,7 +26,10 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.stream.Collectors; import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success; import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @@ -171,9 +175,22 @@ public class TaskReportController { public void exportUserSalaryDetailExcel(@Valid UserPageReqVO pageReqVO, HttpServletResponse response) throws IOException { pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); - List list = taskReportMapper.selectUserReportDetail(pageReqVO).getList(); + + if(StringUtils.isEmpty(pageReqVO.getYearMonth())){ + pageReqVO.setYearMonth(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMM"))); + } + + List result= taskReportService.exportUserReportDetail(pageReqVO.getYearMonth()); + List assembleResult = taskReportService.exportUserReportDetailAssemble(pageReqVO.getYearMonth()); + List finalResult = result; + assembleResult.forEach(vo->{ + finalResult.add(vo); + }); + if(!StringUtils.isEmpty(pageReqVO.getNickname())){ + result = result.stream().filter(vo-> vo.getOwnerName().contains(pageReqVO.getNickname())).collect(Collectors.toList()); + } // 导出 Excel - ExcelUtils.write(response, "员工工资明细.xls", "数据", UserSalaryRespVO.class, - BeanUtils.toBean(list, UserSalaryRespVO.class)); + ExcelUtils.write(response, "员工工资明细.xls", "数据", TaskReportRespExportVO.class, + BeanUtils.toBean(result, TaskReportRespExportVO.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 4d7aec86..a4bfaecd 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 @@ -162,7 +162,7 @@ public interface TaskReportMapper extends BaseMapperX { .leftJoin("base_procedure as g on g.id=t.procedure_id") .leftJoin("system_dept as h on h.id=d.business_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") - .eq(TaskReportDO::getOwner,userId) + .eq(!StringUtils.isEmpty(userId), TaskReportDO::getOwner,userId) .eq("DATE_FORMAT(t.report_time,'%Y%m')",yearMonth) .eq("isnull(t.dispatch_id)",0) .disableSubLogicDel() @@ -180,7 +180,7 @@ public interface TaskReportMapper extends BaseMapperX { .leftJoin("base_procedure as g on g.id=t.procedure_id") .leftJoin("system_dept as h on h.id=d.business_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") - .eq(TaskReportDO::getOwner,userId) + .eq(!StringUtils.isEmpty(userId), TaskReportDO::getOwner,userId) .eq("DATE_FORMAT(t.report_time,'%Y%m')",yearMonth) .eq("isnull(t.dispatch_id)",1) .disableSubLogicDel() @@ -188,6 +188,45 @@ public interface TaskReportMapper extends BaseMapperX { return selectList(query); } + default List selectExportUserReportDetail(String yearMonth) { + 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=d.business_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") + .eq("DATE_FORMAT(t.report_time,'%Y%m')",yearMonth) + .eq("isnull(t.dispatch_id)",0) + .disableSubLogicDel() + ; + return selectList(query); + } + default List selectExportUserReportAssembleDetail(String yearMonth) { + 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("project_sale_order as d on d.id=SUBSTRING_INDEX(t.assemble_code,'-',1)") + .leftJoin("base_material as e on e.id=t.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=d.business_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") + .eq("DATE_FORMAT(t.report_time,'%Y%m')",yearMonth) + .eq("isnull(t.dispatch_id)",1) + .disableSubLogicDel() + ; + return selectList(query); + } + + default PageResult selectUserReportDetail(UserPageReqVO pageReqVO) { MPJLambdaWrapperX query = new MPJLambdaWrapperX<>(); query.distinct() diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskreport/TaskReportService.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskreport/TaskReportService.java index 5d855635..552beb76 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskreport/TaskReportService.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskreport/TaskReportService.java @@ -59,6 +59,9 @@ public interface TaskReportService { List getUserReportDetail(String userId,String yearMonth); List getUserReportDetailAssemble(String userId,String yearMonth); + List exportUserReportDetail(String yearMonth); + List exportUserReportDetailAssemble(String yearMonth); + TaskReportAssembleVO generateAssembleReportByCode(String assembleCode); void submitAssembleReport(List taskReportAssembleVOList); diff --git a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskreport/TaskReportServiceImpl.java b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskreport/TaskReportServiceImpl.java index f75e7759..d2c06337 100644 --- a/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskreport/TaskReportServiceImpl.java +++ b/mes-module-majoys/mes-module-majoys-biz/src/main/java/com/chanko/yunxi/mes/module/biz/service/taskreport/TaskReportServiceImpl.java @@ -135,6 +135,16 @@ public class TaskReportServiceImpl implements TaskReportService { return taskReportMapper.selectUserReportAssembleDetail(userId,yearMonth); } + @Override + public List exportUserReportDetail(String yearMonth){ + return taskReportMapper.selectExportUserReportDetail(yearMonth); + } + + @Override + public List exportUserReportDetailAssemble(String yearMonth){ + return taskReportMapper.selectExportUserReportAssembleDetail(yearMonth); + } + @Override public TaskReportAssembleVO generateAssembleReportByCode(String assembleCode) { Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); diff --git a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/user/vo/user/UserSalaryRespVO.java b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/user/vo/user/UserSalaryRespVO.java index eb324733..0b401d09 100644 --- a/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/user/vo/user/UserSalaryRespVO.java +++ b/mes-module-system/mes-module-system-biz/src/main/java/com/chanko/yunxi/mes/module/system/controller/admin/user/vo/user/UserSalaryRespVO.java @@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.system.controller.admin.user.vo.user; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat; import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert; import com.chanko.yunxi.mes.module.system.enums.DictTypeConstants; @@ -27,25 +28,118 @@ public class UserSalaryRespVO { private String nickname; @Schema(description = "生产订单号") - @ExcelProperty("生产订单号") private String projectCode; @Schema(description = "销售订单号") - @ExcelProperty("销售订单号") private String externalCode; @Schema(description = "订单所属部门") - @ExcelProperty("订单所属部门") + @ExcelProperty("部门") private String deptName; @Schema(description = "所属年月") @ExcelProperty("所属年月") private String yearMonth; - @Schema(description = "工资") - @ExcelProperty("工资") + @Schema(description = "实发工资") private BigDecimal salary; + @Schema(description = "实际出勤天数") + @ExcelProperty("实际出勤天数") + private Integer attendanceDays; + + @Schema(description = "基本工资") + @ExcelProperty("基本工资") + private BigDecimal basicSalary; + + @Schema(description = "职务津贴") + @ExcelProperty("职务津贴") + private BigDecimal jobAllowance; + + @Schema(description = "五险一金补贴") + @ExcelProperty("五险一金补贴") + private BigDecimal fiveOneFund; + + @Schema(description = "敬业限制补贴") + @ExcelProperty("敬业限制补贴") + private BigDecimal nonCompeteSubsidy; + + @Schema(description = "3天周末加班") + @ExcelProperty("3天周末加班") + private BigDecimal weekendWork; + + @Schema(description = "加班小时") + @ExcelProperty("加班小时") + private BigDecimal weekendWorktime; + + @Schema(description = "加班金额") + @ExcelProperty("加班金额") + private BigDecimal weekendWorkAmount; + + @Schema(description = "事假小时") + @ExcelProperty("事假小时") + private BigDecimal absenceTime; + + @Schema(description = "事假金额") + @ExcelProperty("事假金额") + private BigDecimal absenceAmount; + + @Schema(description = "全勤工资") + @ExcelProperty("全勤工资") + private BigDecimal fullAttendanceSalary; + + @Schema(description = "工龄奖补助") + @ExcelProperty("工龄奖补助") + private BigDecimal serviceExperienceAward; + + @Schema(description = "夜班/其他补助") + @ExcelProperty("夜班/其他补助") + private BigDecimal otherAward; + + @Schema(description = "应发工资") + @ExcelProperty("应发工资") + private BigDecimal grossPay; + + @Schema(description = "扣退休金") + @ExcelProperty("扣退休金") + private BigDecimal retireDeduction; + + @Schema(description = "扣医疗金") + @ExcelProperty("扣医疗金") + private BigDecimal medicalDeduction; + + @Schema(description = "扣失业金") + @ExcelProperty("扣失业金") + private BigDecimal unemploymentDeduction; + + @Schema(description = "扣个税") + @ExcelProperty("扣个税") + private BigDecimal taxDeduction; + + @Schema(description = "扣水电费") + @ExcelProperty("扣水电费") + private BigDecimal waterElectricityDeduction; + + @Schema(description = "扣餐费") + @ExcelProperty("扣餐费") + private BigDecimal foodDeduction; + + @Schema(description = "扣住宿费") + @ExcelProperty("扣住宿费") + private BigDecimal lodgingDeduction; + + @Schema(description = "扣借款/其他") + @ExcelProperty("扣借款/其他") + private BigDecimal loanDeduction; + + @Schema(description = "补发") + @ExcelProperty("补发") + private BigDecimal reissue; + + @Schema(description = "实发工资") + @ExcelProperty("实发工资") + private BigDecimal netSalary; + }