Kaynağa Gözat

费用导出

cs 2 yıl önce
ebeveyn
işleme
eb7a002684

+ 13 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ExpenseSheetController.java

@@ -92,5 +92,18 @@ public class ExpenseSheetController {
     public HttpRespMsg importData(HttpServletRequest request,MultipartFile[] files){
         return expenseSheetService.importData(request,files);
     }
+
+    @RequestMapping("/exportList")
+    public HttpRespMsg exportList(ExpenseSheet sheet,String startDate, String endDate) {
+        String token = request.getHeader("TOKEN");
+        User user = userMapper.selectById(token);
+        List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "查看全部报销单");
+        if (functionList.size() == 0) {
+            //普通员工只能看自己的
+            sheet.setOwnerId(user.getId());
+        }
+        sheet.setCompanyId(user.getCompanyId());
+        return expenseSheetService.exportList(sheet, startDate, endDate);
+    }
 }
 

+ 2 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ExpenseSheetService.java

@@ -32,4 +32,6 @@ public interface ExpenseSheetService extends IService<ExpenseSheet> {
     HttpRespMsg deny(Integer id,String denyReason);
 
     HttpRespMsg importData(HttpServletRequest request, MultipartFile[] files);
+
+    HttpRespMsg exportList(ExpenseSheet sheet, String startDate, String endDate);
 }

+ 0 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DepartmentServiceImpl.java

@@ -799,7 +799,6 @@ public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper, Departm
             //合计
             List<String> sumRow = new ArrayList<String>();
             //sumRow.add("合计");
-            //sumRow.add("合计");
             sumRow.add(MessageUtils.message("entry.total"));
             sumRow.add("");
             if(functionTimeList.size()>0){

+ 120 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ExpenseSheetServiceImpl.java

@@ -7,14 +7,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jayway.jsonpath.internal.function.numeric.Sum;
 import com.management.platform.constant.Constant;
 import com.management.platform.entity.*;
 import com.management.platform.entity.vo.SysRichFunction;
 import com.management.platform.mapper.*;
-import com.management.platform.service.ExpenseItemService;
-import com.management.platform.service.ExpenseSheetService;
-import com.management.platform.service.InformationService;
-import com.management.platform.service.WxCorpInfoService;
+import com.management.platform.service.*;
 import com.management.platform.util.ExcelUtil;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
@@ -26,6 +24,7 @@ import org.apache.poi.xssf.usermodel.XSSFCell;
 import org.apache.poi.xssf.usermodel.XSSFRow;
 import org.apache.poi.xssf.usermodel.XSSFSheet;
 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.StringUtils;
@@ -54,6 +53,8 @@ import java.util.stream.Collectors;
 @Service
 @Transactional
 public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, ExpenseSheet> implements ExpenseSheetService {
+    @Value(value = "${upload.path}")
+    private String path;
     @Resource
     private HttpServletRequest request;
     @Resource
@@ -82,6 +83,8 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
     private InformationService informationService;
     @Resource
     private SysRoleFunctionMapper sysRoleFunctionMapper;
+    @Resource
+    private ExcelExportService excelExportService;
     public static final String[] sheetTypes = {"一般费用","差旅费","外包费用"};
     @Override
     public HttpRespMsg add(ExpenseSheet sheet, String items, String userId) {
@@ -635,4 +638,117 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
         }
         return msg;
     }
+
+    /**
+     * 费用报销单据的导出
+     * @param sheet
+     * @param startDate
+     * @param endDate
+     * @return
+     */
+    @Override
+    public HttpRespMsg exportList(ExpenseSheet sheet, String startDate, String endDate) {
+        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", sheet.getCompanyId()));
+        QueryWrapper<ExpenseSheet> queryWrapper = new QueryWrapper<ExpenseSheet>();
+        queryWrapper.eq("company_id", sheet.getCompanyId()).orderByDesc("id");
+        if (!StringUtils.isEmpty(sheet.getCode())) {
+            queryWrapper.eq("code", sheet.getCode());
+        }
+        //增加状态
+        if (sheet.getStatus() != null) {
+            queryWrapper.eq("status", sheet.getStatus());
+        }
+        if (!StringUtils.isEmpty(sheet.getOwnerId())) {
+            queryWrapper.eq("owner_id", sheet.getOwnerId());
+        }
+        if (sheet.getType() != null) {
+            queryWrapper.eq("type", sheet.getType());
+        }
+        if (!StringUtils.isEmpty(startDate) && !StringUtils.isEmpty(endDate)) {
+            queryWrapper.between("create_date", startDate, endDate);
+        }
+        List<ExpenseSheet> records = expenseSheetMapper.selectList(queryWrapper);
+        List<List<String>> allList=new ArrayList<>();
+        List<String> titleList=new ArrayList<>();
+//        titleList.add("票据编号");
+//        titleList.add("金额(元)");
+//        titleList.add("报销人");
+//        titleList.add("填报日期");
+//        titleList.add("发票张数");
+//        titleList.add("票据类型");
+//        titleList.add("备注");
+//        titleList.add("状态");
+        titleList.add(MessageUtils.message("Reimbursement.No"));
+        titleList.add(MessageUtils.message("Reimbursement.amount"));
+        titleList.add(MessageUtils.message("excel.reiPer"));
+        titleList.add(MessageUtils.message("excel.fillDate"));
+        titleList.add(MessageUtils.message("Reimbursement.numberOfInvoices"));
+        titleList.add(MessageUtils.message("Reimbursement.billType"));
+        titleList.add(MessageUtils.message("excel.remark"));
+        titleList.add(MessageUtils.message("leave.status"));
+        allList.add(titleList);
+        BigDecimal sumAmount = new BigDecimal(0);
+        for (ExpenseSheet record : records) {
+            List<String> item=new ArrayList<>();
+            item.add(record.getCode());
+            item.add(record.getTotalAmount()==null?"0":record.getTotalAmount()+"");
+            if (wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
+                item.add("$userName=" + record.getOwnerName() +"$");
+            }else {
+                item.add(record.getOwnerName());
+            }
+            item.add(record.getCreateDate()==null?"":record.getCreateDate()+"");
+            item.add(record.getTicketNum()==null?"0":record.getTicketNum()+"");
+            switch (record.getType()){
+                case 0:
+                    item.add("一般费用");
+                    break;
+                case 1:
+                    item.add("差旅费用");
+                    break;
+                case 2:
+                    item.add("外包费用");
+                    break;
+                default:
+                    item.add("");
+            }
+            item.add(record.getRemark()==null?"":record.getRemark());
+            switch (record.getStatus()){
+                case 0:
+                    item.add("审核通过");
+                    break;
+                case 1:
+                    item.add("待审核");
+                    break;
+                case 2:
+                    item.add("驳回");
+                    break;
+                case 3:
+                    item.add("已撤回");
+                    break;
+                default:
+                    item.add("");
+            }
+            allList.add(item);
+            sumAmount = sumAmount.add(BigDecimal.valueOf(record.getTotalAmount()));
+        }
+        //合计
+        List<String> sumRow = new ArrayList<String>();
+        //sumRow.add("合计");
+        sumRow.add(MessageUtils.message("entry.total"));
+        sumRow.add(sumAmount.setScale(2,BigDecimal.ROUND_UP)+"");
+        allList.add(sumRow);
+        HttpRespMsg msg = new HttpRespMsg();
+        //生成excel文件导出
+        //String fileName = "费用报销单据列表"+System.currentTimeMillis();
+        String fileName = MessageUtils.message("fileName.expense")+System.currentTimeMillis();
+        try {
+            return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileName , allList, path);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+//        String resp = ExcelUtil.exportGeneralExcelByTitleAndList(fileName , dataList, path);
+//        msg.data = resp;
+        return msg;
+    }
 }

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -309,6 +309,10 @@ Reimbursement.costTypeNull=费用类型不能为空
 Reimbursement.dataNull=填报日期不能为空
 Reimbursement.PeopleNull=报销人[{0}]不存在
 Reimbursement.TypeError=当前费用类型[{0}]中不存在[{1}]类型
