Browse Source

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

cs 2 years ago
parent
commit
e0788d8b19

+ 26 - 11
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/AuthRedirectController.java

@@ -9,6 +9,7 @@ import com.management.platform.mapper.SysConfigMapper;
 import com.management.platform.mapper.UserMapper;
 import com.management.platform.mapper.WxCorpInfoMapper;
 import com.management.platform.service.UserService;
+import com.management.platform.service.WxCorpInfoService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.MessageUtils;
 import com.management.platform.util.UserAgentUtils;
@@ -53,6 +54,9 @@ public class AuthRedirectController {
     WxCorpInfoMapper wxCorpInfoMapper;
     @Resource
     CompanyMapper companyMapper;
+    @Resource
+    WxCorpInfoService wxCorpInfoService;
+
 
     @RequestMapping("/corpWXAuth")
     public ModelAndView auth(String code, String state) {
@@ -90,17 +94,26 @@ public class AuthRedirectController {
             } else {
                 User curUser = userMapper.selectOne(new QueryWrapper<User>().eq("company_id", wxCorpInfo.getCompanyId()).eq("corpwx_userid", wxUserId));
                 if (curUser == null) {
-                    reqParam.put("errorMsg", MessageUtils.message("user.accountNoExist"));
-                } else if (curUser.getIsActive() == 1) {
-                    companyId = curUser.getCompanyId();
-                    reqParam.put("userId", curUser.getId());
-//                    HttpRespMsg httpRespMsg = userService.loginByUserId(curUser.getId(), request);
-//                    reqParam.put("userInfo", httpRespMsg.data);
+//                    reqParam.put("errorMsg", MessageUtils.message("user.accountNoExist"));
+                    //用户不存在,去生成该用户
+                    if (wxCorpInfo.getSaasSyncContact() == 1) {
+                        curUser = wxCorpInfoService.generateUserInfo(wxCorpInfo.getCompanyId(), openUserId);
+                    }
+                }
+                if (curUser != null) {
+                    if (curUser.getIsActive() == 1) {
+                        companyId = curUser.getCompanyId();
+                        reqParam.put("userId", curUser.getId());
+                    } else {
+                        //提示账号已停用
+                        //reqParam.put("errorMsg", "您的账号已停用,无法登录");
+                        reqParam.put("errorMsg", MessageUtils.message("user.inactive"));
+                    }
                 } else {
-                    //提示账号已停用
-                    //reqParam.put("errorMsg", "您的账号已停用,无法登录");
-                    reqParam.put("errorMsg", MessageUtils.message("user.inactive"));
+                    System.err.println("==生成企业微信User失败==");
+                    reqParam.put("errorMsg", MessageUtils.message("user.accountNoExist"));
                 }
+
             }
         }
         reqParam.put("hasTriedAutoLogin", 1);
@@ -120,9 +133,9 @@ public class AuthRedirectController {
             }
         }
         if (isMobile) {
-            redirecUrl = "https://mobworktime.ttkuaiban.com/#/" + router;
+            redirecUrl = "http://mobworktime.ttkuaiban.com/#/" + router;
         } else {
-            redirecUrl = "https://worktime.ttkuaiban.com/#/" + router;
+            redirecUrl = "http://worktime.ttkuaiban.com/#/" + router;
         }
         ModelAndView modelAndView = new ModelAndView(
                 new RedirectView(redirecUrl), reqParam);
@@ -131,6 +144,8 @@ public class AuthRedirectController {
     }
 
 
