Browse Source

Merge remote-tracking branch 'origin/dev' into dev

phoenix 1 year ago
parent
commit
9fa6c68379

+ 29 - 0
src/main/java/com/xjrsoft/common/utils/excel/CustomCellRangeAddress.java

@@ -0,0 +1,29 @@
+package com.xjrsoft.common.utils.excel;
+
+import org.apache.poi.ss.util.CellRangeAddress;
+
+/**
+ * @author dzx
+ * @date 2024/1/8
+ */
+public class CustomCellRangeAddress extends CellRangeAddress {
+    private boolean isBlod;
+
+    public boolean getIsBlod() {
+        return isBlod;
+    }
+
+    public void setIsBlod(boolean blod) {
+        isBlod = blod;
+    }
+
+    public CustomCellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol) {
+        super(firstRow, lastRow, firstCol, lastCol);
+    }
+
+    public CustomCellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol, Boolean isBlod) {
+        super(firstRow, lastRow, firstCol, lastCol);
+        setIsBlod(isBlod);
+    }
+
+}

+ 52 - 0
src/main/java/com/xjrsoft/common/utils/excel/HandleUtil.java

@@ -0,0 +1,52 @@
+package com.xjrsoft.common.utils.excel;
+
+import org.apache.poi.ss.usermodel.BorderStyle;
+import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.VerticalAlignment;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFCell;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFFont;
+import org.apache.poi.xssf.usermodel.XSSFRow;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+
+/**
+ * @author dzx
+ * @date 2024/1/8
+ */
+public class HandleUtil {
+
+    public static void setRegionStyle(XSSFSheet sheet, CellRangeAddress region, XSSFCellStyle xssfCellStyle) {
+        for (int i = region.getFirstRow(); i <= region.getLastRow(); i++) {
+            XSSFRow row = sheet.getRow(i);
+            if (null == row) row = sheet.createRow(i);
+            for (int j = region.getFirstColumn(); j <= region.getLastColumn(); j++) {
+                XSSFCell cell = row.getCell(j);
+                if (null == cell) cell = row.createCell(j);
+                cell.setCellStyle(xssfCellStyle);
+            }
+        }
+    }
+
+    public static XSSFCellStyle setDefaultStyle(XSSFWorkbook workbook, Boolean isBold) {
+        XSSFCellStyle cellStyle = workbook.createCellStyle();
+        // 边框
+        cellStyle.setBorderBottom(BorderStyle.THIN);
+        cellStyle.setBorderLeft(BorderStyle.THIN);
+        cellStyle.setBorderRight(BorderStyle.THIN);
+        cellStyle.setBorderTop(BorderStyle.THIN);
+        // 居中
+        cellStyle.setAlignment(HorizontalAlignment.CENTER);
+        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
+        // 字体
+        XSSFFont font = workbook.createFont();
+        font.setFontName("Calibri");
+        if(isBold){
+            font.setBold(isBold);
+        }
+        font.setFontHeightInPoints((short) 10);
+        cellStyle.setFont(font);
+        return cellStyle;
+    }
+}

+ 24 - 16
src/main/java/com/xjrsoft/module/organization/controller/UserController.java

@@ -30,6 +30,7 @@ import com.xjrsoft.module.organization.service.*;
 import com.xjrsoft.module.organization.utils.OrganizationUtil;
 import com.xjrsoft.module.organization.vo.*;
 import com.xjrsoft.module.oss.factory.OssFactory;
