|
@@ -70,6 +70,8 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
@Resource
|
|
|
private ExpenseItemService expenseItemService;
|
|
|
@Resource
|
|
|
+ private DepartmentMapper departmentMapper;
|
|
|
+ @Resource
|
|
|
private ExpenseItemMapper expenseItemMapper;
|
|
|
@Resource
|
|
|
private ProjectMapper projectMapper;
|
|
@@ -108,7 +110,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
|
|
|
|
|
|
@Override
|
|
|
- public HttpRespMsg add(ExpenseSheet sheet, String items, String userId) {
|
|
|
+ public HttpRespMsg add(ExpenseSheet sheet, String items, String userId) throws Exception {
|
|
|
HttpRespMsg msg = new HttpRespMsg();
|
|
|
User user = userMapper.selectById(userId);
|
|
|
ExpenseAuditSetting auditSetting = expenseAuditSettingMapper.selectById(user.getCompanyId());
|
|
@@ -318,6 +320,30 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
JSONObject obj = array.getJSONObject(i);
|
|
|
ExpenseItem expenseItem = JSONObject.toJavaObject(obj, ExpenseItem.class);
|
|
|
expenseItem.setExpenseId(sheet.getId());
|
|
|
+ //按项目经理审核时,非项目是部门负责人审核,需要设置审核人
|
|
|
+ if (auditSetting != null && auditSetting.getAuditType() == 1) {
|
|
|
+ Project project = projectMapper.selectById(expenseItem.getProjectId());
|
|
|
+ if (project.getIsPublic() == 0) {
|
|
|
+ if (project.getInchargerId() == null) {
|
|
|
+ throw new Exception("请先设置项目【"+project.getProjectName()+"】的项目经理");
|
|
|
+ } else {
|
|
|
+ expenseItem.setAuditorId(project.getInchargerId());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //非项目
|
|
|
+ User owner = userMapper.selectById(sheet.getOwnerId());
|
|
|
+ if (owner.getDepartmentId() == null) {
|
|
|
+ throw new Exception("请先设置报销人【"+owner.getName()+"】的部门");
|
|
|
+ } else {
|
|
|
+ Department department = departmentMapper.selectById(owner.getDepartmentId());
|
|
|
+ if (department.getManagerId() == null) {
|
|
|
+ throw new Exception("请先设置部门【"+department.getDepartmentName()+"】的负责人");
|
|
|
+ } else {
|
|
|
+ expenseItem.setAuditorId(department.getManagerId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
itemList.add(expenseItem);
|
|
|
}
|
|
|
}
|
|
@@ -547,13 +573,9 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
} 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);
|
|
|
+ //项目经理审核模式下,只能查看自己需要审核的单据
|
|
|
+ List<Integer> expenseIds = expenseItemMapper.selectList(new QueryWrapper<ExpenseItem>().eq("auditor_id", token)).stream().map(ExpenseItem::getExpenseId).distinct().collect(Collectors.toList());
|
|
|
+ if (expenseIds.size() > 0) {
|
|
|
queryWrapper.in("id", expenseIds);
|
|
|
} else {
|
|
|
//没有项目的项目经理,不显示任何数据
|
|
@@ -724,7 +746,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
for (ExpenseItem expenseItem : list) {
|
|
|
for (Project project : Project) {
|
|
|
if ((project.getId().equals(expenseItem.getProjectId()))){
|
|
|
- if (token.equals(project.getInchargerId())) {
|
|
|
+ if (token.equals(expenseItem.getAuditorId())) {
|
|
|
expenseItem.setIsIncharger(1);
|
|
|
} else {
|
|
|
expenseItem.setIsIncharger(0);
|
|
@@ -732,11 +754,10 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
expenseItem.setProjectName(project.getProjectName());
|
|
|
//获取审核人姓名
|
|
|
if (!(expenseAuditSetting == null || expenseAuditSetting.getAuditType() == 0)) {
|
|
|
- expenseItem.setProjectManagerId(project.getInchargerId());
|
|
|
- if (project.getInchargerId() != null) {
|
|
|
- User user = userMapper.selectById(project.getInchargerId());
|
|
|
+ if (expenseItem.getAuditorId() != null) {
|
|
|
+ User user = userMapper.selectById(expenseItem.getAuditorId());
|
|
|
if (user != null) {
|
|
|
- expenseItem.setProjectManagerName(user.getName());
|
|
|
+ expenseItem.setAuditorName(user.getName());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -979,6 +1000,7 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
List<SysRichFunction> functionList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "费用审核");
|
|
|
List<ExpenseMainType> expenseMainTypeList = expenseMainTypeService.list(new QueryWrapper<ExpenseMainType>().eq("company_id", user.getCompanyId()));
|
|
|
List<ExpenseType> expenseTypeList = expenseTypeMapper.selectList(new QueryWrapper<ExpenseType>().eq("company_id",user.getCompanyId()));
|
|
|
+ ExpenseAuditSetting expenseAuditSetting = expenseAuditSettingMapper.selectById(user.getCompanyId());
|
|
|
//由于第一行需要指明报销人列对应的标题
|
|
|
XSSFRow firstRow = sheet.getRow(2);
|
|
|
if (firstRow == null) {
|
|
@@ -1158,6 +1180,25 @@ public class ExpenseSheetServiceImpl extends ServiceImpl<ExpenseSheetMapper, Exp
|
|
|
|| (StringUtils.isEmpty(pro.getProjectName())?"":pro.getProjectName()).equals(codeCell.getStringCellValue())).findFirst();
|
|
|
if (project.isPresent()) {
|
|
|
expenseItem.setProjectId(project.get().getId());
|
|
|
+ if (expenseAuditSetting != null && expenseAuditSetting.getAuditType() == 1) {
|
|
|
+ //按项目和非项目分别设置审核人
|
|
|
+ if (project.get().getIsPublic() == 0) {
|
|
|
+ expenseItem.setAuditorId(project.get().getInchargerId());
|
|
|
+ } else {
|
|
|
+ //非项目,设置部门负责人为审核人
|
|
|
+ User user1 = userList.stream().filter(us -> us.getId().equals(user.getId())).findFirst().get();
|
|
|
+ if (user1.getDepartmentId() == null) {
|
|
|
+ throw new Exception("当前用户没有部门信息");
|
|
|
+ } else {
|
|
|
+ Department dept = departmentMapper.selectById(user1.getDepartmentId());
|
|
|
+ if (dept.getManagerId() == null) {
|
|
|
+ throw new Exception("当前用户所在部门没有负责人");
|
|
|
+ } else {
|
|
|
+ expenseItem.setAuditorId(dept.getManagerId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
expenseItem.setExpenseId(expenseSheet.getId());
|
|
|
if(happenDateCell!=null && !happenDateCell.toString().trim().equals("")){
|