src/main/java/com/ruoyi/projectManagement/service/impl/PlanServiceImpl.java
@@ -101,6 +101,9 @@ } private List<PlanNode> getPlanNodeByPlanIds(List<Long> planIds) { if(CollUtil.isEmpty(planIds)){ return Collections.emptyList(); } return planNodeMapper.selectList(new LambdaQueryWrapper<PlanNode>() .eq(PlanNode::getIsDelete, 0) .in(PlanNode::getProjectManagementPlanId, planIds).orderByAsc(PlanNode::getSort)); src/main/java/com/ruoyi/sales/mapper/SalesLedgerMapper.java
@@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.support.SFunction; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.aftersalesservice.pojo.AfterSalesService; import com.ruoyi.home.dto.IncomeExpenseAnalysisDto; import com.ruoyi.sales.dto.SalesLedgerDto; import com.ruoyi.sales.dto.SalesTrendDto; @@ -85,5 +84,5 @@ "</script>") List<SalesTrendDto> statisticsTable(@Param("statisticsTableDto")StatisticsTableDto statisticsTableDto); IPage<SalesLedgerDto> listSalesLedger(Page page,@Param("ew") SalesLedgerDto salesLedgerDto); IPage<SalesLedgerDto> listSalesLedgerAndShipped(Page page, @Param("ew") SalesLedgerDto salesLedgerDto); } src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -9,7 +9,6 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.account.service.AccountIncomeService; import com.ruoyi.aftersalesservice.pojo.AfterSalesService; import com.ruoyi.basic.mapper.CustomerMapper; import com.ruoyi.basic.mapper.ProductMapper; import com.ruoyi.basic.mapper.ProductModelMapper; @@ -27,19 +26,15 @@ import com.ruoyi.other.mapper.TempFileMapper; import com.ruoyi.other.pojo.TempFile; import com.ruoyi.production.mapper.*; import com.ruoyi.production.pojo.*; import com.ruoyi.production.service.ProductionProductMainService; import com.ruoyi.production.service.impl.ProductionProductMainServiceImpl; import com.ruoyi.project.system.domain.SysDept; import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysDeptMapper; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.quality.mapper.QualityInspectMapper; import com.ruoyi.quality.pojo.QualityInspect; import com.ruoyi.sales.dto.*; import com.ruoyi.sales.mapper.*; import com.ruoyi.sales.pojo.*; import com.ruoyi.sales.service.ISalesLedgerProductService; import com.ruoyi.sales.service.ISalesLedgerService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -465,7 +460,7 @@ @Override public IPage<SalesLedgerDto> listSalesLedger(SalesLedgerDto salesLedgerDto, Page page) { IPage<SalesLedgerDto> salesLedgerDtoIPage = salesLedgerMapper.listSalesLedger(page, salesLedgerDto); IPage<SalesLedgerDto> salesLedgerDtoIPage = salesLedgerMapper.listSalesLedgerAndShipped(page, salesLedgerDto); for (SalesLedgerDto salesLedger : salesLedgerDtoIPage.getRecords()) { LambdaQueryWrapper<SalesLedgerProduct> productWrapper = new LambdaQueryWrapper<>(); productWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedger.getId()); @@ -485,15 +480,17 @@ .last("limit 1")); if (shippingInfo != null) { product.setShippingStatus(shippingInfo.getStatus()); } } // 过滤只保留发货记录 products = products.stream().filter(product -> "已发货".equals(product.getShippingStatus())).collect(Collectors.toList()); if (!products.isEmpty()) { salesLedger.setHasChildren(true); salesLedger.setProductData(products); } } return salesLedgerDtoIPage; } src/main/java/com/ruoyi/staff/controller/PersonalAttendanceLocationConfigController.java
@@ -37,7 +37,7 @@ // 班次需要不能够重复 if (personalAttendanceLocationConfigService.lambdaQuery().eq(PersonalAttendanceLocationConfig::getShift, personalAttendanceLocationConfig.getShift()).one() != null) { if (personalAttendanceLocationConfig.getId() == null && personalAttendanceLocationConfigService.lambdaQuery().eq(PersonalAttendanceLocationConfig::getShift, personalAttendanceLocationConfig.getShift()).one() != null) { return R.fail("班次不能重复"); } return R.ok(personalAttendanceLocationConfigService.saveOrUpdate(personalAttendanceLocationConfig)); src/main/java/com/ruoyi/staff/controller/PersonalShiftController.java
@@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import javax.validation.constraints.NotNull; import java.util.Collection; @@ -67,31 +68,42 @@ @ApiOperation(value = "导出") @GetMapping("export") public void exportToExcel(@NotNull(message = "时间不能为空!") String time, String userName, Integer sysDeptId, Boolean isMonth, HttpServletResponse response) throws Exception { Map<Object, Object> data; ServletOutputStream out = response.getOutputStream(); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setHeader("requestType","excel"); response.setHeader("Access-Control-Expose-Headers", "requestType"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''" + time + ".xlsx"); if (!isMonth) { data = personalShiftService.exportToYearExcel(time, userName, sysDeptId); // 设置单元格样式 HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(StyleYearUtils.getHeadStyle(), StyleYearUtils.getContentStyle()); // 保存到第一个sheet中 EasyExcel.write(response.getOutputStream()) Map<Object, Object> data = personalShiftService.exportToYearExcel(time, userName, sysDeptId); HorizontalCellStyleStrategy style = new HorizontalCellStyleStrategy( StyleYearUtils.getHeadStyle(), StyleYearUtils.getContentStyle() ); EasyExcel.write(out) .head((List<List<String>>) data.get("header")) .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) // 自适应列宽 .registerWriteHandler(horizontalCellStyleStrategy) .registerWriteHandler(new LongestMatchColumnWidthStyleStrategy()) .registerWriteHandler(style) .sheet("年度") .doWrite((Collection<?>) data.get("data")); } else { data = personalShiftService.exportToMonthExcel(time, userName, sysDeptId); // 设置单元格样式 HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(StyleMonthUtils.getHeadStyle(), StyleMonthUtils.getContentStyle()); EasyExcel.write(response.getOutputStream()) Map<Object, Object> data = personalShiftService.exportToMonthExcel(time, userName, sysDeptId); HorizontalCellStyleStrategy style = new HorizontalCellStyleStrategy( StyleMonthUtils.getHeadStyle(), StyleMonthUtils.getContentStyle() ); EasyExcel.write(out) .head((List<List<String>>) data.get("header")) .registerWriteHandler(horizontalCellStyleStrategy) .registerWriteHandler(style) .sheet("月度") .doWrite((Collection<?>) data.get("data")); } out.flush(); } src/main/java/com/ruoyi/staff/service/impl/PersonalShiftServiceImpl.java
@@ -228,6 +228,9 @@ for (String shiftTime : shiftTimes) { Map<String, Object> hashMap = new HashMap<>(); String[] shiftTimeAndShift = shiftTime.split(":"); if(shiftTimeAndShift.length != 3){ continue; } for (PersonalAttendanceLocationConfig personalAttendanceLocationConfig : personalAttendanceLocationConfigs) { if (!i.getMonthlyAttendance().containsKey(personalAttendanceLocationConfig.getShift())) { i.getMonthlyAttendance().put(personalAttendanceLocationConfig.getShift(), 0); @@ -258,6 +261,16 @@ LocalDateTime localDateTime = LocalDateTime.parse(time, formatters); map.put("header", getMonthHeader(localDateTime)); List<List<Object>> lists = dataRequiredForProcessingIntoExcelMonth(mapIPage, personalAttendanceLocationConfigs); int maxSize = lists.stream() .mapToInt(List::size) .max() .orElse(0); for (List<Object> row : lists) { while (row.size() < maxSize) { row.add("-"); } } map.put("data", lists); return map; } src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -111,14 +111,16 @@ FROM sales_ledger GROUP BY customer_name </select> <select id="listSalesLedger" resultType="com.ruoyi.sales.dto.SalesLedgerDto"> select * from <select id="listSalesLedgerAndShipped" resultType="com.ruoyi.sales.dto.SalesLedgerDto"> select distinct sl.id as 'disId', sl.* from sales_ledger sl <where> left join sales_ledger_product slp on sl.id = slp.sales_ledger_id left join shipping_info si on slp.id = si.sales_ledger_product_id where si.status = '已发货' <if test="ew.customerName != null and ew.customerName != '' "> and sl.customer_name like concat('%',#{ew.customerName},'%') </if> </where> order by sl.execution_date desc </select> </mapper> src/main/resources/mapper/staff/StaffOnJobMapper.xml
@@ -5,12 +5,14 @@ SELECT staff_on_job.*, sp.post_name as postName, sd.dept_name as deptName sd.dept_name as deptName, t1.contract_start_time FROM staff_on_job LEFT JOIN sys_post sp ON sp.post_id = staff_on_job.sys_post_id LEFT JOIN sys_dept sd ON sd.dept_id = staff_on_job.sys_dept_id LEFT JOIN staff_contract as t1 ON t1.staff_on_job_id = staff_on_job.id where 1=1 <if test="staffOnJob.staffState != null"> AND staff_state = #{staffOnJob.staffState}