【员工工资明细】 下载

dev
siontion 3 months ago
parent 4e846829b9
commit 585ea7d3d9

@ -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<TaskReportDO> list = taskReportMapper.selectUserReportDetail(pageReqVO).getList();
if(StringUtils.isEmpty(pageReqVO.getYearMonth())){
pageReqVO.setYearMonth(LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMM")));
}
List<TaskReportDO> result= taskReportService.exportUserReportDetail(pageReqVO.getYearMonth());
List<TaskReportDO> assembleResult = taskReportService.exportUserReportDetailAssemble(pageReqVO.getYearMonth());
List<TaskReportDO> 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));
}
}

@ -162,7 +162,7 @@ public interface TaskReportMapper extends BaseMapperX<TaskReportDO> {
.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<TaskReportDO> {
.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<TaskReportDO> {
return selectList(query);
}
default List<TaskReportDO> selectExportUserReportDetail(String yearMonth) {
MPJLambdaWrapperX<TaskReportDO> 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<TaskReportDO> selectExportUserReportAssembleDetail(String yearMonth) {
MPJLambdaWrapperX<TaskReportDO> 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<TaskReportDO> selectUserReportDetail(UserPageReqVO pageReqVO) {
MPJLambdaWrapperX<TaskReportDO> query = new MPJLambdaWrapperX<>();
query.distinct()

@ -59,6 +59,9 @@ public interface TaskReportService {
List<TaskReportDO> getUserReportDetail(String userId,String yearMonth);
List<TaskReportDO> getUserReportDetailAssemble(String userId,String yearMonth);
List<TaskReportDO> exportUserReportDetail(String yearMonth);
List<TaskReportDO> exportUserReportDetailAssemble(String yearMonth);
TaskReportAssembleVO generateAssembleReportByCode(String assembleCode);
void submitAssembleReport(List<TaskReportAssembleVO> taskReportAssembleVOList);

@ -135,6 +135,16 @@ public class TaskReportServiceImpl implements TaskReportService {
return taskReportMapper.selectUserReportAssembleDetail(userId,yearMonth);
}
@Override
public List<TaskReportDO> exportUserReportDetail(String yearMonth){
return taskReportMapper.selectExportUserReportDetail(yearMonth);
}
@Override
public List<TaskReportDO> exportUserReportDetailAssemble(String yearMonth){
return taskReportMapper.selectExportUserReportAssembleDetail(yearMonth);
}
@Override
public TaskReportAssembleVO generateAssembleReportByCode(String assembleCode) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId();

@ -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;
}

Loading…
Cancel
Save