Browse Source

Merge branch 'huangyuan-user' of lift-manager/lift-server into develop

huangyuan 5 years ago
parent
commit
48d89088d4

+ 11 - 0
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/controller/MaintenanceDataStatisticsController.java

@@ -21,6 +21,17 @@ public class MaintenanceDataStatisticsController {
     @Resource
     private MaintenanceDataService maintenanceDataService;
 
+    /**
+     * @param commonRequest 年份
+     * @return
+     * @description 获取维保月份总览数据
+     * @date 2020/5/22 10:31 上午
+     */
+    @RequestMapping("/monthMaintenanceOverView")
+    public RestResponse monthMaintenanceOverView(@RequestBody CommonRequest commonRequest) {
+        return maintenanceDataService.monthMaintenanceOverView(commonRequest);
+    }
+
     /**
      * @param
      * @return

+ 8 - 0
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/dao/mapper/MaintenanceDataMapper.java

@@ -20,4 +20,12 @@ public interface MaintenanceDataMapper {
      * @date 2020/2/4 1:54 下午
      */
     List<MaintenanceDataModel> getMaintenanceDataList(CommonRequest commonRequest);
+
+    /**
+     * @param commonRequest 请求数据
+     * @return 维保数据
+     * @description 获取本年度维保数据
+     * @date 2020/5/22 11:29 上午
+     */
+    List<MaintenanceDataModel> getMonthMaintenanceData(CommonRequest commonRequest);
 }

+ 52 - 17
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/service/MaintenanceDataService.java

@@ -16,6 +16,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collector;
 import java.util.stream.Collectors;
 
 /**
@@ -110,13 +111,12 @@ public class MaintenanceDataService {
     private void setBeyondNum(MaintenanceOverViewResponse maintenanceOverViewResponse,
                               List<MaintenanceDataModel> maintenanceDataModelList) {
         //设置总超期数
-        long totalBeyondNum = maintenanceDataModelList.stream()
-                .filter(maintenanceDataModel -> {
-                    if (maintenanceDataModel.getStatus() != null) {
-                        return maintenanceDataModel.getStatus() == -1;
-                    }
-                    return false;
-                }).count();
+        long totalBeyondNum = maintenanceDataModelList.stream().filter(maintenanceDataModel -> {
+            if (maintenanceDataModel.getStatus() != null) {
+                return maintenanceDataModel.getStatus() == -1;
+            }
+            return false;
+        }).count();
         maintenanceOverViewResponse.setTotalBeyondNum(totalBeyondNum);
         //获取超期的维保记录
         List<MaintenanceDataModel> beyondMaintenanceDataModelList = maintenanceDataModelList.stream()
@@ -127,8 +127,6 @@ public class MaintenanceDataService {
                     return false;
                 }).collect(Collectors.toList());
         if (beyondMaintenanceDataModelList.size() > 0) {
-            //获取当前时间
-            LocalDate now = LocalDate.now();
             //设置超期类型
             setBeyondType(beyondMaintenanceDataModelList);
             //设置计划超期数
@@ -140,14 +138,12 @@ public class MaintenanceDataService {
                         return false;
                     }).count();
             //设置法规超期数
-            long lawBeyondNum = beyondMaintenanceDataModelList.stream()
-                    .filter(maintenanceDataModel -> {
-                        if (maintenanceDataModel.getBeyondType() != null) {
-                            return maintenanceDataModel.getBeyondType() == 2;
-                        }
-                        return false;
-                    })
-                    .count();
+            long lawBeyondNum = beyondMaintenanceDataModelList.stream().filter(maintenanceDataModel -> {
+                if (maintenanceDataModel.getBeyondType() != null) {
+                    return maintenanceDataModel.getBeyondType() == 2;
+                }
+                return false;
+            }).count();
             maintenanceOverViewResponse.setPlanBeyondNum(planBeyondNum);
             maintenanceOverViewResponse.setLawBeyondNum(lawBeyondNum);
         }
@@ -164,4 +160,43 @@ public class MaintenanceDataService {
             maintenanceDataModel.setBeyondType(1);
         });
     }
+
+    /**
+     * @param commonRequest 无
+     * @return 维保月份数据
+     * @description 获取每月维保数据
+     * @date 2020/5/22 10:41 上午
+     */
+    public RestResponse monthMaintenanceOverView(CommonRequest commonRequest) {
+        Map<Integer, Map<Integer, Long>> monthToMaintenance = DataStatisticsUtil.initMaintenanceNum();
+        DataStatisticsUtil.initCommonRequest(commonRequest);
+        List<MaintenanceDataModel> maintenanceDataModelList = maintenanceDataMapper.getMonthMaintenanceData(commonRequest);
+        if (maintenanceDataModelList != null && maintenanceDataModelList.size() > 0) {
+            //月份 -> 维保记录数据
+            Map<Integer, List<MaintenanceDataModel>> monthToMaintenanceData = maintenanceDataModelList.stream()
+                    .collect(Collectors.groupingBy(maintenanceDataModel ->
+                            DataStatisticsUtil.getMonth(maintenanceDataModel.getPlanDate())));
+            //封装数据
+            if (monthToMaintenanceData != null && monthToMaintenanceData.size() > 0) {
+                monthToMaintenance.keySet().forEach(month -> {
+                    Map<Integer, Long> statusToNum = monthToMaintenance.get(month);
+                    List<MaintenanceDataModel> maintenanceDataModels = monthToMaintenanceData.get(month);
+                    if (maintenanceDataModels != null && maintenanceDataModels.size() > 0) {
+                        //计划维保的数量
+                        statusToNum.put(0, (long) maintenanceDataModels.size());
+                        //维保完成的数据
+                        long maintenanceNum = maintenanceDataModels.stream().filter(maintenanceDataModel -> {
+                            if (maintenanceDataModel.getStatus() != null) {
+                                return maintenanceDataModel.getStatus() == 1;
+                            }
+                            return false;
+                        }).count();
+                        statusToNum.put(1, maintenanceNum);
+                    }
+                    monthToMaintenance.put(month, statusToNum);
+                });
+            }
+        }
+        return RestResponse.success(ProjectUtils.transReturnMapToStatisticsKVModel(monthToMaintenance));
+    }
 }