+Reimbursement.No = 票据编号
+Reimbursement.amount = 金额(元)
+Reimbursement.numberOfInvoices = 发票张数
+Reimbursement.billType = 票据类型
 #薪资相关
 salary.uploadErrorByAdopt={0}月薪资已审核通过,无法上传。
 salary.lackAndUpAgain=缺少[{0}]的薪资成本,请修改数据重新上传
@@ -534,6 +538,7 @@ fileName.laborHour=工时对比
 fileName.monthWork=月度工时表
 fileName.deptJoinPro=部门参与项目情况表
 fileName.leaveRemaining = 假期剩余表
+fileName.expense = 费用报销单据列表
 #excel
 excel.publicProject=是否为非项目
 excel.projectName=项目名称必填

+ 5 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -309,6 +309,10 @@ Reimbursement.costTypeNull=Expense type cannot be empty
 Reimbursement.dataNull=The filling date cannot be blank
 Reimbursement.PeopleNull=Reimbursement applicant [{0}] does not exist.
 Reimbursement.TypeError=The [{1}] type does not exist in the current expense type [{0}].
+Reimbursement.No = Bill No
+Reimbursement.amount = Amount
+Reimbursement.numberOfInvoices = Number of invoices
+Reimbursement.billType = Bill type
 #薪资相关
 salary.uploadErrorByAdopt={0} The monthly salary has been approved and cannot be uploaded.
 salary.lackAndUpAgain=The salary cost of [{0}] is missing, please modify the data and upload again.
@@ -534,6 +538,7 @@ fileName.laborHour=Labor hour comparison
 fileName.monthWork=Monthly man hour Table
 fileName.deptJoinPro=Department Participation in Projects
 fileName.leaveRemaining = Leave Remaining Table
+fileName.expense = Expense reimbursement document list
 #excel
 excel.publicProject=Whether it is a non project
 excel.projectName=Project name is required