Explorar el Código

提交工时管家 已提交列表增加部门筛选
客户管家修改提交

Min hace 11 meses
padre
commit
8345c47b14

+ 1 - 33
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/SalesOrderController.java

@@ -44,10 +44,6 @@ public class SalesOrderController {
     @Resource
     private OrderProductDetailService orderProductDetailService;
     @Resource
-    private ProductMapper productMapper;
-    @Resource
-    private SysDictService sysDictService;
-    @Resource
     private TaskService taskService;
     @Resource
     private AuditLogCenterService auditLogCenterService;
@@ -261,35 +257,7 @@ public class SalesOrderController {
      * */
     @RequestMapping("/productWithOrder")
     public HttpRespMsg productWithOrder(Integer id){
-        HttpRespMsg msg=new HttpRespMsg();
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, companyId));
-        List<SysDict> sysDictOfProductUnit = sysDictService.list(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCode, "ProductUnit"));
-        List<SysDict> sysDictOfProductType = sysDictService.list(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCode, "ProductType"));
-        List<OrderProductDetail> orderProductDetails = orderProductDetailService.list(new LambdaQueryWrapper<OrderProductDetail>().eq(OrderProductDetail::getOrderId, id));
-        List<Integer> productIds = orderProductDetails.stream().map(OrderProductDetail::getProductId).collect(Collectors.toList());
-        productIds.add(-1);
-        List<Product> productList = productMapper.selectList(new LambdaQueryWrapper<Product>().in(Product::getId, productIds));
-        productList.forEach(p->{
-            Optional<User> user = userList.stream().filter(u -> u.getId().equals(p.getInchargerId())).findFirst();
-            if(user.isPresent()){
-                p.setInchargerName(user.get().getName());
-            }
-            Optional<User> creator = userList.stream().filter(u -> u.getId().equals(p.getCreatorId())).findFirst();
-            if(creator.isPresent()){
-                p.setCreatorName(creator.get().getName());
-            }
-            Optional<SysDict> unit = sysDictOfProductUnit.stream().filter(u -> u.getId().equals(p.getUnit())).findFirst();
-            if(unit.isPresent()){
-                p.setUnitName(unit.get().getName());
-            }
-            Optional<SysDict> type = sysDictOfProductType.stream().filter(u -> u.getId().equals(p.getType())).findFirst();
-            if(type.isPresent()){
-                p.setTypeName(type.get().getName());
-            }
-        });
-        msg.setData(productList);
-        return msg;
+        return salesOrderService.productWithOrder(id);
     }
 
 

+ 3 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/entity/Product.java