+ 47 - 39
lift-batch-service/src/main/java/cn/com/ty/lift/batch/applet/util/DataStatisticsUtil.java

@@ -3,6 +3,7 @@ package cn.com.ty.lift.batch.applet.util;
 import cn.com.ty.lift.batch.applet.constants.DataStatisticsConstants;
 import cn.com.ty.lift.batch.applet.dao.model.BaseDataModel;
 import cn.com.ty.lift.batch.applet.dao.model.request.CommonRequest;
+import cn.hutool.core.date.DatePattern;
 import com.google.common.collect.Maps;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
@@ -26,44 +27,6 @@ import java.util.stream.Collectors;
  */
 public class DataStatisticsUtil {
 
-    /**
-     * @param
-     * @return
-     * @description 将数据通过公司id分组并放入到redis中
-     * @date 2020/2/5 3:22 下午
-     */
-    public static void putStatisticsDataToRedis(List<? extends BaseDataModel> dataList, RedisTemplate redisTemplate,
-                                                String dataKey) {
-        Map<Long, ? extends List<? extends BaseDataModel>> mtCompanyIdToData = new HashMap<>();
-        if (dataList != null && dataList.size() > 0) {
-            //通过公司id对数据进行分组
-            mtCompanyIdToData = dataList.stream().collect(Collectors.groupingBy(baseDataModel -> {
-                if (baseDataModel.getMtCompanyId() != null) {
-                    return baseDataModel.getMtCompanyId();
-                }
-                return 123456789L;
-            }));
-        }
-        //存放缓存时间为1天
-        redisTemplate.opsForValue().set(dataKey, mtCompanyIdToData, 3L, TimeUnit.DAYS);
-    }
-
-    /**
-     * @param
-     * @return
-     * @description 获取当前公司的数据
-     * @date 2020/2/5 3:26 下午
-     */
-    public static List<? extends BaseDataModel> getStatisticsDataFromRedis(RedisTemplate redisTemplate, String dataKey,
-                                                                           Long mtCompanyId) {
-        Map<Long, ? extends List<? extends BaseDataModel>> mtCompanyIdToData =
-                (Map<Long, ? extends List<? extends BaseDataModel>>) redisTemplate.opsForValue().get(dataKey);
-        if (mtCompanyIdToData != null) {
-            return mtCompanyIdToData.get(mtCompanyId.toString());
-        }
-        return null;
-    }
-
     /**
      * @param
      * @return
@@ -114,7 +77,6 @@ public class DataStatisticsUtil {
 
     /**
      * @param localDateTime 时间数据
-     * @return
      * @description 获取时间的月份值(数字)
      * @date 2020/2/7 3:06 下午
      */
@@ -126,6 +88,19 @@ public class DataStatisticsUtil {
         return localDateTime.getMonthValue();
     }
 
+    /**
+     * @param localDate 时间数据
+     * @description 获取时间的月份值(数字)
+     * @date 2020/2/7 3:06 下午
+     */
+    public static int getMonth(LocalDate localDate) {
+        //为空返回0
+        if (localDate == null) {
+            return 0;
+        }
+        return localDate.getMonthValue();
+    }
+
     /**
      * @param afterTime  较大时间
      * @param beforeTime 较小时间
@@ -294,4 +269,37 @@ public class DataStatisticsUtil {
         }
         return null;
     }
+
+    /**
+     * @return 初始化 map
+     * @description 初始化map数据
+     * @date 2020/5/22 10:38 上午
+     */
+    public static Map<Integer, Map<Integer, Long>> initMaintenanceNum() {
+        Map<Integer, Map<Integer, Long>> monthToMaintenance = new HashMap<>();
+        int nowMonth = LocalDate.now().getMonthValue();
+        for (int month = 1; month <= nowMonth; month++) {
+            Map<Integer, Long> maintenanceStatusToNum = new HashMap<>();
+            //计划维保总数量
+            maintenanceStatusToNum.put(0, 0L);
+            //维保完成数量
+            maintenanceStatusToNum.put(1, 0L);
+            monthToMaintenance.put(month, maintenanceStatusToNum);
+        }
+        return monthToMaintenance;
+    }
+
+    /**
+     * @param commonRequest commonRequest
+     * @description 初始化时间 年初 - 当前时间
+     * @date 2020/5/22 11:24 上午
+     */
+    public static void initCommonRequest(CommonRequest commonRequest) {
+        //设置年初时间
+        String yearStartTime = getYearFirstTime().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN));
+        //设置当前时间
+        String nowEndTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern(DatePattern.NORM_DATETIME_PATTERN));
+        commonRequest.setStartTimeDateStr(yearStartTime);
+        commonRequest.setEndTimeDateStr(nowEndTime);
+    }
 }

