|
@@ -1335,4 +1335,120 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
saveNotifyToApplier(sheet, user);
|
|
|
return new HttpRespMsg();
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<String> queryExportFileZipList(ExpenseSheet sheet, Integer projectId, String startDate, String endDate) {
|
|
|
+ QueryWrapper<ExpenseSheet> queryWrapper = new QueryWrapper<ExpenseSheet>();
|
|
|
+ //当前用户
|
|
|
+ String token = request.getHeader("TOKEN");
|
|
|
+ queryWrapper.eq("company_id", sheet.getCompanyId()).orderByDesc("id");
|
|
|
+ ExpenseAuditSetting expenseAuditSetting = expenseAuditSettingMapper.selectById(sheet.getCompanyId());
|
|
|
+ ArrayList<String> fileNameList = new ArrayList<>();
|
|
|
+ if (!StringUtils.isEmpty(sheet.getCode())) {
|
|
|
+ queryWrapper.eq("code", sheet.getCode());
|
|
|
+ }
|
|
|
+ //增加状态
|
|
|
+ if (sheet.getStatus() != null) {
|
|
|
+ queryWrapper.eq("status", sheet.getStatus());
|
|
|
+ }
|
|
|
+ if(sheet.getSendState()!=null){
|
|
|
+ queryWrapper.eq("send_state",sheet.getSendState());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (expenseAuditSetting == null || expenseAuditSetting.getAuditType() == 0) {
|
|
|
+ if (sheet.getStatus() != null && sheet.getStatus() == 1) {
|
|
|
+ //待审核列表,检查是否有权限
|
|
|
+ User user = userMapper.selectById(token);
|
|
|
+ List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "费用审核");
|
|
|
+ if (functionList.size() == 0) {
|
|
|
+ //无权查看待审核
|
|
|
+ queryWrapper.eq("id", -1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (!StringUtils.isEmpty(sheet.getOwnerId())) {
|
|
|
+ queryWrapper.eq("owner_id", sheet.getOwnerId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if(expenseAuditSetting.getAuditType() == 1){
|
|
|
+ //增加按项目经理审核模式下,项目经理可以查看相关费用报销单的条件
|
|
|
+ if (sheet.getStatus() != null) {
|
|
|
+ //取待审核的
|
|
|
+ //项目经理审核模式下,只能查看自己项目的费用报销单
|
|
|
+ List<Integer> projectIds = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", token)).stream().map(Project::getId).collect(Collectors.toList());
|
|
|
+ System.out.println("项目经理的项目id"+projectIds);
|
|
|
+ if (projectIds.size() > 0) {
|
|
|
+ List<Integer> expenseIds = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().in("project_id", projectIds)).stream().map(ExpenseItem::getExpenseId).distinct().collect(Collectors.toList());
|
|
|
+ System.out.println("项目经理的项目的费用报销单id"+expenseIds);
|
|
|
+ queryWrapper.in("id", expenseIds);
|
|
|
+ } else {
|
|
|
+ //没有项目的项目经理,不显示任何数据
|
|
|
+ queryWrapper.eq("id", -1);
|
|
|
+ }
|
|
|
+ //按选择的人员过滤
|
|
|
+ if (!StringUtils.isEmpty(sheet.getOwnerId())) {
|
|
|
+ queryWrapper.eq("owner_id", sheet.getOwnerId());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //按人员过滤
|
|
|
+ if (!StringUtils.isEmpty(sheet.getOwnerId())) {
|
|
|
+ queryWrapper.eq("owner_id", sheet.getOwnerId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }else if(expenseAuditSetting.getAuditType() == 2){
|
|
|
+ if (sheet.getStatus() != null) {
|
|
|
+ //增加多层审核人审核模式 过滤第一或者第二审核人为当前用户的数据
|
|
|
+ queryWrapper.and(wrapper->wrapper.and(wr->wr.eq("first_checker_id",token).eq("review_process",0)).or(wr->wr.eq("second_checker_id",token).eq("review_process",1)));
|
|
|
+ if (!StringUtils.isEmpty(sheet.getOwnerId())) {
|
|
|
+ queryWrapper.eq("owner_id", sheet.getOwnerId());
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ //按人员过滤
|
|
|
+ if (!StringUtils.isEmpty(sheet.getOwnerId())) {
|
|
|
+ queryWrapper.eq("owner_id", sheet.getOwnerId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!StringUtils.isEmpty(sheet.getType())) {
|
|
|
+ queryWrapper.eq("type", sheet.getType());
|
|
|
+ }
|
|
|
+ if (!StringUtils.isEmpty(startDate) && !StringUtils.isEmpty(endDate)) {
|
|
|
+ queryWrapper.between("create_date", startDate, endDate);
|
|
|
+ }
|
|
|
+ if (projectId!=null){
|
|
|
+ QueryWrapper<ExpenseItem> q = new QueryWrapper<ExpenseItem>();
|
|
|
+ q.eq("project_id",projectId);
|
|
|
+ List<ExpenseItem> expenseItems = expenseItemMapper.selectList(q);
|
|
|
+ if (expenseItems.size()==0){
|
|
|
+ return new ArrayList<String>();
|
|
|
+ }else {
|
|
|
+ List<Integer> expenseIds = expenseItems.stream().map(ExpenseItem::getExpenseId).collect(Collectors.toList());
|
|
|
+ queryWrapper.in("id",expenseIds);
|
|
|
+ return getStrings(queryWrapper);
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ return getStrings(queryWrapper);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private ArrayList<String> getStrings(QueryWrapper<ExpenseSheet> queryWrapper) {
|
|
|
+ List<ExpenseSheet> records= expenseSheetMapper.selectList(queryWrapper);
|
|
|
+ ArrayList<String> fileNames = new ArrayList<>();
|
|
|
+ if (!records.isEmpty()){
|
|
|
+ List<Integer> sheetIdList = records.stream().map(ExpenseSheet::getId).distinct().collect(Collectors.toList());
|
|
|
+ if (!sheetIdList.isEmpty()){
|
|
|
+ QueryWrapper<ExpenseItem> itemQueryWrapper = new QueryWrapper<ExpenseItem>().in("expense_id", sheetIdList);
|
|
|
+ List<ExpenseItem> items = expenseItemMapper.selectList(itemQueryWrapper);
|
|
|
+ if (!items.isEmpty()){
|
|
|
+ for (ExpenseItem item : items) {
|
|
|
+ if (org.apache.commons.lang3.StringUtils.isNotEmpty(item.getPic())){
|
|
|
+ String[] picNames = item.getPic().split(",");
|
|
|
+ fileNames.addAll(Arrays.asList(picNames));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return fileNames;
|
|
|
+ }
|
|
|
}
|