Browse Source

添加供应商导入模块,修改日报和企业微信同步相关处理

seyason 2 years ago
parent
commit
b493594610

+ 20 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/CompanyController.java

@@ -41,7 +41,7 @@ public class CompanyController {
     private UserMapper userMapper;
     @Resource
     private CompanyDingdingMapper companyDingdingMapper;
-    public static final HashMap<String, Long> syncTimeLog = new HashMap();
+    public static final HashMap<String, Long> syncLog = new HashMap();
 
 
     @RequestMapping("/dataMigration")
@@ -58,15 +58,28 @@ public class CompanyController {
             User user = userMapper.selectById(token);
             //判断时间
             long now = System.currentTimeMillis();
-            if (syncTimeLog.get(token) == null) {
-                syncTimeLog.put(token, now);
+            if (syncLog.get(token) == null) {
+                syncLog.put(token, now);
+                syncLog.put(user.getCompanyId()+"_status", 1L);
             } else {
-                if (now - syncTimeLog.get(token) < 30*1000) {
+                if (now - syncLog.get(token) < 30*1000) {
                     msg.setError("调用过于频繁,请稍后再试");
                     return msg;
                 } else {
-                    //更新最近同步的时间
-                    syncTimeLog.put(token, now);
+                    //检查是否当前公司有同步的正在进行
+                    if (syncLog.get(user.getCompanyId()+"_status") == null) {
+                        //没有进行中的任务,更新最近同步的时间
+                        syncLog.put(token, now);
+                        syncLog.put(user.getCompanyId()+"_status", 1L);
+                    } else {
+                        if (now - syncLog.get(token) > 0.5*3600*1000) {
+                            //更新最近同步的时间
+                            syncLog.put(token, now);
+                        } else {
+                            msg.setError("同步正在进行中,请稍后再试");
+                            return msg;
+                        }
+                    }
                 }
             }
 
@@ -74,6 +87,7 @@ public class CompanyController {
             if (companyDingding != null) {
                 System.out.println("===========同步钉钉===========");
                 String rest = dingDingService.syncCorpMembs(companyDingding.getCorpid());
+                syncLog.remove(user.getCompanyId()+"_status");
                 if (rest.startsWith("调用失败")) {
                     msg.setError(rest);
                 } else {

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

@@ -110,6 +110,7 @@ public class ProviderInfoController {
             }).map(Project::getProjectName).collect(Collectors.joining(","));
             if (!StringUtils.isEmpty(containProjectNames)) {
                 msg.setError("无法删除,以下项目已关联此供应商:"+containProjectNames);
+                return msg;
             }
         }
         int r = providerInfoMapper.delete(new QueryWrapper<ProviderInfo>().eq("id", id).eq("company_id", user.getCompanyId()));
@@ -127,7 +128,7 @@ public class ProviderInfoController {
             String token = request.getHeader("TOKEN");
             User user = userMapper.selectById(token);
 
-            List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, project_name, provider_ids, provider_names").eq("company_id", user.getCompanyId()));
+            List<Project> projectList = projectMapper.selectList(new QueryWrapper<Project>().select("id, project_name, provider_ids, provider_names").eq("company_id", user.getCompanyId()).isNotNull("provider_ids"));
             if(projectList.size()>0){
                 String str = null;
                 for (String providerId: list) {
@@ -145,12 +146,6 @@ public class ProviderInfoController {
                     msg.setError(str);
                     return msg;
                 }
-
-            }
-            int r = providerInfoMapper.delete(new QueryWrapper<ProviderInfo>().eq("id", list.get(0)).eq("company_id", user.getCompanyId()));
-            if (r <= 0) {
-                msg.setError("无权删除");
-                return msg;
             }
             providerInfoMapper.deleteBatchIds(list);
         }

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

@@ -16,10 +16,7 @@ import com.management.platform.service.UserService;
 import com.management.platform.util.HttpRespMsg;
 import com.management.platform.util.WorkDayCalculateUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;

+ 31 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -1213,10 +1213,19 @@ public class WeiXinCorpController {
             //检查用户是否已经存在
             User oldUser = userMapper.selectOne(new QueryWrapper<User>().select("id, name").eq("corpwx_userid", curUserid).eq("company_id", companyId));
             if (oldUser == null) {
-                userMapper.insert(user);
-            } else if (!oldUser.getName().equals(user.getName())){
+                //先检查姓名+手机号是否存在,如果存在,则更新corpwxId
+                User sameNameUser = userMapper.selectOne(new QueryWrapper<User>().eq("name", user.getName()).eq("mobile", user.getPhone()).eq("company_id", companyId).isNull("corpwx_userid").last("limit 1"));
+                if (sameNameUser != null) {
+                    User upUser = new User();
+                    upUser.setId(sameNameUser.getId());
+                    upUser.setCorpwxUserid(user.getCorpwxUserid());
+                    userMapper.updateById(upUser);
+                } else {
+                    userMapper.insert(user);
+                }
+            } else if (oldUser.getRoleName().equals("超级管理员") && !oldUser.getName().equals(user.getName())){
                 //姓名不一致,需要更新
-                System.out.println("===更新姓名==="+user.getName());
+                System.out.println("===更新超管姓名==="+user.getName());
                 user.setId(oldUser.getId());
                 oldUser.setName(user.getName());
                 userMapper.updateById(oldUser);
@@ -1334,8 +1343,25 @@ public class WeiXinCorpController {
                     }
                 }
                 //检查用户是否已经存在
-                if (userMapper.selectCount(new QueryWrapper<User>().eq("corpwx_userid", curUserid).eq("company_id", companyId)) == 0) {
-                    userMapper.insert(user);
+                User oldUser = userMapper.selectOne(new QueryWrapper<User>().eq("corpwx_userid", curUserid).eq("company_id", companyId));
+                if (oldUser == null) {
+                    //先检查姓名是否存在,如果存在,则更新corpwxId
+                    User sameNameUser = userMapper.selectOne(new QueryWrapper<User>().eq("name", user.getName()).eq("mobile", user.getPhone()).eq("company_id", companyId).isNull("corpwx_userid").last("limit 1"));
+                    if (sameNameUser != null) {
+                        User upUser = new User();
+                        upUser.setId(sameNameUser.getId());
+                        upUser.setCorpwxUserid(user.getCorpwxUserid());
+                        userMapper.updateById(upUser);
+                    } else {
+                        //姓名也不存在,则插入新记录
+                        userMapper.insert(user);
+                    }
+                } else if (oldUser.getRoleName().equals("超级管理员") && !oldUser.getName().equals(user.getName())){
+                    //姓名不一致,需要更新
+                    System.out.println("===更新超管姓名==="+user.getName());
+                    user.setId(oldUser.getId());
+                    oldUser.setName(user.getName());
+                    userMapper.updateById(oldUser);
                 }
             }
         }

+ 6 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -2391,6 +2391,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         if (timeType.getCustomDegreeActive() == 1) {
             headList.add(timeType.getCustomDegreeName());
         }
+        if (company.getPackageProvider() == 1) {
+            headList.add("供应商");
+        }
         if (company.getPackageProject() == 1) {
             //项目管理专业版以上的,导出的数据更全面
             headList.add("客户");
@@ -2421,6 +2424,9 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
             if (timeType.getCustomDegreeActive() == 1) {
                 rowData.add((String)map.get("associate_degree_names"));
             }
+            if (company.getPackageProvider() == 1) {
+                rowData.add((String)map.get("provider_names"));
+            }
             if (company.getPackageProject() == 1) {
                 Integer level = (Integer)map.get("level");
                 if (level == null) {

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ProjectMapper.xml

@@ -655,7 +655,7 @@
     <select id="getExportData" resultType="java.util.HashMap" >
         SELECT project.id, project_name, project_code,category_name,is_public,plan_start_date, d.name AS incharger_name,GROUP_CONCAT(u.name) AS participators,
         plan_end_date, progress, LEVEL, STATUS, finish_date, creator_id, creator_name, create_date, contract_amount,
-        customer_name, associate_degree_names
+        customer_name, associate_degree_names, provider_names
         FROM project LEFT JOIN sub_project ON sub_project.id = project.`id`
         LEFT JOIN participation c ON c.project_id = project.`id`
         LEFT JOIN user u ON u.id = c.user_id

BIN
fhKeeper/formulahousekeeper/management-platform/src/main/resources/upload/供应商导入模板.xlsx