|
@@ -1,10 +1,22 @@
|
|
package com.management.platform.service.impl;
|
|
package com.management.platform.service.impl;
|
|
|
|
|
|
-import com.management.platform.entity.Order;
|
|
|
|
-import com.management.platform.mapper.OrderMapper;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
+import com.management.platform.entity.*;
|
|
|
|
+import com.management.platform.mapper.*;
|
|
|
|
+import com.management.platform.service.DepartmentService;
|
|
import com.management.platform.service.OrderService;
|
|
import com.management.platform.service.OrderService;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
|
+import com.management.platform.service.SysFunctionService;
|
|
|
|
+import com.management.platform.util.HttpRespMsg;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
|
+
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
* <p>
|
|
* <p>
|
|
@@ -17,4 +29,113 @@ import org.springframework.stereotype.Service;
|
|
@Service
|
|
@Service
|
|
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
|
|
public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
|
|
|
|
|
|
|
|
+ @Resource
|
|
|
|
+ private OrderMapper orderMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private HttpServletRequest request;
|
|
|
|
+ @Resource
|
|
|
|
+ private UserMapper userMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private SysFunctionService sysFunctionService;
|
|
|
|
+ @Resource
|
|
|
|
+ private DepartmentMapper departmentMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private DepartmentOtherManagerMapper departmentOtherManagerMapper;
|
|
|
|
+ @Resource
|
|
|
|
+ private SysDictMapper sysDictMapper;
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public HttpRespMsg getList(String userId, String orderName,String orderCode, String productCode, Integer pageIndex, Integer pageSize,Integer isDelete) {
|
|
|
|
+ HttpRespMsg msg=new HttpRespMsg();
|
|
|
|
+ User user = userMapper.selectById(request.getHeader("token"));
|
|
|
|
+ List<Department> departments = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, user.getCompanyId()));
|
|
|
|
+ boolean viewAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部订单");
|
|
|
|
+ boolean viewDept = sysFunctionService.hasPriviledge(user.getRoleId(), "查看负责部门订单");
|
|
|
|
+ List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, user.getCompanyId()));
|
|
|
|
+ List<SysDict> sysDictOfOrderType = sysDictMapper.selectList(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCompanyId, user.getCompanyId()).eq(SysDict::getCode, "OrderType"));
|
|
|
|
+ LambdaQueryWrapper<Order> orderLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
|
|
|
+ orderLambdaQueryWrapper.eq(Order::getCompanyId,user.getCompanyId());
|
|
|
|
+ if(isDelete!=null){
|
|
|
|
+ orderLambdaQueryWrapper.eq(Order::getIsDelete,isDelete);
|
|
|
|
+ }else {
|
|
|
|
+ orderLambdaQueryWrapper.eq(Order::getIsDelete,0);
|
|
|
|
+ }
|
|
|
|
+ orderLambdaQueryWrapper.eq(Order::getStatus,1);
|
|
|
|
+ //判断查看全部的权限
|
|
|
|
+ if(!viewAll){
|
|
|
|
+ //判断查看负责部门的权限
|
|
|
|
+ if(!viewDept){
|
|
|
|
+ //都没有就只能看自己创建的
|
|
|
|
+ orderLambdaQueryWrapper.eq(Order::getCreatorId,user.getId());
|
|
|
|
+ }else {
|
|
|
|
+ List<Department> departmentList = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getManagerId, user.getId()));
|
|
|
|
+ List<DepartmentOtherManager> otherManagerList = departmentOtherManagerMapper.selectList(new LambdaQueryWrapper<DepartmentOtherManager>().eq(DepartmentOtherManager::getOtherManagerId, user.getId()));
|
|
|
|
+ List<Integer> deptIds=new ArrayList<>();
|
|
|
|
+ deptIds.add(-1);
|
|
|
|
+ List<Integer> managerDeptIds = departmentList.stream().map(Department::getDepartmentId).distinct().collect(Collectors.toList());
|
|
|
|
+ List<Integer> otherManagerDeptIds = otherManagerList.stream().map(DepartmentOtherManager::getDepartmentId).distinct().collect(Collectors.toList());
|
|
|
|
+ deptIds.addAll(managerDeptIds);
|
|
|
|
+ List<Integer> finalDeptIds1 = deptIds;
|
|
|
|
+ managerDeptIds.forEach(m->{
|
|
|
|
+ List<Integer> branchDepartment = getBranchDepartment(m, departments);
|
|
|
|
+ finalDeptIds1.addAll(branchDepartment);
|
|
|
|
+ });
|
|
|
|
+ deptIds.addAll(otherManagerDeptIds);
|
|
|
|
+ List<Integer> finalDeptIds = deptIds;
|
|
|
|
+ otherManagerDeptIds.forEach(o->{
|
|
|
|
+ List<Integer> branchDepartment = getBranchDepartment(o, departments);
|
|
|
|
+ finalDeptIds.addAll(branchDepartment);
|
|
|
|
+ });
|
|
|
|
+ deptIds=deptIds.stream().distinct().collect(Collectors.toList());
|
|
|
|
+ List<Integer> finalDeptIds2 = deptIds;
|
|
|
|
+ List<String> userIds = userList.stream().filter(u -> finalDeptIds2.contains(u.getDepartmentId())).map(User::getId).collect(Collectors.toList());
|
|
|
|
+ orderLambdaQueryWrapper.in(Order::getCreatorId,userIds);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if(!StringUtils.isEmpty(orderName)){
|
|
|
|
+ orderLambdaQueryWrapper.like(Order::getOrderName,orderName);
|
|
|
|
+ }
|
|
|
|
+ if(!StringUtils.isEmpty(orderCode)){
|
|
|
|
+ orderLambdaQueryWrapper.like(Order::getOrderCode,orderCode);
|
|
|
|
+ }
|
|
|
|
+ if(!StringUtils.isEmpty(productCode)){
|
|
|
|
+ orderLambdaQueryWrapper.inSql(Order::getId,
|
|
|
|
+ "select o.order_id from order_product_detail o left join product p on o.product_id=p.id " +
|
|
|
|
+ "where p.company_id="+user.getCompanyId()+" and p.product_code like '%"+productCode+"%'");
|
|
|
|
+ }
|
|
|
|
+ if(pageIndex==null||pageSize==null){
|
|
|
|
+ pageIndex=-1;
|
|
|
|
+ pageSize=-1;
|
|
|
|
+ }
|
|
|
|
+ IPage<Order> orderIPage = orderMapper.selectPage(new Page<>(pageIndex, pageSize), orderLambdaQueryWrapper);
|
|
|
|
+ List<Order> records = orderIPage.getRecords();
|
|
|
|
+ records.forEach(r->{
|
|
|
|
+ Optional<User> item = userList.stream().filter(u -> u.getId().equals(r.getCreatorId())).findFirst();
|
|
|
|
+ if(item.isPresent()){
|
|
|
|
+ r.setInchargerName(item.get().getName());
|
|
|
|
+ }
|
|
|
|
+ Optional<SysDict> type = sysDictOfOrderType.stream().filter(u -> u.getId().equals(r.getCreatorId())).findFirst();
|
|
|
|
+ if(type.isPresent()){
|
|
|
|
+ r.setTypeName(type.get().getName());
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ Map map=new HashMap();
|
|
|
|
+ map.put("record",records);
|
|
|
|
+ map.put("total",orderIPage.getTotal());
|
|
|
|
+ msg.setData(map);
|
|
|
|
+ return msg;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //递归获取子部门
|
|
|
|
+ public List<Integer> getBranchDepartment(Integer departmentId, List<Department> departmentList) {
|
|
|
|
+ List<Integer> list = new ArrayList<>();
|
|
|
|
+ list.add(departmentId);
|
|
|
|
+ //搜到子部门进行添加
|
|
|
|
+ for (Department department : departmentList) {
|
|
|
|
+ if (departmentId.equals(department.getSuperiorId())) {
|
|
|
|
+ list.addAll(getBranchDepartment(department.getDepartmentId(), departmentList));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
}
|
|
}
|