Browse Source

Merge branch 'master' of http://47.100.37.243:10080/wutt/manHourHousekeeper

Lijy 2 years ago
parent
commit
6db716817a

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -442,8 +442,8 @@ public class ProjectController {
     }
 
     @RequestMapping("/importData")
-    public HttpRespMsg importData(String userId, MultipartFile file, HttpServletRequest request) {
-        return projectService.importData(userId, file, request);
+    public HttpRespMsg importData(String userId, MultipartFile file,@RequestParam(defaultValue = "0") Integer key,HttpServletRequest request) {
+        return projectService.importData(userId, file,key, request);
     }
 
     @RequestMapping("/getGanttData")

+ 7 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/UserController.java

@@ -36,8 +36,13 @@ public class UserController {
      * password 密码
      */
     @RequestMapping("/loginAdmin")
-    public HttpRespMsg loginAdmin(@RequestParam String username, @RequestParam String password) {
-        return userService.loginAdmin(username, password);
+    public HttpRespMsg loginAdmin(@RequestParam String username, @RequestParam String password ,@RequestParam(defaultValue = "0") Integer key) {
+        return userService.loginAdmin(username, password,key);
+    }
+
+    @RequestMapping("/loginAdminByThirdParty")
+    public HttpRespMsg loginAdminByThirdParty(@RequestParam String jobNumber,@RequestParam String token){
+        return userService.loginAdminByThirdParty(jobNumber,token);
     }
 
     @RequestMapping("/loginByUserId")

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -89,7 +89,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg exportProjectInAndOut(HttpServletRequest request);
 
-    HttpRespMsg importData(String userId, MultipartFile file, HttpServletRequest request);
+    HttpRespMsg importData(String userId, MultipartFile file,Integer key, HttpServletRequest request);
 
     HttpRespMsg getCustomerProjectInAndOut(Integer pageIndex, Integer pageSize, HttpServletRequest request,Integer customerId,Integer projectId);
 

+ 3 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/UserService.java

@@ -19,7 +19,7 @@ import javax.servlet.http.HttpServletRequest;
 public interface UserService extends IService<User> {
     public void setUserRoleMenu(UserVO user);
 
-    HttpRespMsg loginAdmin(String username, String password);
+    HttpRespMsg loginAdmin(String username, String password,Integer key);
 
     HttpRespMsg getUserInfo(String id);
 
@@ -71,4 +71,6 @@ public interface UserService extends IService<User> {
     HttpRespMsg getSimpleActiveUserList(Integer departmentId, HttpServletRequest request);
 
     HttpRespMsg getUserListByRole(HttpServletRequest request);
+
+    HttpRespMsg loginAdminByThirdParty(String jobNumber, String token);
 }

+ 13 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -2885,7 +2885,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
 
 
     @Override
-    public HttpRespMsg importData(String userId, MultipartFile multipartFile, HttpServletRequest request) {
+    public HttpRespMsg importData(String userId, MultipartFile multipartFile,Integer key, HttpServletRequest request) {
         HttpRespMsg msg = new HttpRespMsg();
         User user = userMapper.selectById(userId);
         //然后处理文件
@@ -2993,6 +2993,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         if (!StringUtils.isEmpty(code)) {
                             int cnt = projectMapper.selectCount(new QueryWrapper<Project>().eq("project_code", code).eq("company_id", user.getCompanyId()));
                             if (cnt > 0) {
+                                if(key==0){
+                                    continue;
+                                }
 //                            throw new Exception("项目编号存在重复: " + code);
                                 existCodeList.add(code);
                                 //跳过编号重复的数据
@@ -3124,7 +3127,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 msg.data = "成功导入"+importCount+"条数据。";
                 if (existCodeList.size() > 0) {
                     String collect = existCodeList.stream().collect(Collectors.joining(","));
-                    msg.data += "自动更新"+existCodeList.size()+"条已存在项目编码:"+collect;
+                    if(key==1){
+                        msg.data += "自动更新"+existCodeList.size()+"条已存在项目编码:"+collect;
+                    }else msg.data += "自动跳过"+existCodeList.size()+"条已存在项目编码:"+collect;
                 }
                 OperationRecord operationRecord=new OperationRecord();
                 operationRecord.setCompanyId(user.getCompanyId());
@@ -3408,6 +3413,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                         if (!StringUtils.isEmpty(code)) {
                             int cnt = projectMapper.selectCount(new QueryWrapper<Project>().eq("project_code", code).eq("company_id", user.getCompanyId()));
                             if (cnt > 0) {
+                                if(key==0){
+                                    continue;
+                                }
 //                            throw new Exception("项目编号存在重复: " + code);
                                 existCodeList.add(code);
                                 //跳过编号重复的数据
@@ -3974,7 +3982,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
                 msg.data = "成功导入"+importCount+"条数据。";
                 if (existCodeList.size() > 0) {
                     String collect = existCodeList.stream().collect(Collectors.joining(","));
-                    msg.data += "自动更新"+existCodeList.size()+"条已存在项目编码:"+collect;
+                    if(key==1){
+                        msg.data += "自动更新"+existCodeList.size()+"条已存在项目编码:"+collect;
+                    }else msg.data += "自动跳过"+existCodeList.size()+"条已存在项目编码:"+collect;
                 }
                 OperationRecord operationRecord=new OperationRecord();
                 operationRecord.setCompanyId(user.getCompanyId());

+ 32 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -141,9 +141,11 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private LocaleInformationMapper localeInformationMapper;
     @Resource
     private CompanyReportMapper companyReportMapper;
+    @Resource
+    private ThirdPartyInterfaceMapper thirdPartyInterfaceMapper;
     //登录网页端
     @Override
-    public HttpRespMsg loginAdmin(String username, String password) {
+    public HttpRespMsg loginAdmin(String username, String password,Integer key) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         //根据电话号码获取账号信息
         List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("phone", username));
@@ -157,7 +159,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
             httpRespMsg.setError(MessageUtils.message("user.duplicate"));
         } else if (userList.get(0).getIsActive() == 0) {
             httpRespMsg.setError(MessageUtils.message("user.inactive"));
-        } else if (MD5Util.getPassword(password).equals(userList.get(0).getPassword())) {
+        } else if ((key==0?MD5Util.getPassword(password):password).equals(userList.get(0).getPassword())) {
             //查看该公司非会员公司,只能允许试用三天,超时不可登录
             Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", userList.get(0).getCompanyId()));
             //公司未办理会员
@@ -209,6 +211,34 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         return httpRespMsg;
     }
 
+    @Override
+    public HttpRespMsg loginAdminByThirdParty(String jobNumber, String token) {
+        HttpRespMsg httpRespMsg;
+        List<ThirdPartyInterface> thirdPartyInterfaceList = thirdPartyInterfaceMapper.selectList(new QueryWrapper<ThirdPartyInterface>().eq("token", token));
+        if(thirdPartyInterfaceList!=null&&thirdPartyInterfaceList.size()>0){
+            ThirdPartyInterface thirdPartyInterface = thirdPartyInterfaceList.get(0);
+            if(thirdPartyInterface.getExpireTime().isBefore(LocalDateTime.now())){
+                httpRespMsg=new HttpRespMsg();
+                httpRespMsg.setError("token失效");
+                return httpRespMsg;
+            }
+            Integer companyId = thirdPartyInterface.getCompanyId();
+            User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", jobNumber).eq("company_id", companyId));
+            if(user!=null){
+                httpRespMsg=loginAdmin(user.getPhone(),user.getPassword(),1);
+            }else{
+                httpRespMsg=new HttpRespMsg();
+                httpRespMsg.setError("工号为"+jobNumber+"的员工在工时系统中不存在");
+                return httpRespMsg;
+            }
+        }else{
+            httpRespMsg=new HttpRespMsg();
+            httpRespMsg.setError("token错误");
+            return httpRespMsg;
+        }
+        return httpRespMsg;
+    }
+
 
     public void setUserRoleMenu(UserVO user) {
         Integer roleId = user.getRoleId();

+ 110 - 8
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/task/TimingTask.java

@@ -6,10 +6,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.injector.methods.SelectById;
 import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
-import com.management.platform.service.CompanyDingdingService;
-import com.management.platform.service.DingDingService;
-import com.management.platform.service.ThirdPartyInterfaceService;
-import com.management.platform.service.WxCorpInfoService;
+import com.management.platform.service.*;
+import com.management.platform.util.DockWithMLD;
+import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.RedisUtil;
 import com.management.platform.util.WorkDayCalculateUtils;
 import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
@@ -32,11 +31,9 @@ import org.springframework.web.client.RestTemplate;
 import javax.annotation.Resource;
 import java.security.SecureRandom;
 import java.text.DecimalFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.Period;
+import java.time.*;
 import java.time.format.DateTimeFormatter;
+import java.time.temporal.TemporalAccessor;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -107,6 +104,12 @@ public class TimingTask {
     private ThirdPartyInterfaceMapper thirdPartyInterfaceMapper;
     @Resource
     private ThirdPartyInterfaceService thirdPartyInterfaceService;
+    @Resource
+    private UserFvTimeService userFvTimeService;
+    @Resource
+    private LeaveSheetService leaveSheetService;
+    @Resource
+    private BusinessTripService businessTripService;
 
     private static final List<Integer> VALID_TOKEN_CHARS = new ArrayList<>();
     static {
@@ -186,6 +189,104 @@ public class TimingTask {
         }
     }
 
+    //每天2:11 同步钉钉用户前2天到未来30天时间段的打卡,请假,出差数据
+    @Scheduled(cron = "0 30 2 ? * *")
+    private void synFanWeiWorkData() {
+        if (isDev) return;
+        List<TimeType> timeTypeList = timeTypeMapper.selectList(new QueryWrapper<TimeType>().eq("sync_fanwei", 1));
+        List<Integer> compIds = timeTypeList.stream().map(TimeType::getCompanyId).collect(Collectors.toList());
+        if(compIds.size()<0){
+            return;
+        }
+        DockWithMLD dockWithMLD=new DockWithMLD();
+        JSONObject jsonObject=new JSONObject();
+        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        DateTimeFormatter dtf1 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("HH:mm:ss");
+        LocalDateTime yesterday = LocalDateTime.now().minusDays(2);
+        String startDate = dtf.format(yesterday);
+        String endDate = dtf.format(yesterday.plusDays(32));
+        jsonObject.put("startDate",startDate);
+        jsonObject.put("endDate",endDate);
+        String jsonString = jsonObject.toJSONString();
+        List<UserFvTime> userFvTimeList=new ArrayList<>();
+        List<LeaveSheet> leaveSheetList=new ArrayList<>();
+        List<BusinessTrip> businessTripList=new ArrayList<>();
+        //Todo: 获取打卡数据
+        HttpRespMsg workDataMsg = dockWithMLD.getResult("http://10.1.10.41:20170/api/cube/restful/interface/getModeDataPageList/getWorkData", jsonString);
+        List<Map<String,Object>> workDataList= (List<Map<String, Object>>) workDataMsg.data;
+        for (Map<String, Object> map : workDataList) {
+            UserFvTime userFvTime=new UserFvTime();
+            User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", map.get("userId")));
+            if(user==null){
+                continue;
+            }
+            if(compIds.contains(user.getCompanyId())){
+                userFvTime.setWorkDate((LocalDate) map.get("workDate"));
+                LocalTime startTime = LocalTime.parse(String.valueOf(map.get("startTime")), dtf2);
+                LocalTime endTime = LocalTime.parse(String.valueOf(map.get("startTime")), dtf2);
+                Duration between = Duration.between(startTime, endTime);
+                userFvTime.setStartTime((String) map.get("startTime"));
+                userFvTime.setEndTime((String) map.get("endTime"));
+                userFvTime.setCompanyId(user.getCompanyId());
+                userFvTime.setUserId(user.getId());
+                userFvTime.setWorkHours((float) between.toHours());
+                userFvTimeList.add(userFvTime);
+            }
+        }
+        userFvTimeService.saveBatch(userFvTimeList);
+        //Todo: 获取请假数据
+        HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.41:20170/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
+        List<Map<String,Object>> leaveRecordList= (List<Map<String, Object>>) leaveRecordMsg.data;
+        for (Map<String, Object> map : leaveRecordList) {
+            User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", map.get("userId")));
+            if(user==null){
+                continue;
+            }
+            if(compIds.contains(user.getCompanyId())){
+               LeaveSheet leaveSheet=new LeaveSheet();
+               leaveSheet.setCompanyId(user.getCompanyId());
+               leaveSheet.setStatus(0);
+               leaveSheet.setOwnerId(user.getId());
+               leaveSheet.setOwnerName(user.getName());
+               leaveSheet.setStartDate(LocalDate.parse(String.valueOf(map.get("startDate")),dtf));
+               leaveSheet.setEndDate(LocalDate.parse(String.valueOf(map.get("endDate")),dtf));
+               leaveSheet.setTimeType(Integer.parseInt(String.valueOf(map.get("timeType"))));
+               leaveSheet.setTimeDays((Float) map.get("timeDays"));
+               leaveSheet.setTimeHours((Float) map.get("timeHours"));
+               leaveSheet.setLeaveType(Integer.parseInt(String.valueOf(map.get("leaveType"))));
+               leaveSheet.setProcinstId(String.valueOf(map.get("procinstId")));
+               leaveSheet.setGmtFinished(String.valueOf(map.get("gmtFinished")));
+               leaveSheetList.add(leaveSheet);
+            }
+        }
+        leaveSheetService.saveBatch(leaveSheetList);
+        //Todo: 获取出差数据
+        HttpRespMsg travelRecordMsg = dockWithMLD.getResult("http://10.1.10.41:20170/api/cube/restful/interface/getModeDataPageList/getTravelRecord", jsonString);
+        List<Map<String,Object>> travelRecordList= (List<Map<String, Object>>) travelRecordMsg.data;
+        for (Map<String, Object> map : travelRecordList) {
+            User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", map.get("userId")));
+            if(user==null){
+                continue;
+            }
+            if(compIds.contains(user.getCompanyId())){
+                BusinessTrip businessTrip=new BusinessTrip();
+                businessTrip.setCompanyId(user.getCompanyId());
+                businessTrip.setStartDate(LocalDate.parse(String.valueOf(map.get("startDate")),dtf));
+                businessTrip.setEndDate(LocalDate.parse(String.valueOf(map.get("endDate")),dtf));
+                businessTrip.setWay(Integer.valueOf(String.valueOf(map.get("way"))));
+                businessTrip.setCityFrom((String) map.get("cityFrom"));
+                businessTrip.setCityTo((String) map.get("cityTo"));
+                businessTrip.setGoBack(Integer.valueOf(String.valueOf(map.get("goBack"))));
+                businessTrip.setDayCount(Integer.valueOf(String.valueOf(map.get("dayCount"))));
+                businessTrip.setProcinstId((String) map.get("procinstId"));
+                businessTrip.setGmtFinished((String)map.get("gmtFinished"));
+                businessTripList.add(businessTrip);
+            }
+        }
+        businessTripService.saveBatch(businessTripList);
+    }
+
     //每天1:00 同步昨天的微信请假信息
     @Scheduled(cron = "0 0 1 ? * *")
     private void synWxLeave() throws Exception {
@@ -314,6 +415,7 @@ public class TimingTask {
     @Scheduled(fixedRate = 1800 * 1000)
     public void  pushToken(){
         if(isDev) return;
+        if(isPrivateDeploy)return;
         int passwordLength = 30;
         LocalDateTime localDateTime=LocalDateTime.now();
         List<ThirdPartyInterface> thirdPartyInterfaceList = thirdPartyInterfaceMapper.selectList(null);

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/i18n/en.json

@@ -1390,5 +1390,6 @@
   "shan-chu-ji-lu": "Delete Record",
   "wanttodeletefirst": "Please select the record to delete first",
   "xuan-ze": "choose",
-  "dui-yi-you-xiang-mu-jin-hang-xin-xi-geng-xin": "Update information on existing projects"
+  "dui-yi-you-xiang-mu-jin-hang-xin-xi-geng-xin": "Update information on existing projects",
+  "dao-chu-qing-jia-dan": "Export leave request"
 }

+ 2 - 1
fhKeeper/formulahousekeeper/timesheet/src/i18n/zh.json

@@ -1390,5 +1390,6 @@
   "profitratetrendchart": "利润率趋势图",
   "li-run-shuai": "利润率(%)",
   "bai-fen-bi": "百分比",
-  "dui-yi-you-xiang-mu-jin-hang-xin-xi-geng-xin": "对已有项目进行信息更新"
+  "dui-yi-you-xiang-mu-jin-hang-xin-xi-geng-xin": "对已有项目进行信息更新",
+  "dao-chu-qing-jia-dan": "导出请假单"
 }

+ 1 - 1
fhKeeper/formulahousekeeper/timesheet/src/views/leave/list.vue

@@ -209,7 +209,7 @@
                 <el-date-picker v-model="createDate" type="daterange" :range-separator="$t('other.to')" :start-placeholder="$t('time.startDate')" :end-placeholder="$t('time.endDate')" @change="chufas()" value-format="yyyy-MM-dd" :placeholder="$t('optiondate')" size="small" clearable style="width:280px"></el-date-picker>
             </div>
             <div>
-              <el-button type="primary" size="small" style="margin-left:20px" @click="exportLeave()">导出请假单</el-button>
+              <el-button type="primary" size="small" style="margin-left:20px" @click="exportLeave()">{{ $t('dao-chu-qing-jia-dan') }}</el-button>
             </div>
           </div>
             <el-table v-loading="loading" :data="tableData" style="width: 100%" height="94%">