+
+
     private HashMap getCompExpireInfo(Integer companyId) {
         Company company = companyMapper.selectById(companyId);
         int version = 1;

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

@@ -73,6 +73,8 @@ public class ProjectController {
     @Resource
     private UserMapper userMapper;
     @Resource
+    private WxCorpInfoMapper wxCorpInfoMapper;
+    @Resource
     private OperationRecordService operationRecordService;
     @RequestMapping("/testRead")
     public HttpRespMsg testRead(String jobId) {
@@ -665,6 +667,7 @@ public class ProjectController {
         HttpRespMsg msg = new HttpRespMsg();
         List<String> heads = new ArrayList<>();
         Company company = companyMapper.selectById(companyId);
+        WxCorpInfo wxCorpInfo=wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id",companyId));
         List<ProjectStage> projectStageList = projectStageMapper.selectList(new QueryWrapper<ProjectStage>().eq("company_id", company.getId()));
         List<ProviderCategory> providerCategoryList = providerCategoryMapper.selectList(new QueryWrapper<ProviderCategory>().eq("company_id", companyId));
         List<ProjectLevel> projectLevelList = projectLevelMapper.selectList(new QueryWrapper<ProjectLevel>().eq("company_id", companyId));
@@ -927,7 +930,8 @@ public class ProjectController {
                                 case "Participants":
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
-                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.manyPeople")));
+                                    comment.setString(
+                                            wxCorpInfo.getSaasSyncContact()!=1? new HSSFRichTextString(MessageUtils.message("excel.manyPeople")):new HSSFRichTextString(MessageUtils.message("excel.manyPeoplePlus")));
                                     cell.setCellComment(comment);
                                     break;
                                 case "项目经理":
@@ -935,7 +939,8 @@ public class ProjectController {
                                     comment = drawing.createCellComment(anchor);
                                     // 输入批注信息
                                     //comment.setString(new HSSFRichTextString("项目经理需存在于参与人中"));
-                                    comment.setString(new HSSFRichTextString(MessageUtils.message("excel.projectManager")));
+                                    comment.setString(
+                                            wxCorpInfo.getSaasSyncContact()!=1?new HSSFRichTextString(MessageUtils.message("excel.projectManager")):new HSSFRichTextString(MessageUtils.message("excel.projectManagerPlus")));
                                     cell.setCellComment(comment);
                                     break;
                                 case "开始日期":

+ 84 - 80
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -136,6 +136,8 @@ public class WeiXinCorpController {
     private SysRoleFunctionService sysRoleFunctionService;
     @Resource
     private UserService userService;
+    @Resource
+    private CompanyReportMapper companyReportMapper;
     @Autowired
     RestTemplate restTemplate;
     @Resource
@@ -501,48 +503,56 @@ public class WeiXinCorpController {
             WXBizMsgCrypt wxcpt = new WXBizMsgCrypt(token, encodingAesKey, corpId);
             String sMsg = wxcpt.DecryptMsg(sReqMsgSig, sReqTimeStamp, sReqNonce, requestBody);
             log.info("解密后===msg: " + sMsg);
-            org.json.JSONObject jsonObject = XML.toJSONObject(sMsg);
-            if(jsonObject.has("Event") && ("subscribe".equals(jsonObject.getString("Event")))){
-                //成员关注应用事件,发生在该企业已经开通应用的情况下。
-                System.out.println("成员关注应用事件!");
-                String corpWxUserId = jsonObject.getString("FromUserName");
-                WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
-                if (wxCorpInfo != null) {
-                    //企业存在,生成对应的用户
-                    Integer companyId = wxCorpInfo.getCompanyId();
-                    JSONObject userObj = getUserInfo(getCorpAccessToken(wxCorpInfo), corpWxUserId);
-                    SysRole defaultRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
+            org.json.JSONObject jsonObject = XML.toJSONObject(sMsg).getJSONObject("xml");
+            if(jsonObject.has("Event")){
+                String event = jsonObject.getString("Event");
+                System.out.println("Event=="+event);
+                if (("subscribe".equals(event))) {
+                    //成员关注应用事件,发生在该企业已经开通应用的情况下。
+                    System.out.println("成员关注应用事件!");
+                    String corpWxUserId = jsonObject.getString("FromUserName");
+                    WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
+                    if (wxCorpInfo != null && wxCorpInfo.getSaasSyncContact() == 1) {
+                        //企业存在,生成对应的用户
+                        Integer companyId = wxCorpInfo.getCompanyId();
+                        User user = wxCorpInfoService.generateUserInfo(companyId, corpWxUserId);
+
+                        new Thread(() -> {
+                            //查询详情进行更新
+                            JSONObject userObj = null;
+                            try {
+                                userObj = getUserInfo(getCorpAccessToken(wxCorpInfo), corpWxUserId);
+                            } catch (Exception exception) {
+                                exception.printStackTrace();
+                            }
+                            System.out.println("关注时获取详情userObj=="+userObj);
+                            //成功获取到通讯录的个人详情
+                            String userId = userObj.getString("userid");
+                            String openUserId = userObj.getString("open_userid");
+                            User userUpdate = new User();
+                            userUpdate.setId(user.getId());
+                            userUpdate.setName(userObj.getString("name"))
+                                    .setPhone(userObj.getString("mobile"))
+                                    .setCorpwxUserid(openUserId)
+                                    .setCorpwxRealUserid(userId)
+                                    .setJobNumber(openUserId.equals(userId)?null:userId);
 
-                    //成功获取到通讯录的个人详情
-                    Long id = SnowFlake.nextId();
-                    //通过getUserInfo接口获取到的json key是小写的
-                    JSONArray department = userObj.getJSONArray("department");
-                    Integer curUserWXDeptid = getMaxDeptIdFromArray(department);
-                    Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
-                    String userId = userObj.getString("userid");
-                    String openUserId = userObj.getString("open_userid");
-                    int cnt = userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", openUserId));
-                    if (cnt == 0) {
-                        //用户不存在
-                        User user = new User()
-                                .setId(id.toString())
-                                .setRoleId(defaultRole.getId())
-                                .setRoleName(defaultRole.getRolename())
-                                .setName(userObj.getString("name"))
-                                .setPhone(userObj.getString("mobile"))
-                                .setPassword(MD5Util.getPassword("000000"))
-                                .setCorpwxUserid(openUserId)
-                                .setCorpwxRealUserid(corpWxUserId)
-                                .setJobNumber(openUserId.equals(userId)?null:userId)
-                                .setColor(ColorUtil.randomColor())
-                                .setCompanyId(companyId);
-                        if (sysDept != null) {
-                            user.setDepartmentId(sysDept.getDepartmentId());
-                            List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-                            user.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
-                        }
-                        userMapper.insert(user);
+                            //通过getUserInfo接口获取到的json key是小写的
+                            JSONArray department = userObj.getJSONArray("department");
+                            Integer curUserWXDeptid = getMaxDeptIdFromArray(department);
+                            Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
+
+                            if (sysDept != null) {
+                                userUpdate.setDepartmentId(sysDept.getDepartmentId());
+                                List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
+                                userUpdate.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
+                            }
+                            userMapper.updateById(userUpdate);
+                            System.out.println("======关注时更新人员======");
+                        }).start();
                     }
+                } else if ("enter_agent".equals(event)) {
+
                 }
             }
         } catch (Exception e) {
@@ -550,11 +560,10 @@ public class WeiXinCorpController {
             // 解密失败,失败原因请查看异常
             e.printStackTrace();
         }
+        System.out.println("dataCallback POST立即返回");
         return "success";
     }
 
-
-
     //通用开发回调处理
     @RequestMapping(value = "/commonDevCallback", method = RequestMethod.GET)
     @ResponseBody
@@ -635,56 +644,35 @@ public class WeiXinCorpController {
                         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectById(corpId);
                         if (wxCorpInfo != null) {
                             Integer companyId = wxCorpInfo.getCompanyId();
-                            SysRole defaultRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
-
                             if (wxCorpInfo.getSaasSyncContact() == 1) {
-                                //直接通过企业微信通讯录同步
+                                //先插入表,不然前端用户立马点击进入应用会找不到人,
+                                User user = wxCorpInfoService.generateUserInfo(companyId, authUserId);
+                                //查询详情进行更新
                                 JSONObject userObj = getUserInfo(getCorpAccessToken(wxCorpInfo), authUserId);
                                 System.out.println("userObj=="+userObj);
                                 //成功获取到通讯录的个人详情
-                                Long id = SnowFlake.nextId();
-                                //通过getUserInfo接口获取到的json key是小写的
-                                JSONArray department = userObj.getJSONArray("department");
-                                Integer curUserWXDeptid = getMaxDeptIdFromArray(department);
-                                Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
                                 String userId = userObj.getString("userid");
                                 String openUserId = userObj.getString("open_userid");
-                                User user = new User()
-                                        .setId(id.toString())
-                                        .setRoleId(defaultRole.getId())
-                                        .setRoleName(defaultRole.getRolename())
-                                        .setName(userObj.getString("name"))
+                                User userUpdate = new User();
+                                userUpdate.setId(user.getId());
+                                userUpdate.setName(userObj.getString("name"))
                                         .setPhone(userObj.getString("mobile"))
-                                        .setPassword(MD5Util.getPassword("000000"))
                                         .setCorpwxUserid(openUserId)
                                         .setCorpwxRealUserid(userId)
-                                        .setJobNumber(openUserId.equals(userId)?null:userId)
-                                        .setColor(ColorUtil.randomColor())
-                                        .setCompanyId(companyId);
+                                        .setJobNumber(openUserId.equals(userId)?null:userId);
+
+                                //通过getUserInfo接口获取到的json key是小写的
+                                JSONArray department = userObj.getJSONArray("department");
+                                Integer curUserWXDeptid = getMaxDeptIdFromArray(department);
+                                Department sysDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", curUserWXDeptid));
+
                                 if (sysDept != null) {
-                                    user.setDepartmentId(sysDept.getDepartmentId());
+                                    userUpdate.setDepartmentId(sysDept.getDepartmentId());
                                     List<Department> allDeptList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", companyId));
-                                    user.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
-                                }
-                                Integer employeeCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active",1));
-                                Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", companyId));
-                                ContactSyncLog contactSyncLog = new ContactSyncLog();
-                                contactSyncLog.setCompanyId(companyId);
-                                System.err.println("企业微信自动同步新增人员日志记录===============================");
-                                if (employeeCnt + 1 > company.getStaffCountMax()){
-                                    contactSyncLog.setResult(0);
-                                    //contactSyncLog.setMsg("公司人员已达上限,请联系客服提高人数上限。");
-                                    contactSyncLog.setMsg(MessageUtils.message("wx.employeeFull"));
-                                    System.err.println("日志信息:"+ contactSyncLog.toString());
-                                    contactSyncLogMapper.insert(contactSyncLog);
-                                }else {
-                                    userMapper.insert(user);
-                                    contactSyncLog.setResult(1);
-                                    //contactSyncLog.setMsg("同步成功");
-                                    contactSyncLog.setMsg(MessageUtils.message("wx.synSuccess"));
-                                    System.err.println("日志信息:"+ contactSyncLog.toString());
-                                    contactSyncLogMapper.insert(contactSyncLog);
+                                    userUpdate.setDepartmentCascade(convertDepartmentIdToCascade(user.getDepartmentId(), allDeptList));
                                 }
+                                userMapper.updateById(userUpdate);
+                                System.out.println("======更新人员======");
                             }
                         }
                     }
@@ -1422,6 +1410,14 @@ public class WeiXinCorpController {
                         projectAuditor.setAuditorName(user.getName());
                         projectAuditor.setProjectId(project.getId());
                         projectAuditorMapper.insert(projectAuditor);
+                        //todo: 生成项目报表服务默认条目
+                        Integer[] arrayInteger=new Integer[]{1,2,3,4,7};
+                        for (Integer integerItem : arrayInteger) {
+                            CompanyReport companyReport=new CompanyReport();
+                            companyReport.setCompanyId(company.getId());
+                            companyReport.setReportFormId(integerItem);
+                            companyReportMapper.insert(companyReport);
+                        }
                         //todo: 生成初始项目相关示例任务分组/任务阶段以及示例任务
                         TaskGroup taskGroup = new TaskGroup();
                         taskGroup.setProjectId(project.getId())
@@ -3346,6 +3342,14 @@ public class WeiXinCorpController {
                         setting.setCompanyId(company.getId());
                         projectBasecostSettingMapper.insert(setting);
                     }
+                    //todo: 生成项目报表服务默认条目
+                    Integer[] arrayInteger=new Integer[]{1,2,3,4,7};
+                    for (Integer integerItem : arrayInteger) {
+                        CompanyReport companyReport=new CompanyReport();
+                        companyReport.setCompanyId(company.getId());
+                        companyReport.setReportFormId(integerItem);
+                        companyReportMapper.insert(companyReport);
+                    }
                     String accessToken = getCorpConcactAccessToken(wxCorpInfo);
                     //获取组织架构 同步部门
                     String departmentInfoResp=wxCorpInfoService.getDepartmentInfoWithApplication(accessToken);

+ 6 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Department.java

@@ -1,5 +1,6 @@
 package com.management.platform.entity;
 
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import com.baomidou.mybatisplus.annotation.TableId;
@@ -15,7 +16,7 @@ import lombok.experimental.Accessors;
  * </p>
  *
  * @author Seyason
- * @since 2022-11-28
+ * @since 2022-07-14
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
@@ -51,21 +52,23 @@ public class Department extends Model<Department> {
     /**
      * 部门负责人id
      */
-    @TableField("manager_id")
+    @TableField(value = "manager_id", updateStrategy = FieldStrategy.IGNORED)
     private String managerId;
 
     /**
      * 日报导入审核人
      */
-    @TableField("report_audit_userid")
+    @TableField(value = "report_audit_userid", updateStrategy = FieldStrategy.IGNORED)
     private String reportAuditUserid;
 
+
     /**
      * 企业微信的部门id
      */
     @TableField("corpwx_deptid")
     private Integer corpwxDeptid;
 
+
     /**
      * 企业微信部门的父部门id
      */

+ 3 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/WxCorpInfoService.java

@@ -3,6 +3,7 @@ package com.management.platform.service;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.management.platform.entity.LeaveSheet;
+import com.management.platform.entity.User;
 import com.management.platform.entity.WxCorpInfo;
 import com.management.platform.util.HttpRespMsg;
 
@@ -52,4 +53,6 @@ public interface WxCorpInfoService extends IService<WxCorpInfo> {
     HttpRespMsg initSuperManager(String corpid, String name);
 
     String getUserInfoWithDepartment(String accessToken, Integer wxDeptid);
+
+    User generateUserInfo(Integer companyId, String corpwxOpenId);
 }

+ 18 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/DingDingServiceImpl.java

@@ -128,6 +128,8 @@ public class DingDingServiceImpl implements DingDingService {
     private DdCallbackMapper ddCallbackMapper;
     @Resource
     private ContactSyncLogMapper contactSyncLogMapper;
+    @Resource
+    private CompanyReportMapper companyReportMapper;
 
 
     @Value("${configEnv.isPrivateDeploy}")
@@ -182,6 +184,14 @@ public class DingDingServiceImpl implements DingDingService {
                     setting.setCompanyId(company.getId());
                     projectBasecostSettingMapper.insert(setting);
                 }
+                //todo: 生成项目报表服务默认条目
+                Integer[] arrayInteger=new Integer[]{1,2,3,4,7};
+                for (Integer integerItem : arrayInteger) {
+                    CompanyReport companyReport=new CompanyReport();
+                    companyReport.setCompanyId(company.getId());
+                    companyReport.setReportFormId(integerItem);
+                    companyReportMapper.insert(companyReport);
+                }
                 //生成费用报销默认条目
                 String[] expenseTypes = Constant.EXPENSE_TYPES;
                 List<String> commonly = new ArrayList<>();
@@ -298,6 +308,14 @@ public class DingDingServiceImpl implements DingDingService {
                 setting.setCompanyId(company.getId());
                 projectBasecostSettingMapper.insert(setting);
             }
+            //todo: 生成项目报表服务默认条目
+            Integer[] arrayInteger=new Integer[]{1,2,3,4,7};
+            for (Integer integerItem : arrayInteger) {
+                CompanyReport companyReport=new CompanyReport();
+                companyReport.setCompanyId(company.getId());
+                companyReport.setReportFormId(integerItem);
+                companyReportMapper.insert(companyReport);
+            }
         }
 
 

+ 47 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/WxCorpInfoServiceImpl.java

@@ -122,6 +122,10 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
     TimeTypeMapper timeTypeMapper;
     @Resource
     SysRoleMapper sysRoleMapper;
+    @Resource
+    CompanyMapper companyMapper;
+    @Resource
+    ContactSyncLogMapper contactSyncLogMapper;
 
 
     //获取服务商provider_access_token
@@ -583,6 +587,49 @@ public class WxCorpInfoServiceImpl extends ServiceImpl<WxCorpInfoMapper, WxCorpI
         return result;
     }
 
+    @Override
+    public synchronized User generateUserInfo(Integer companyId, String corpwxOpenId) {
+        User find = userMapper.selectOne(new QueryWrapper<User>().eq("company_id", companyId).eq("corpwx_userid", corpwxOpenId));
+        if (find == null) {
+            SysRole defaultRole = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", companyId).eq("is_default", 1));
+            Long id = SnowFlake.nextId();
+            User user = new User()
+                    .setId(id.toString())
+                    .setRoleId(defaultRole.getId())
+                    .setRoleName(defaultRole.getRolename())
+                    .setName(corpwxOpenId)
+                    .setPassword(MD5Util.getPassword("000000"))
+                    .setCorpwxUserid(corpwxOpenId)
+                    .setColor(ColorUtil.randomColor())
+                    .setCompanyId(companyId);
+            Integer employeeCnt = userMapper.selectCount(new QueryWrapper<User>().eq("company_id", companyId).eq("is_active",1));
+            Company company = companyMapper.selectOne(new QueryWrapper<Company>().eq("id", companyId));
+            ContactSyncLog contactSyncLog = new ContactSyncLog();
+            contactSyncLog.setCompanyId(companyId);
+            System.err.println("企业微信自动同步新增人员日志记录===============================");
+            if (employeeCnt + 1 > company.getStaffCountMax()){
+                contactSyncLog.setResult(0);
+                //contactSyncLog.setMsg("公司人员已达上限,请联系客服提高人数上限。");
+                contactSyncLog.setMsg(MessageUtils.message("wx.employeeFull"));
+                System.err.println("日志信息:"+ contactSyncLog.toString());
+                contactSyncLogMapper.insert(contactSyncLog);
+                user.setIsActive(0);//先同步过来,但是停用
+                userMapper.insert(user);
+            }else {
+                userMapper.insert(user);
+                contactSyncLog.setResult(1);
+                //contactSyncLog.setMsg("同步成功");
+                contactSyncLog.setMsg(MessageUtils.message("wx.synSuccess"));
+                System.err.println("日志信息:"+ contactSyncLog.toString());
+                contactSyncLogMapper.insert(contactSyncLog);
+            }
+            System.out.println("插入人员成功");
+            find = user;
+        }
+        System.out.println("返回find == "+find);
+        return find;
+    }
+
 
     public void reqPunchRecord(WxCorpInfo corpInfo, long startTime, long endTime, Object[] objects, boolean showLog,String userId,LocalDate date)throws Exception {
         DateTimeFormatter mdFormat = DateTimeFormatter.ofPattern("yyyy/M/d");

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

@@ -215,7 +215,7 @@ public class TimingTask {
         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);
+        HttpRespMsg workDataMsg = dockWithMLD.getResult("http://10.1.10.51:20175/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();
@@ -246,10 +246,10 @@ public class TimingTask {
             userFvTimeService.saveOrUpdateBatch(userFvTimeList);
         }
         //Todo: 获取请假数据
-        HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.41:20170/api/cube/restful/interface/getModeDataPageList/getLeaveRecord", jsonString);
+        HttpRespMsg leaveRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/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")));
+            User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", map.get("rybh")));
             if(user==null){
                 continue;
             }
@@ -284,10 +284,10 @@ public class TimingTask {
             leaveSheetService.saveOrUpdateBatch(leaveSheetList);
         }
         //Todo: 获取出差数据
-        HttpRespMsg travelRecordMsg = dockWithMLD.getResult("http://10.1.10.41:20170/api/cube/restful/interface/getModeDataPageList/getTravelRecord", jsonString);
+        HttpRespMsg travelRecordMsg = dockWithMLD.getResult("http://10.1.10.51:20175/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")));
+            User user = userMapper.selectOne(new QueryWrapper<User>().eq("job_number", map.get("rybh")));
             if(user==null){
                 continue;
             }

+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages.properties

@@ -536,8 +536,10 @@ fileName.leaveRemaining = 假期剩余表
 #excel
 excel.publicProject=是否为公共项目
 excel.projectName=项目名称必填
-excel.manyPeople=多个参与人使用中文逗号(,)隔开
-excel.projectManager=项目经理需存在于参与人中
+excel.manyPeople=多个参与人(“姓名/工号”)使用中文逗号(,)隔开
+excel.manyPeoplePlus=多个参与人(“工号”)使用中文逗号(,)隔开
+excel.projectManager=项目经理(“姓名/工号”)需存在于参与人中
+excel.projectManagerPlus=项目经理(“姓名/工号”)需存在于参与人中
 excel.projectCharge=负责人需存在于参与人中
 excel.dateFormat=日期格式:yyyy-MM-dd
 excel.forExample=例如: 2021-01-01

+ 4 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/resources/i18n/messages_en_US.properties

@@ -536,8 +536,10 @@ fileName.leaveRemaining = Leave Remaining Table
 #excel
 excel.publicProject=Whether it is a public project
 excel.projectName=Project name is required
-excel.manyPeople=Multiple participants are separated by commas (,)
-excel.projectManager=The project manager must exist in the participants
+excel.manyPeople=Multiple participants ("name/jobNumber") are separated by commas (,)
+excel.manyPeoplePlus=Multiple participants ("jobNumber") are separated by commas (,)
+excel.projectManager=The project manager ("name/jobNumber") must exist in the participants
+excel.projectManagerPlus=The project manager ("jobNumber") must exist in the participants
 excel.projectCharge=The person in charge must exist in the participants
 excel.dateFormat=Date Format:yyyy-MM-dd
 excel.forExample=for example: 2021-01-01

+ 94 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/DepartmentMapper.xml

@@ -18,5 +18,99 @@
     <sql id="Base_Column_List">
         department_id, department_name, superior_id, company_id, manager_id, report_audit_userid, corpwx_deptid, corpwx_deptpid
     </sql>
+    <!--根据部门获取成本-->
+    <select id="getCostByDepartment" resultType="java.util.Map">
+        SELECT SUM(b.working_time) AS time, SUM(b.cost) AS money
+        FROM report AS b
+        WHERE b.state = 1
+        <if test="departmentIds != null and departmentIds.size()>0">
+            AND b.dept_id IN
+            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
+                #{departmentId}
+            </foreach>
+        </if>
+        <if test="startDate != null and endDate != null">
+            AND b.create_date between #{startDate} and #{endDate}
+        </if>
+    </select>
 
+    <!--根据人员获取成本-->
+    <select id="getCostByUser" resultType="java.util.Map">
+        SELECT a.id as id, a.name AS user,a.corpwx_userid as corpwxUserId, a.job_number as jobNumber, c.project_name AS project, SUM(b.working_time) AS time, SUM(b.cost) AS
+        money
+        FROM user AS a
+        LEFT JOIN report AS b ON a.id = b.creator_id
+        LEFT JOIN project AS c ON b.project_id = c.id
+        WHERE b.state = 1
+        <if test="departmentIds != null and departmentIds.size()>0">
+            AND b.dept_id IN
+            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
+                #{departmentId}
+            </foreach>
+        </if>
+        <if test="userIds != null">
+            AND a.id IN
+            <foreach collection="userIds" item="userId" index="index" open="(" close=")" separator=",">
+                #{userId}
+            </foreach>
+        </if>
+        <if test="companyId != null">
+            AND a.company_id = #{companyId}
+        </if>
+        <if test="startDate != null and endDate != null">
+            AND b.create_date between #{startDate} and #{endDate}
+        </if>
+        GROUP BY b.project_id, a.id order by a.department_id
+    </select>
+
+    <!-- 根据人员获取自定义的日报数值 -->
+    <select id="getCustomDataByUser" resultType="java.util.Map">
+        SELECT a.id as id, a.name AS user,a.corpwx_userid as corpwxUserid, a.job_number as jobNumber,c.project_name AS project, IFNULL(SUM(b.custom_data),0) AS cost
+        FROM user AS a
+        LEFT JOIN report AS b ON a.id = b.creator_id
+        LEFT JOIN project AS c ON b.project_id = c.id
+        WHERE b.state = 1
+        <if test="departmentIds != null">
+            AND a.department_id IN
+            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
+                #{departmentId}
+            </foreach>
+        </if>
+        <if test="userIds != null">
+            AND a.id IN
+            <foreach collection="userIds" item="userId" index="index" open="(" close=")" separator=",">
+                #{userId}
+            </foreach>
+        </if>
+        <if test="companyId != null">
+            AND a.company_id = #{companyId}
+        </if>
+        <if test="startDate != null and endDate != null">
+            AND b.create_date between #{startDate} and #{endDate}
+        </if>
+        GROUP BY b.project_id, a.id
+        having IFNULL(SUM(b.custom_data),0) > 0
+    </select>
+    <!-- 根据部门获取自定义的日报数值 -->
+    <select id="getDeptCustomDataStatistic" resultType="java.util.Map">
+        SELECT a.department_id as id, a.department_name AS department, c.project_name AS project, IFNULL(SUM(b.custom_data),0) AS cost
+        FROM department AS a
+        LEFT JOIN report AS b ON a.department_id = b.dept_id
+        LEFT JOIN project AS c ON b.project_id = c.id
+        WHERE b.state = 1
+        <if test="companyId!=null">
+            AND a.company_id =#{companyId}
+        </if>
+        <if test="departmentIds != null">
+            AND a.department_id IN
+            <foreach collection="departmentIds" item="departmentId" index="index" open="(" close=")" separator=",">
+                #{departmentId}
+            </foreach>
+        </if>
+        <if test="startDate!=null and endDate!=null">
+            AND b.create_date between #{startDate} and #{endDate}
+        </if>
+        GROUP BY b.project_id, a.department_id
+        having IFNULL(SUM(b.custom_data),0) > 0
+    </select>
 </mapper>