+ 16 - 6
lift-batch-service/src/main/resources/mapper/MaintenanceDataMapper.xml

@@ -12,7 +12,6 @@
             mp.lift_id as liftId,
             mp.create_date as createDate,
             mp.work_date as finishDate,
-            mp.count as count,
             mp.status as status,
             plr.first_time as firstDate,
             p.project_name as projectName
@@ -26,15 +25,26 @@
             project p
         on
             mp.project_id = p.id
-        where
-            true
-        <if test = "mtCompanyId !=  null">
-            and mp.mt_company_id = #{mtCompanyId}
-        </if>
+        where mp.mt_company_id = #{mtCompanyId}
         and
             mp.plan_date <![CDATA[ >= ]]> #{startTimeDateStr}
         and
             mp.plan_date <![CDATA[ <= ]]> #{endTimeDateStr}
     </select>
 
+    <!-- 全年维保数据 -->
+    <select id="getMonthMaintenanceData" parameterType="cn.com.ty.lift.batch.applet.dao.model.request.CommonRequest"
+            resultType="cn.com.ty.lift.batch.applet.dao.model.MaintenanceDataModel">
+        select
+            mp.plan_date as planDate,
+            mp.status as status
+        from
+        maintenance_plan mp
+        where mp.mt_company_id = #{mtCompanyId}
+        and
+        mp.plan_date <![CDATA[ >= ]]> #{startTimeDateStr}
+        and
+        mp.plan_date <![CDATA[ <= ]]> #{endTimeDateStr}
+    </select>
+
 </mapper>