@@ -151,6 +151,9 @@ public class Product extends Model<Product> {
     @TableField(exist = false)
     private String unitName;
 
+    @TableField(exist = false)
+    private OrderProductDetail orderProductDetail;
+
 
     @Override
     protected Serializable pkVal() {

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

@@ -28,4 +28,6 @@ public interface SalesOrderService extends IService<SalesOrder> {
     HttpRespMsg dataSummary(Integer queryType, Integer dateType);
 
     HttpRespMsg businessOpportunityStage(Integer queryType, Integer dateType);
+
+    HttpRespMsg productWithOrder(Integer id);
 }

+ 48 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/SalesOrderServiceImpl.java

@@ -81,6 +81,12 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
     @Resource
     private ContactsService contactsService;
     @Resource
+    private ProductMapper productMapper;
+    @Resource
+    private OrderProductDetailService orderProductDetailService;
+    @Resource
+    private SysDictService sysDictService;
+    @Resource
     private ClueMapper clueMapper;
     @Value(value = "${upload.path}")
     private String path;
@@ -178,6 +184,9 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
         }
         IPage<SalesOrder> orderIPage = salesOrderMapper.selectPage(new Page<>(pageIndex, pageSize), orderLambdaQueryWrapper);
         List<SalesOrder> records = orderIPage.getRecords();
+        List<Integer> orderIds = records.stream().map(SalesOrder::getId).distinct().collect(Collectors.toList());
+        orderIds.add(-1);
+        List<OrderProductDetail> orderProductDetails = orderProductDetailService.list(new LambdaQueryWrapper<OrderProductDetail>().in(OrderProductDetail::getOrderId, orderIds));
         records.forEach(r->{
             Optional<User> item = userList.stream().filter(u -> u.getId().equals(r.getCreatorId())).findFirst();
             if(item.isPresent()){
@@ -199,6 +208,8 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
             if(businessOpportunity.isPresent()){
                 r.setBusinessOpportunityName(businessOpportunity.get().getName());
             }
+            List<OrderProductDetail> details = orderProductDetails.stream().filter(o -> o.getOrderId().equals(r.getId())).collect(Collectors.toList());
+            r.setOrderProductDetailList(details);
         });
         Map map=new HashMap();
         map.put("record",records);
@@ -850,6 +861,43 @@ public class SalesOrderServiceImpl extends ServiceImpl<SalesOrderMapper, SalesOr
         return msg;
     }
 
+    @Override
+    public HttpRespMsg productWithOrder(Integer id) {
+        HttpRespMsg msg=new HttpRespMsg();
+        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
+        List<User> userList = userMapper.selectList(new LambdaQueryWrapper<User>().eq(User::getCompanyId, companyId));
+        List<SysDict> sysDictOfProductUnit = sysDictService.list(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCode, "ProductUnit"));
+        List<SysDict> sysDictOfProductType = sysDictService.list(new LambdaQueryWrapper<SysDict>().eq(SysDict::getCode, "ProductType"));
+        List<OrderProductDetail> orderProductDetails = orderProductDetailService.list(new LambdaQueryWrapper<OrderProductDetail>().eq(OrderProductDetail::getOrderId, id));
+        List<Integer> productIds = orderProductDetails.stream().map(OrderProductDetail::getProductId).collect(Collectors.toList());
+        productIds.add(-1);
+        List<Product> productList = productMapper.selectList(new LambdaQueryWrapper<Product>().in(Product::getId, productIds));
+        productList.forEach(p->{
+            Optional<User> user = userList.stream().filter(u -> u.getId().equals(p.getInchargerId())).findFirst();
+            if(user.isPresent()){
+                p.setInchargerName(user.get().getName());
+            }
+            Optional<User> creator = userList.stream().filter(u -> u.getId().equals(p.getCreatorId())).findFirst();
+            if(creator.isPresent()){
+                p.setCreatorName(creator.get().getName());
+            }
+            Optional<SysDict> unit = sysDictOfProductUnit.stream().filter(u -> u.getId().equals(p.getUnit())).findFirst();
+            if(unit.isPresent()){
+                p.setUnitName(unit.get().getName());
+            }
+            Optional<SysDict> type = sysDictOfProductType.stream().filter(u -> u.getId().equals(p.getType())).findFirst();
+            if(type.isPresent()){
+                p.setTypeName(type.get().getName());
+            }
+            Optional<OrderProductDetail> first = orderProductDetails.stream().filter(o -> o.getProductId().equals(p.getId())).findFirst();
+            if(first.isPresent()){
+                p.setOrderProductDetail(first.get());
+            }
+        });
+        msg.setData(productList);
+        return msg;
+    }
+
     @Override
     public HttpRespMsg businessOpportunityStage(Integer queryType, Integer dateType) {
         HttpRespMsg msg=new HttpRespMsg();

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ReportController.java

@@ -2087,8 +2087,8 @@ public class ReportController {
     }
 
     @RequestMapping("/getUserDailyWorkTime")
-    public HttpRespMsg getUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate) throws Exception{
-        return reportService.getUserDailyWorkTime(request, startDate, endDate);
+    public HttpRespMsg getUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate,Integer hasReportDeptId) throws Exception{
+        return reportService.getUserDailyWorkTime(request, startDate, endDate,hasReportDeptId);
     }
 
     @RequestMapping("/getUserDailyWorkTimeReminder")
@@ -2112,8 +2112,8 @@ public class ReportController {
     }
 
     @RequestMapping("/exportUserDailyWorkTime")
-    public HttpRespMsg exportUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate) throws Exception{
-        return reportService.exportUserDailyWorkTime(request, startDate, endDate);
+    public HttpRespMsg exportUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate,Integer hasReportDeptId) throws Exception{
+        return reportService.exportUserDailyWorkTime(request, startDate, endDate,hasReportDeptId);
     }
 
     @RequestMapping("/isWorkDay")

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

@@ -62,9 +62,9 @@ public interface ReportService extends IService<Report> {
 
     HttpRespMsg listByStateDepartment(Integer state, Integer projectId, String date, HttpServletRequest request);
 
-    HttpRespMsg getUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate) throws Exception;
+    HttpRespMsg getUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate,Integer hasReportDeptId) throws Exception;
 
-    HttpRespMsg exportUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate) throws Exception;
+    HttpRespMsg exportUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate,Integer hasReportDeptId) throws Exception;
 
     HttpRespMsg importData(Integer companyId, Integer withCheckIn, MultipartFile file, HttpServletRequest request);
 