+import com.xjrsoft.module.workflow.service.IWorkflowExecuteService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -79,6 +80,7 @@ public class UserController {
 
     private final IUserStudentService userStudentService;
     private final IBaseClassService baseClassService;
+    private final IWorkflowExecuteService workflowExecuteService;
 
 
     @GetMapping(value = "/list")
@@ -99,22 +101,22 @@ public class UserController {
     @ApiOperation(value = "用户列表(分页)")
     public R page(UserPageDto dto) {
         List<Long> deptIds = new ArrayList<>();
-        if (ObjectUtil.isNotNull(dto.getDepartmentId())){
-            List<Department> list = redisUtil.get(GlobalConstant.DEP_CACHE_KEY,new TypeReference<List<Department>>() {
+        if (ObjectUtil.isNotNull(dto.getDepartmentId())) {
+            List<Department> list = redisUtil.get(GlobalConstant.DEP_CACHE_KEY, new TypeReference<List<Department>>() {
             });
             //当前部门的层级
             String hierarchy = list.stream().filter(x -> x.getId().equals(dto.getDepartmentId())).findFirst().orElse(new Department()).getHierarchy();
-            if (StrUtil.isNotBlank(hierarchy)){
+            if (StrUtil.isNotBlank(hierarchy)) {
                 //层级里面包含当前部门层级的就是它的子集,如1-1,下面包含了1-1、1-1-2这种
-                deptIds = list.stream().filter(x -> StrUtil.isNotBlank(x.getHierarchy())&&x.getHierarchy().contains(hierarchy)).map(Department::getId).collect(Collectors.toList());
-            }else {
+                deptIds = list.stream().filter(x -> StrUtil.isNotBlank(x.getHierarchy()) && x.getHierarchy().contains(hierarchy)).map(Department::getId).collect(Collectors.toList());
+            } else {
                 //如果不存在层级就查询自己的数据
                 deptIds.add(dto.getDepartmentId());
             }
         }
 
         //因为多表关联 会有多个表都使用了id字段,  所以必须专门指定主表的Id
-        if (ObjectUtil.isNotNull(dto.getDepartmentId())){//不为空联合查询
+        if (ObjectUtil.isNotNull(dto.getDepartmentId())) {//不为空联合查询
             IPage<UserPageVo> page = userService.selectJoinListPage(ConventPage.getPage(dto), UserPageVo.class,
                     MPJWrappers.<User>lambdaJoin()
                             .disableSubLogicDel()
@@ -137,7 +139,7 @@ public class UserController {
             PageOutput<UserPageVo> pageOutput = ConventPage.getPageOutput(page);
 
             return R.ok(pageOutput);
-        }else {
+        } else {
 //            LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
 //            queryWrapper.like(StrUtil.isNotBlank(dto.getKeyword()), User::getName, dto.getKeyword())
 //                    .or(StrUtil.isNotBlank(dto.getKeyword()), x -> x.like(StrUtil.isNotBlank(dto.getKeyword()), User::getCode, dto.getKeyword()))
@@ -202,7 +204,6 @@ public class UserController {
         return R.ok(userService.update(dto));
     }
 
-
     @GetMapping(value = "/current/info")
     @ApiOperation(value = "当前登录用户信息")
     public R info() {
@@ -265,6 +266,14 @@ public class UserController {
         return R.ok(vo);
     }
 
+    @GetMapping(value = "/pending/count")
+    @ApiOperation(value = "当前待办数量统计")
+    public RT<PendingCountDto> pendingCount() {
+        PendingCountDto pendingCountDto = new PendingCountDto();
+        pendingCountDto.setWfPendingCount(workflowExecuteService.pendingCount());
+
+        return RT.ok(pendingCountDto);
+    }
 
     @PutMapping("/update/info")
     @ApiOperation(value = "登陆人修改自己得用户信息")
@@ -279,7 +288,6 @@ public class UserController {
         return R.ok(userService.updateById(updateUserInfo));
     }
 
-
     @PutMapping("/update/password")
     @ApiOperation(value = "当前登录用户修改本人密码")
     public RT<Boolean> updatePassword(@RequestBody @Valid UpdatePasswordDto dto) {
@@ -381,15 +389,15 @@ public class UserController {
 
     @PostMapping("/bind-unionid")
     @ApiOperation(value = "绑定微信 UnionId")
-    public  R bindUnionId(@RequestBody BindOpenidDto dto) {
-        User user = userService.getOne(Wrappers.<User>query().lambda().select(User::getId, User::getOpenId,User::getUnionId).eq(User::getId, dto.getId()), false);
+    public R bindUnionId(@RequestBody BindOpenidDto dto) {
+        User user = userService.getOne(Wrappers.<User>query().lambda().select(User::getId, User::getOpenId, User::getUnionId).eq(User::getId, dto.getId()), false);
         if (user != null) {
             if (StrUtil.isNotBlank(user.getUnionId())) {
                 return R.error("该用户已经绑定微信!");
             }
 
             long count = userService.count(Wrappers.<User>query().lambda().eq(User::getUnionId, dto.getOpenid()));
-            if(count > 0){
+            if (count > 0) {
                 return R.error("该用户已经绑定微信!");
             }
 
@@ -398,9 +406,9 @@ public class UserController {
 //            updateUser.setOpenId(dto.getOpenid());
             updateUser.setUnionId(dto.getOpenid());
             return R.ok(userService.updateById(updateUser));
-        }else{
+        } else {
             long count = userService.count(Wrappers.<User>query().lambda().eq(User::getOpenId, dto.getOpenid()));
-            if(count > 0){
+            if (count > 0) {
                 return R.error("该用户已经绑定微信!");
             }
         }
@@ -409,13 +417,13 @@ public class UserController {
 
     @PostMapping("/bind-openid")
     @ApiOperation(value = "绑定微信 Openid")
-    public  R bindOpenid(@RequestBody BindOpenidDto dto) {
+    public R bindOpenid(@RequestBody BindOpenidDto dto) {
         return R.ok(userService.bindOpenid(dto));
     }
 
     @GetMapping("/unbind-openid")
     @ApiOperation(value = "取消绑定微信 UnionId")
-    public  R unbindOpenid(@RequestParam Long id) {
+    public R unbindOpenid(@RequestParam Long id) {
         return R.ok(userService.unbindOpenid(id));
     }
 

+ 16 - 0
src/main/java/com/xjrsoft/module/organization/vo/PendingCountDto.java

@@ -0,0 +1,16 @@
+package com.xjrsoft.module.organization.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+public class PendingCountDto implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 流程待办数量
+     */
+    private long wfPendingCount;
+}

+ 83 - 4
src/main/java/com/xjrsoft/module/room/controller/RoomValueWeekController.java

@@ -2,20 +2,30 @@ package com.xjrsoft.module.room.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
 import com.alibaba.excel.support.ExcelTypeEnum;
+import com.alibaba.excel.write.metadata.WriteSheet;
+import com.alibaba.excel.write.metadata.WriteTable;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
+import com.xjrsoft.common.utils.excel.CustomCellRangeAddress;
+import com.xjrsoft.common.utils.excel.HandleUtil;
 import com.xjrsoft.module.room.dto.AddRoomValueWeekDto;
 import com.xjrsoft.module.room.dto.RoomValueWeekPageDto;
 import com.xjrsoft.module.room.dto.UpdateRoomValueWeekDto;
 import com.xjrsoft.module.room.service.IRoomValueWeekService;
+import com.xjrsoft.module.room.vo.RoomValueWeekExcelVo;
+import com.xjrsoft.module.room.vo.RoomValueWeekItemExcelVo;
 import com.xjrsoft.module.room.vo.RoomValueWeekItemVo;
 import com.xjrsoft.module.room.vo.RoomValueWeekPageVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.xssf.usermodel.XSSFSheet;
+import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -27,7 +37,10 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -95,11 +108,77 @@ public class RoomValueWeekController {
 
     @GetMapping("/export")
     @ApiOperation(value = "导出")
-    public ResponseEntity<byte[]> exportData(@Valid RoomValueWeekPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) {
-        List<RoomValueWeekPageVo> customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput<RoomValueWeekPageVo>) page(dto).getData()).getList();
+    public ResponseEntity<byte[]> exportData(@Valid RoomValueWeekPageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) throws IOException {
+        List<RoomValueWeekExcelVo> dataList = roomValueWeekService.getList(dto);
+        String sheetName = "数据";
+        String fileName = "RoomValueWeek" + ExcelTypeEnum.XLSX.getValue();
         ByteArrayOutputStream bot = new ByteArrayOutputStream();
-        EasyExcel.write(bot, RoomValueWeekPageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList);
 
-        return RT.fileStream(bot.toByteArray(), "RoomValueWeek" + ExcelTypeEnum.XLSX.getValue());
+        ExcelWriter excelWriter = EasyExcel.write(bot).excelType(ExcelTypeEnum.XLSX).build();
+        WriteSheet writeSheet = EasyExcel.writerSheet(sheetName).needHead(Boolean.FALSE).build();
+
+        List<RoomValueWeekItemExcelVo> demoDataList2 = new ArrayList<>();
+        demoDataList2.add(new RoomValueWeekItemExcelVo(){{
+            setColumn1("");
+            setColumn2("");
+            setColumn3("");
+            setColumn4("");
+        }});
+
+        //写入数据,并计算需要合并的单元格
+        int tableRows = 6;
+        int j = 0;
+        List<CellRangeAddress> cellRangeAddressList = new ArrayList<>();
+        List<CustomCellRangeAddress> styleList = new ArrayList<>();
+        for (int i = 0; i < dataList.size() * 2; ){
+
+            WriteTable writeTable = EasyExcel.writerTable(i + 1).head(RoomValueWeekItemExcelVo.class).needHead(Boolean.FALSE).build();
+            excelWriter.write(dataList.get(j).getItemList(), writeSheet, writeTable);
+            //存下需要合并的单元格
+            cellRangeAddressList.add(new CellRangeAddress((tableRows * j) + 0, (tableRows * j) + 0, 0, 3));
+            cellRangeAddressList.add(new CellRangeAddress((tableRows * j) + 1, (tableRows * j) + 1, 0, 1));
+            cellRangeAddressList.add(new CellRangeAddress((tableRows * j) + 1, (tableRows * j) + 1, 2, 3));
+            cellRangeAddressList.add(new CellRangeAddress((tableRows * j) + 3, (tableRows * j) + 4, 0, 0));
+            cellRangeAddressList.add(new CellRangeAddress((tableRows * j) + 3, (tableRows * j) + 4, 1, 1));
+
+            //存下需要设置样式的单元
+            styleList.add(new CustomCellRangeAddress((tableRows * j) + 0, (tableRows * j) + 0, 0, 3, Boolean.TRUE));
+            styleList.add(new CustomCellRangeAddress((tableRows * j) + 1, (tableRows * j) + 1, 0, 3, Boolean.TRUE));
+            styleList.add(new CustomCellRangeAddress((tableRows * j) + 2, (tableRows * j) + 2, 0, 3));
+            styleList.add(new CustomCellRangeAddress((tableRows * j) + 3, (tableRows * j) + 3, 0, 3));
+            styleList.add(new CustomCellRangeAddress((tableRows * j) + 4, (tableRows * j) + 4, 0, 3));
+
+            WriteTable writeTable3 = EasyExcel.writerTable(i + 2).build();
+            excelWriter.write(demoDataList2, writeSheet, writeTable3);
+            cellRangeAddressList.add(new CellRangeAddress((tableRows * j) + 5, (tableRows * j) + 5, 0, 3));
+
+            j ++;
+            i = i + 2;
+        }
+        excelWriter.finish();
+
+        // 将ByteArrayOutputStream转换为InputStream
+        InputStream in = new ByteArrayInputStream(bot.toByteArray());
+
+        //使用poi合并单元格,使用registerWriteHandler合并单元格会与fill方法中创建单元格后校验合并单元格冲突而引发报错
+        XSSFWorkbook workbook = new XSSFWorkbook(in);
+        XSSFSheet sheetAt = workbook.getSheet(sheetName);
+        //合并单元格
+        for (CellRangeAddress cellRangeAddress : cellRangeAddressList) {
+            sheetAt.addMergedRegion(cellRangeAddress);
+        }
+        //设置样式
+        for (CustomCellRangeAddress cellRangeAddress : styleList) {
+            HandleUtil.setRegionStyle(sheetAt, cellRangeAddress, HandleUtil.setDefaultStyle(workbook, cellRangeAddress.getIsBlod()));
+        }
+
+        ByteArrayOutputStream os = new ByteArrayOutputStream();
+        workbook.write(os);
+        os.flush();
+        os.close();
+
+        return RT.fileStream(os.toByteArray(), fileName);
     }
+
+
 }

+ 2 - 1
src/main/java/com/xjrsoft/module/room/service/IRoomValueWeekService.java

@@ -6,6 +6,7 @@ import com.xjrsoft.module.room.dto.AddRoomValueWeekDto;
 import com.xjrsoft.module.room.dto.RoomValueWeekPageDto;
 import com.xjrsoft.module.room.dto.UpdateRoomValueWeekDto;
 import com.xjrsoft.module.room.entity.RoomValueWeek;
+import com.xjrsoft.module.room.vo.RoomValueWeekExcelVo;
 import com.xjrsoft.module.room.vo.RoomValueWeekItemVo;
 import com.xjrsoft.module.room.vo.RoomValueWeekPageVo;
 
@@ -45,7 +46,7 @@ public interface IRoomValueWeekService extends MPJBaseService<RoomValueWeek> {
 
     Page<RoomValueWeekPageVo> getPage(Page<RoomValueWeekPageDto> page, RoomValueWeekPageDto dto);
 
-    List<RoomValueWeek> getList(RoomValueWeekPageDto dto);
+    List<RoomValueWeekExcelVo> getList(RoomValueWeekPageDto dto);
 
     Boolean updateNumberPeople();
 

+ 57 - 8
src/main/java/com/xjrsoft/module/room/service/impl/RoomValueWeekServiceImpl.java

@@ -1,6 +1,7 @@
 package com.xjrsoft.module.room.service.impl;
 
 import cn.hutool.core.bean.BeanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -142,28 +143,76 @@ public class RoomValueWeekServiceImpl extends MPJBaseServiceImpl<RoomValueWeekMa
     }
 
     @Override
-    public List<RoomValueWeek> getList(RoomValueWeekPageDto dto) {
+    public List<RoomValueWeekExcelVo> getList(RoomValueWeekPageDto dto) {
         List<RoomValueWeek> weekList = roomValueWeekRoomValueWeekMapper.selectList(
             new QueryWrapper<RoomValueWeek>().lambda()
-            .ge(RoomValueWeek::getEndTime, dto.getEndTime())
-            .le(RoomValueWeek::getStartTime, dto.getStartTime())
+            .le(ObjectUtil.isNotNull(dto.getEndTime()), RoomValueWeek::getEndTime, dto.getEndTime())
+            .ge(ObjectUtil.isNotNull(dto.getStartTime()), RoomValueWeek::getStartTime, dto.getStartTime())
         );
         List<RoomValueWeekExcelVo> dataList = BeanUtil.copyToList(weekList, RoomValueWeekExcelVo.class);
 
         List<RoomValueWeekPageVo> allItemList = roomValueWeekRoomValueWeekItemMapper.getItemList(dto);
-
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
         for (RoomValueWeekExcelVo weekExcelVo : dataList) {
+            String title = sdf.format(weekExcelVo.getStartTime()) + "-" + sdf.format(weekExcelVo.getEndTime()) + "留宿情况及值班安排表";
             List<RoomValueWeekItemExcelVo> itemList = new ArrayList<>();
+            itemList.add(new RoomValueWeekItemExcelVo(){{
+                setColumn1(title);
+                setColumn2(title);
+                setColumn3(title);
+                setColumn4(title);
+            }});
+            itemList.add(new RoomValueWeekItemExcelVo(){{
+                setColumn1("留宿情况");
+                setColumn2("留宿情况");
+                setColumn3("宿舍值班人员安排");
+                setColumn4("宿舍值班人员安排");
+            }});
+
+            int maleStudents = 0;
+            int femaleStudents = 0;
+            String maleHousemaster = "",femaleHousemaster = "", instructor = "";
             for (RoomValueWeekPageVo roomValueWeekPageVo : allItemList) {
-                if(roomValueWeekPageVo.getRoomValueWeekId().equals(weekExcelVo.getId())){
-                    RoomValueWeekItemExcelVo itemExcelVo = new RoomValueWeekItemExcelVo();
+                if(!roomValueWeekPageVo.getRoomValueWeekId().equals(weekExcelVo.getId())){
+                    continue;
+                }
+                if("男寝".equals(roomValueWeekPageVo.getRoomType())){
+                    maleStudents = roomValueWeekPageVo.getNumberPeople();
+                    maleHousemaster = roomValueWeekPageVo.getUserName();
+                }
+                if("女寝".equals(roomValueWeekPageVo.getRoomType())){
+                    femaleStudents = roomValueWeekPageVo.getNumberPeople();
+                    femaleHousemaster = roomValueWeekPageVo.getUserName();
+                }
+                if("教官".equals(roomValueWeekPageVo.getPostName())){
+                    instructor = roomValueWeekPageVo.getUserName();
                 }
             }
-        }
+            RoomValueWeekItemExcelVo maleHousemasterVo = new RoomValueWeekItemExcelVo();
+            maleHousemasterVo.setColumn1("男生留宿情况");
+            maleHousemasterVo.setColumn2("女生留宿情况");
+            maleHousemasterVo.setColumn3("男生宿管");
+            maleHousemasterVo.setColumn4(maleHousemaster);
+            itemList.add(maleHousemasterVo);
 
+            RoomValueWeekItemExcelVo femaleHousemasterVo = new RoomValueWeekItemExcelVo();
+            femaleHousemasterVo.setColumn1(maleStudents + "");
+            femaleHousemasterVo.setColumn2(femaleStudents + "");
+            femaleHousemasterVo.setColumn3("女生宿管");
+            femaleHousemasterVo.setColumn4(femaleHousemaster);
+            itemList.add(femaleHousemasterVo);
 
+            RoomValueWeekItemExcelVo instructorVo = new RoomValueWeekItemExcelVo();
+            instructorVo.setColumn1(maleStudents + "");
+            instructorVo.setColumn2(femaleStudents + "");
+            instructorVo.setColumn3("教官");
+            instructorVo.setColumn4(instructor);
+            itemList.add(instructorVo);
 
-        return null;
+            weekExcelVo.setItemList(itemList);
+        }
+
+        return dataList;
     }
 
     @Override

+ 7 - 7
src/main/java/com/xjrsoft/module/room/vo/RoomValueWeekItemExcelVo.java

@@ -14,19 +14,19 @@ import lombok.Data;
 public class RoomValueWeekItemExcelVo {
 
     @ExcelProperty(index = 0)
-    @ColumnWidth(15)
+    @ColumnWidth(20)
     private String column1;
 
-    @ExcelProperty(index = 0)
-    @ColumnWidth(15)
+    @ExcelProperty(index = 1)
+    @ColumnWidth(20)
     private String column2;
 
-    @ExcelProperty(index = 0)
-    @ColumnWidth(15)
+    @ExcelProperty(index = 2)
+    @ColumnWidth(20)
     private String column3;
 
-    @ExcelProperty(index = 0)
-    @ColumnWidth(15)
+    @ExcelProperty(index = 3)
+    @ColumnWidth(20)
     private String column4;
 
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/workflow/service/IWorkflowExecuteService.java

@@ -137,6 +137,12 @@ public interface IWorkflowExecuteService {
      */
     List<LaunchAndApproveVo> reLaunch(ReLaunchDto dto);
 
+    /**
+     * 当前人员待办数量
+     * @return
+     */
+    long pendingCount();
+
 
     /**
      * 当前人员待处理

+ 14 - 0
src/main/java/com/xjrsoft/module/workflow/service/impl/WorkflowExecuteServiceImpl.java

@@ -1426,6 +1426,20 @@ public class WorkflowExecuteServiceImpl implements IWorkflowExecuteService {
         }
     }
 
+    @Override
+    public long pendingCount() {
+
+        SaSession tokenSession = StpUtil.getTokenSession();
+        User user = tokenSession.get(GlobalConstant.LOGIN_USER_INFO_KEY, new User());
+
+        TaskQuery taskQuery = taskService.createTaskQuery()
+                .active()
+                .taskVariableValueEquals(WorkflowConstant.TASK_IS_APPOINT_APPROVE, YesOrNoEnum.NO.getCode())
+                .processVariableValueEquals(WorkflowConstant.PROCESS_ISRECYCLE_FLAG_KEY, WorkflowIsRecycleType.NO.getCode())
+                .taskVariableValueLike(WorkflowConstant.TASK_ASSIGNEE_VAR_KEY, StringPool.PERCENT + user.getId() + StringPool.PERCENT);
+        return taskQuery.count();
+    }
+
     @Override
     public PageOutput<PendingTaskVo> pending(PendingTaskPageDto dto) {