+ 1 - 1
lift-business-service/src/main/resources/application.yml

@@ -5,7 +5,7 @@ spring:
   application:
     name: lift-business-service
   profiles:
-    active: test
+    active: prod
   datasource:
     hikari:
       max-lifetime: 1200000 # default: 1800000

+ 8 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/IMtCompanyUserService.java

@@ -66,4 +66,12 @@ public interface IMtCompanyUserService extends IService<MtCompanyUser> {
      * @date 2020-01-06 15:20
      */
     RestResponse getUrgentRepairs(MtCompanyUserRequest mtCompanyUserRequest);
+
+    /**
+     * @param userId 用户id
+     * @param currentCompanyId 当前公司id
+     * @description 更新登录公司标识
+     * @date 2020/5/22 3:31 下午
+     */
+    boolean updateLoginCompanyFlag(Long userId, Long currentCompanyId);
 }

+ 4 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/LoginService.java

@@ -68,6 +68,9 @@ public class LoginService implements ILoginService {
     @Resource
     private IMenuService menuService;
 
+    @Resource
+    private IMtCompanyUserService mtCompanyUserService;
+
     @Override
     public RestResponse register(HttpServletRequest request, UserRequest userRequest) {
         //判断手机号是否为空
@@ -195,6 +198,7 @@ public class LoginService implements ILoginService {
         updateUserInfoInRedis(userRequest, userResponse);
         //在session中设置切换团队后的公司id
         request.getSession().setAttribute(ApiConstants.CURRENT_COMPANY_ID, userRequest.getCompanyId());
+        mtCompanyUserService.updateLoginCompanyFlag(userRequest.getUserId(), userRequest.getCompanyId());
         return RestResponse.success(userResponse, ApiConstants.RESULT_SUCCESS, "切换团队成功");
     }
 

+ 25 - 0
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/MtCompanyUserService.java

@@ -18,6 +18,7 @@ import cn.com.ty.lift.system.user.service.*;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -339,6 +340,30 @@ public class MtCompanyUserService extends ServiceImpl<MtCompanyUserMapper, MtCom
         return RestResponse.success(userIdToUserResponse.values(), ApiConstants.RESULT_SUCCESS, "获取急修工成功");
     }
 
+    @Override
+    @Transactional
+    public boolean updateLoginCompanyFlag(Long userId, Long currentCompanyId) {
+        //重置当前登录公司
+        boolean resetCurrentCompanyFlag = this.update(new UpdateWrapper<MtCompanyUser>()
+                .set("is_current_company", 0)
+                .eq("user_id", userId)
+        );
+        if (!resetCurrentCompanyFlag) {
+            return false;
+        }
+        //将当前登录的公司 登录标识设置为1(即当前登录公司)
+        boolean setCurrentCompanyFlag = this.update(new UpdateWrapper<MtCompanyUser>()
+                .set("is_current_company", 1)
+                .eq("user_id", userId)
+                .eq("mt_company_id", currentCompanyId)
+        );
+        if (!setCurrentCompanyFlag) {
+            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
+            return false;
+        }
+        return true;
+    }
+
 
     public List<MtCompanyUser> listByMtCompany(Long mtCompanyId) {
         LambdaQueryWrapper<MtCompanyUser> lambdaQueryWrapper = Wrappers.lambdaQuery();

+ 36 - 6
lift-system-service/src/main/java/cn/com/ty/lift/system/user/service/impl/UserService.java

@@ -11,6 +11,7 @@ import cn.com.ty.lift.system.user.service.*;
 import cn.com.ty.lift.system.utils.PasswordUtils;
 import cn.com.xwy.boot.web.dto.RestResponse;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.apache.commons.lang3.StringUtils;
@@ -25,6 +26,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @author huangyuan
@@ -139,12 +141,12 @@ public class UserService implements IUserService {
 
     @Override
     public RestResponse addUser(UserRequest userRequest) {
-        if(StringUtils.isBlank(userRequest.getMobile())) {
+        if (StringUtils.isBlank(userRequest.getMobile())) {
             return RestResponse.fail(ApiConstants.RESULT_ERROR, "用户手机号为空");
         }
         UserAccount userAccount = userAccountService.getByMobile(userRequest.getMobile());
-        if(userAccount != null) {
-            return  RestResponse.fail(ApiConstants.RESULT_ERROR, "手机号已经存在");
+        if (userAccount != null) {
+            return RestResponse.fail(ApiConstants.RESULT_ERROR, "手机号已经存在");
         }
         //保存用户信息,成功返回用户账户信息,失败返回空
         userAccount = this.saveUserInfo(userRequest);
@@ -199,11 +201,19 @@ public class UserService implements IUserService {
     @Override
     public UserResponse getLoginUserInfo(Long userId) {
         UserResponse userResponse = getBaseUserInfo(userId);
+        //获取用所在公司列表
         List<MtCompanyUser> mtCompanyUserList = mtCompanyUserService.list(new QueryWrapper<MtCompanyUser>()
                 .eq("user_id", userId)
                 .eq("status", ApiConstants.ApplicationConstants.APPLY_PASS)
                 .eq("delete_flag", ApiConstants.DELETE_NO)
         );
+        //获取上一次用户登录公司列表
+        List<MtCompanyUser> currentCompanyUserList = mtCompanyUserService.list(new QueryWrapper<MtCompanyUser>()
+                .eq("user_id", userId)
+                .eq("status", ApiConstants.ApplicationConstants.APPLY_PASS)
+                .eq("delete_flag", ApiConstants.DELETE_NO)
+                .eq("is_current_company", 1)
+        );
         //获取用户所在公司的id列表
         List<Long> companyIds = ProjectUtils.getAttrList(mtCompanyUserList, "mtCompanyId", null);
         if (companyIds.size() > 0) {
@@ -213,10 +223,11 @@ public class UserService implements IUserService {
             userResponse.setCompanyList(maintenanceCompanyList);
             //用户进入后的默认团队信息
             if (maintenanceCompanyList != null && maintenanceCompanyList.size() > 0) {
-                MaintenanceCompany maintenanceCompany = maintenanceCompanyList.get(0);
-                userResponse.setMaintenanceCompany(maintenanceCompany);
+                MaintenanceCompany currentCompany = getCurrentCompany(currentCompanyUserList, maintenanceCompanyList);
+                mtCompanyUserService.updateLoginCompanyFlag(userId, currentCompany.getId());
+                userResponse.setMaintenanceCompany(currentCompany);
                 //获取用户在默认团队中的角色信息
-                Role role = roleService.getRoleByUserIdAndCompanyId(userId, maintenanceCompany.getId());
+                Role role = roleService.getRoleByUserIdAndCompanyId(userId, currentCompany.getId());
                 userResponse.setRole(role);
                 //获取用户在当前企业下的菜单
                 if (role != null) {
@@ -229,6 +240,25 @@ public class UserService implements IUserService {
         return userResponse;
     }
 
+    /**
+     * @param currentCompanyUserList 用户所在当前公司列表
+     * @return 当前公司
+     * @description 获取当前公司
+     * @date 2020/5/22 3:11 下午
+     */
+    private MaintenanceCompany getCurrentCompany(List<MtCompanyUser> currentCompanyUserList,
+                                                 List<MaintenanceCompany> maintenanceCompanyList) {
+        if (currentCompanyUserList != null && currentCompanyUserList.size() > 0) {
+            long currentCompanyId = currentCompanyUserList.get(0).getMtCompanyId();
+            List<MaintenanceCompany> currentCompanyList = maintenanceCompanyList.stream().filter(maintenanceCompany ->
+                    maintenanceCompany.getId() == currentCompanyId).collect(Collectors.toList());
+            if (currentCompanyList.size() > 0) {
+                return currentCompanyList.get(0);
+            }
+        }
+        return maintenanceCompanyList.get(0);
+    }
+
     @Override
     public Map<Long, UserResponse> getUserResponseByUserIdList(List<Long> userIdList) {
         Map<Long, UserResponse> userIdToUserResponse = new HashMap<>();