+ 15 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -4226,7 +4226,7 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg getUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate) throws Exception {
+    public HttpRespMsg getUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate,Integer hasReportDeptId) throws Exception {
         String token = request.getHeader("TOKEN");
         User user = userMapper.selectById(token);
         Integer companyId = user.getCompanyId();
@@ -4261,6 +4261,10 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
         //String[] weekDayCHN = {"周一","周二","周三","周四","周五","周六","周日"};
         String[] weekDayCHN = {MessageUtils.message("week.Monday"),MessageUtils.message("week.Tuesday"),MessageUtils.message("week.Wednesday"),MessageUtils.message("week.Thursday"),MessageUtils.message("week.Friday"),MessageUtils.message("week.Saturday"),MessageUtils.message("week.Sunday")};
         HttpRespMsg msg = new HttpRespMsg();
+        List<Integer> branchDepartment = null;
+        if(hasReportDeptId != null){
+            branchDepartment = departmentService.getBranchDepartment(Integer.valueOf(hasReportDeptId),departmentList);
+        }
         List<User> allRangeUserList = new ArrayList<>();
         List<Map<String, Object>> list = null;
         //分角色权限:管理员看全部的,部门负责人看自己部门的,个人只能看自己的。
@@ -4271,12 +4275,12 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
             //检查是不是部门负责人(含主要负责人和其他负责人)
             List<Integer> allDeptIds = getAllVisibleDeptIdList(user, allDeptList);
             if (allDeptIds.size() > 0) {
-                list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, allDeptIds, null,user.getId());
+                list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, branchDepartment==null?allDeptIds:branchDepartment, null,user.getId());
                 //部门负责人看自己部门相关的 以及自己的
                 allRangeUserList = userMapper.selectList(new QueryWrapper<User>().in("department_id", allDeptIds).or().eq("id",user.getId()).orderByDesc("department_id"));
             } else {
                 //看自己的所负责的项目相关人员的
-                list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, null, user.getId(),user.getId());
+                list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, branchDepartment, user.getId(),user.getId());
                 //项目相关的人员列表
                 List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().eq("incharger_id", user.getId()));
                 List<Project> collect = projectList.stream().collect(Collectors.toList());
@@ -4289,11 +4293,16 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                 }
             }
         } else {
-            list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, null, null,user.getId());
+            list = reportMapper.getUserDailyWorkTime(companyId, startDate, endDate, branchDepartment, null,user.getId());
             //管理员看全公司所有人
             allRangeUserList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId).orderByDesc("department_id"));
         }
         List<User> needRangeUserList=new ArrayList<>();
+        //按人员过滤
+        if(branchDepartment!=null&&branchDepartment.size()>0){
+            List<Integer> finalBranchDepartment = branchDepartment;
+            allRangeUserList=allRangeUserList.stream().filter(at-> finalBranchDepartment.contains(at.getDepartmentId())).collect(Collectors.toList());
+        }
         for (User u : allRangeUserList) {
             if(u.getInactiveDate()==null||(u.getInactiveDate()!=null&&u.getInactiveDate().isAfter(LocalDate.parse(startDate))||u.getIsActive()==1)){
                 needRangeUserList.add(u);
@@ -4478,8 +4487,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
     }
 
     @Override
-    public HttpRespMsg exportUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate) throws Exception {
-        HttpRespMsg msg = getUserDailyWorkTime(request, startDate, endDate);
+    public HttpRespMsg exportUserDailyWorkTime(HttpServletRequest request, String startDate, String endDate,Integer hasReportDeptId) throws Exception {
+        HttpRespMsg msg = getUserDailyWorkTime(request, startDate, endDate,hasReportDeptId);
         Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", companyId));
         CompanyDingding dingding = companyDingdingService.getOne(new QueryWrapper<CompanyDingding>().eq("company_id", companyId));

+ 4 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/workReport/daily.vue

@@ -1423,6 +1423,8 @@
                     <el-button slot="append" @click="searchScreen(0)" icon="el-icon-search"></el-button>
                 </el-input>
                 <selectCat v-if="user.userNameNeedTranslate == '1'" :filterable="true"  :searchBoxTop="'1'" :size="'small'" :subject="usersList" :subjectId="usersListId" :distinction="'12'" :clearable="true" @selectCal="selectCal"></selectCat>
+                <el-cascader v-if="user.userNameNeedTranslate != 1" :size="'small'" v-model="deptIdForHasReport" placeholder="请选择部门" :options="departmentList" :props="{ checkStrictly: true, value: 'id' }" clearable style="width: 200px;" @change="showMonthWorkTime()"></el-cascader>
+                <vueCascader :size="'small'" :widthStr="'200'" :clearable="true" :subject="departmentList" :radios="true" :distinction="'1'" @vueCasader="vueCasader" v-if="user.userNameNeedTranslate == 1" :selectNameChuan="$t('other.allDepartments')" @change="showMonthWorkTime()"></vueCascader>
             </div>
             <div style="float: right; vertical-align: middle;height:32px">
               <el-link
@@ -2469,6 +2471,7 @@
                 userReportDeptList: [],
                 isReminder:true,
                 reportLogCheckDialog:false,
+                deptIdForHasReport:[],
             };
         },
         watch: {
@@ -4025,6 +4028,7 @@
         let parameter={
             startDate: this.WorktimeDatepickValue[0],
             endDate: this.WorktimeDatepickValue[1],
+            hasReportDeptId:this.deptIdForHasReport.length>0?this.deptIdForHasReport[this.deptIdForHasReport.length-1]:null,
         }
       this.http.post(
         "/report/getUserDailyWorkTime",