소스 검색

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

zhouyy 2 달 전
부모
커밋
349b598108
28개의 변경된 파일93개의 추가작업 그리고 1220개의 파일을 삭제
  1. 13 4
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/components/AIChat.vue
  2. 7 2
      fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/team/index.vue
  3. BIN
      fhKeeper/formulahousekeeper/management-crm/opencv/opencv-420.jar
  4. BIN
      fhKeeper/formulahousekeeper/management-crm/opencv/x64/opencv_java420.dll
  5. BIN
      fhKeeper/formulahousekeeper/management-crm/opencv/x86/opencv_java420.dll
  6. 0 16
      fhKeeper/formulahousekeeper/management-crm/pom.xml
  7. 0 42
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/config/LdapConfig.java
  8. 6 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/BusinessOpportunityController.java
  9. 0 7
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/CustomController.java
  10. 0 106
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/UserController.java
  11. 0 9
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/UserService.java
  12. 25 23
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/AIQuestionServiceImpl.java
  13. 3 7
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/BusinessOpportunityServiceImpl.java
  14. 2 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ClueServiceImpl.java
  15. 3 1
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java
  16. 1 514
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/UserServiceImpl.java
  17. 1 0
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/util/ExcelUtil.java
  18. 0 297
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/util/ImageCompare.java
  19. 0 129
      fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/util/ImageReconizeUtil.java
  20. 3 16
      fhKeeper/formulahousekeeper/management-crm/src/main/resources/application.yml
  21. 9 3
      fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/ClueMapper.xml
  22. 8 6
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskFilesController.java
  23. 1 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/OtherTaskFileInfoVO.java
  24. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskFilesMapper.java
  25. 0 24
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java
  26. 5 3
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskFilesMapper.xml
  27. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskMapper.xml
  28. 4 7
      fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

+ 13 - 4
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/analysis/components/AIChat.vue

@@ -110,6 +110,7 @@
           start-placeholder="开始日期"
           end-placeholder="结束日期"
           format="YYYY-MM-DD"
+          value-format="YYYY-MM-DD"
         />
       </div>
     </div>
@@ -310,6 +311,13 @@ const dataSource = ref<DataSourceType>('system');
 const systemTable = ref<SystemTableType>('clue');
 const customReports = ref<CustomReport[]>([]);
 const selectedReportId = ref<string>('');
+const formatDate = (date: Date) => {
+  const year = date.getFullYear();
+  const month = String(date.getMonth() + 1).padStart(2, '0');
+  const day = String(date.getDate()).padStart(2, '0');
+  return `${year}-${month}-${day}`;
+};
+
 const getFirstDayOfMonth = () => {
   const date = new Date();
   return new Date(date.getFullYear(), date.getMonth(), 1);
@@ -339,7 +347,7 @@ const handleUpload = async (options: any) => {
   }
 };
 
-const dateRange = ref([getFirstDayOfMonth(), new Date()]);
+const dateRange = ref([formatDate(getFirstDayOfMonth()), formatDate(new Date())]);
 
 // Chat functionality
 const inputMessage = ref('请进行数据分析,给一个总结报告,不超过300字');
@@ -459,14 +467,15 @@ const sendMessage = async () => {
   messages.push({ role: 'assistant', content: 'AI正在思考', loading: true });
   
   try {
-    
+    console.log('发送日期=='+dateRange);
+    console.log(dateRange.value[0]);
     const params: AIQuestionParams & { questionId?: number } = {
       questionDataSource: dataSourceMap[dataSource.value],
       sourceContent: dataSource.value === 'system' ? systemTable.value : 
                    dataSource.value === 'custom' ? selectedReportId.value : '',
       content: finalContent,
-      startDate: dateRange.value[0]?.toISOString().split('T')[0],
-      endDate: dateRange.value[1]?.toISOString().split('T')[0],
+      startDate: dateRange.value[0],
+      endDate: dateRange.value[1],
       url: dataSource.value === 'upload' ? uploadedFilePath.value : ''
     };
 

+ 7 - 2
fhKeeper/formulahousekeeper/customerBuler-crm/src/pages/team/index.vue

@@ -6,7 +6,12 @@
         <el-link type="primary" class="text-nowrap mr-20" :icon="CirclePlusFilled"
           @click="dialogFromCli('addDeptDialogVisible')">创建部门</el-link>
         <el-link class="text-nowrap textFont textFont mr-10" type="primary" :icon="Edit"
-          @click="updateDepartment('addDeptDialogVisible')">{{ deptListItem.label || '全部人员' }}</el-link>
+          @click="updateDepartment('addDeptDialogVisible')">
+          <template v-if="!deptListItem.labe">全部人员</template>
+          <template v-if="deptListItem.labe">
+            <TextTranslation translationTypes="departmentName" :translationValue="deptListItem.labe"></TextTranslation>
+          </template>
+        </el-link>
         <span class="textSpan textFont">共 0 人</span>
       </div>
       <div class="teamForm flex items-center">
@@ -154,7 +159,7 @@
         <el-form ref="deptRuleFormRef" style="max-width: 500px" :model="deptForm" :rules="deptRules" label-width="140px"
           size="large" status-icon>
           <el-form-item label="部门名称" prop="name">
-            <el-input v-model="deptForm.name" placeholder="请输入部门名称" clearable />
+            <el-input v-model="deptForm.name" placeholder="请输入部门名称" clearable :disabled="userInfo.userNameNeedTranslate == 1" />
           </el-form-item>
           <el-form-item label="主要负责人">
             <!-- <el-select v-model="deptForm.managerId" placeholder="请选择" style="width: 100%" clearable>

BIN
fhKeeper/formulahousekeeper/management-crm/opencv/opencv-420.jar


BIN
fhKeeper/formulahousekeeper/management-crm/opencv/x64/opencv_java420.dll


BIN
fhKeeper/formulahousekeeper/management-crm/opencv/x86/opencv_java420.dll


+ 0 - 16
fhKeeper/formulahousekeeper/management-crm/pom.xml

@@ -152,15 +152,6 @@
             <artifactId>tess4j</artifactId>
         </dependency>
 
-        <!--手动引入opencv 否则无法maven打包-->
-        <dependency>
-            <groupId>org.opencv</groupId>
-            <artifactId>opencv</artifactId>
-            <version>4.2.0</version>
-            <scope>system</scope>
-            <systemPath>${basedir}/opencv/opencv-420.jar</systemPath>
-        </dependency>
-
         <!--微信模版消息推送三方sdk-->
         <dependency>
             <groupId>com.github.binarywang</groupId>
@@ -174,13 +165,6 @@
             <version>0.1.55</version>
         </dependency>
 
-        <!--ladp集成 AD域认证-->
-        <dependency>
-        <groupId>org.springframework.boot</groupId>
-        <artifactId>spring-boot-starter-data-ldap</artifactId>
-        <version>2.3.12.RELEASE</version>
-        </dependency>
-
         <dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>dysmsapi20170525</artifactId>

+ 0 - 42
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/config/LdapConfig.java

@@ -1,42 +0,0 @@
-package com.management.platform.config;
-
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.ldap.core.LdapTemplate;
-import org.springframework.ldap.core.support.LdapContextSource;
-
-@Configuration
-public class LdapConfig {
-    @Value("${spring.ldap.urls}")
-    private String ldapUrl;
-    @Value("${spring.ldap.username}")
-    private String userName;
-    @Value("${spring.ldap.password}")
-    private String passWord;
-    @Value("${spring.ldap.base.dcFirst}")
-    private String dcFirst;
-    @Value("${spring.ldap.base.dcSecond}")
-    private String dcSecond;
-
-
-
-    @Bean
-    public LdapContextSource ldapContextSource(){
-        LdapContextSource source = new LdapContextSource();
-        source.setBase("DC="+dcFirst+",DC="+dcSecond);
-        source.setUrl(ldapUrl);
-        source.setPassword(passWord);
-        source.setUserDn(userName);
-        source.setReferral("follow");
-        return source;
-    }
-
-    @Bean
-    public LdapTemplate ldapTemplate(){
-        return new LdapTemplate(ldapContextSource());
-    }
-
-
-}
-

+ 6 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/BusinessOpportunityController.java

@@ -102,6 +102,7 @@ public class BusinessOpportunityController {
 
     @RequestMapping("/exportData")
     public HttpRespMsg exportData(BusinessOpportunity bo ,HttpServletRequest request) throws Exception {
+        bo.setPageIndex(null).setPageFrom(null);
         User user = userMapper.selectById(request.getHeader("token"));
         SysForm sysForm = sysFormMapper.selectOne(new LambdaQueryWrapper<SysForm>().eq(SysForm::getCompanyId, user.getCompanyId()).eq(SysForm::getCode, "business").eq(SysForm::getIsCurrent, 1));
         WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, user.getCompanyId()));
@@ -146,6 +147,7 @@ public class BusinessOpportunityController {
         HttpRespMsg respMsg = list(bo,request);
         Map<String, Object> msgData = (Map<String, Object>) respMsg.getData();
         List<BusinessOpportunity> list = (List<BusinessOpportunity>) msgData.get("data");
+        System.out.println("商机数据量==="+list.size());
 
         for (BusinessOpportunity data : list) {
             List<String> item=new ArrayList<>();
@@ -207,6 +209,7 @@ public class BusinessOpportunityController {
             dataList.add(item);
         }
         String fileName=str+"表导出_"+ System.currentTimeMillis();
+        System.out.println("fileName===="+fileName);
         return excelExportService.exportGeneralExcelByTitleAndList(wxCorpInfo,fileName,dataList,path);
     }
 
@@ -454,7 +457,9 @@ public class BusinessOpportunityController {
         bo.setCompanyId(user.getCompanyId());
         bo.setUserId(user.getId());
         bo.setEndTime(bo.getEndTime() + " 23:59:59");
-        bo.setPageIndex((bo.getPageIndex()-1) * bo.getPageFrom());
+        if (bo.getPageIndex() != null) {
+            bo.setPageIndex((bo.getPageIndex()-1) * bo.getPageFrom());
+        }
         List<BusinessOpportunity> list = new ArrayList<>();
         boolean isAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部商机");
         boolean isNotAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看负责部门商机");

+ 0 - 7
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/CustomController.java

@@ -37,18 +37,11 @@ import java.util.Map;
 @RestController
 @RequestMapping("/custom")
 public class CustomController {
-    @Value(value = "${upload.file}")
-    private String file;
     @Autowired
     private CustomService customService;
     @Autowired
-    private CustomMapper customMapper;
-    @Autowired
     private UserMapper userMapper;
 
-    @Autowired
-    private SysDictMapper sysDictMapper;
-
     @Resource
     private ExcelExportServiceImpl excelExportService;
     @Resource

+ 0 - 106
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/controller/UserController.java

@@ -8,23 +8,13 @@ import com.management.platform.mapper.*;
 import com.management.platform.service.*;
 import com.management.platform.util.HttpRespMsg;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.ldap.core.LdapTemplate;
 import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
-import javax.naming.Context;
-import javax.naming.NamingException;
-import javax.naming.ldap.Control;
-import javax.naming.ldap.InitialLdapContext;
-import javax.naming.ldap.LdapContext;
-import javax.naming.ldap.SortControl;
 import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
 import java.util.*;
 
 /**
@@ -46,41 +36,13 @@ public class UserController {
 
     @Resource
     private HttpServletRequest request;
-
-    @Resource
-    private LdapTemplate ldapTemplate;
-
     @Resource
     private FeishuInfoService feishuInfoService;
-
     @Resource
     private UserCustomMapper userCustomMapper;
-
-    @Resource
-    private CompanyMapper companyMapper;
-    @Resource
-    private TimeTypeMapper timeTypeMapper;
-    @Resource
-    private SysRoleService sysRoleService;
-    @Resource
-    private ProjectBasecostSettingMapper projectBasecostSettingMapper;
-    @Resource
-    private CompanyReportMapper companyReportMapper;
     @Resource
     private DepartmentMapper departmentMapper;
     @Resource
-    private SysRoleMapper sysRoleMapper;
-    @Resource
-    private ExpenseMainTypeService expenseMainTypeService;
-    @Resource
-    private ExpenseTypeService expenseTypeService;
-    @Value("${spring.ldap.urls}")
-    private String ldapUrl;
-    @Value("${spring.ldap.base.dcFirst}")
-    private String dcFirst;
-    @Value("${spring.ldap.base.dcSecond}")
-    private String dcSecond;
-    @Resource
     private UserWithBeisenMapper userWithBeisenMapper;
 
     /**
@@ -362,74 +324,6 @@ public class UserController {
     }
 
 
-    @RequestMapping(value = "/loginForAd", method = RequestMethod.POST)
-    public HttpRespMsg loginForAd(@RequestParam String username, @RequestParam String password) {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        if(username.equals("sysadmin")){
-             return loginAdmin(username,password);
-        }
-        User user = userService.getOne(new QueryWrapper<User>().eq("phone", username+"@"+dcFirst+"."+dcSecond));
-        LdapContext ldapContext = null;
-        Hashtable<String, Object> env = new Hashtable<String, Object>();
-        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
-        //验证类型
-        env.put(Context.SECURITY_AUTHENTICATION, "simple");
-        //用户名称,cn,ou,dc 分别:用户,组,域
-        env.put(Context.SECURITY_PRINCIPAL, username+"@"+dcFirst+"."+dcSecond);
-        //用户密码 cn 的密码
-        env.put(Context.SECURITY_CREDENTIALS, password);
-        //url 格式:协议://ip:端口/组,域   ,直接连接到域或者组上面
-        env.put(Context.PROVIDER_URL,ldapUrl);
-//        //协议
-//        env.put(Context.SECURITY_PROTOCOL, "ssl");
-//        env.put("java.naming.ldap.factory.socket", "DummySSLSocketFactory类全路径");
-//        //objectGUID 转换,很关键
-        env.put("java.naming.ldap.attributes.binary","objectGUID");
-        try {
-            Control[] sortConnCtls = new SortControl[1];
-            sortConnCtls[0] = new SortControl("sAMAccountName", Control.CRITICAL);
-            ldapContext = new InitialLdapContext(env, sortConnCtls);
-            if(ldapContext!=null){
-                if(user!=null){
-                    return loginByUserId(user.getId());
-                }else {
-                    httpRespMsg.setError("账号不存在");
-                    return httpRespMsg;
-                }
-            }
-        } catch (IOException | NamingException e) {
-            e.printStackTrace();
-            httpRespMsg.setError("AD域控用户账号或者密码错误,验证失败");
-            return httpRespMsg;
-        }
-        return httpRespMsg;
-    }
-
-    @RequestMapping("/getOU")
-    public HttpRespMsg getOU() throws NamingException {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        httpRespMsg.setData(userService.ldapGetOU());
-        return httpRespMsg;
-    }
-
-    @RequestMapping("/getUser")
-    public HttpRespMsg getUser() throws Exception {
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        httpRespMsg.setData(userService.getUser());
-        return httpRespMsg;
-    }
-
-    @RequestMapping("/initSystemForAd")
-    public HttpRespMsg initSystemForAd(String companyName) throws Exception {
-        return userService.initSystemForAd(companyName);
-    }
-
-
-    @RequestMapping("/syncDeptWithAD")
-    public HttpRespMsg syncDeptWithAD(HttpServletRequest request) throws Exception{
-        return userService.syncDeptWithAD(request);
-    }
-
     @RequestMapping("/updateUserDeptHierarchy")
     public HttpRespMsg updateUserDeptHierarchy(Integer companyId) throws Exception {
         HttpRespMsg httpRespMsg=new HttpRespMsg();

+ 0 - 9
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/UserService.java

@@ -94,15 +94,6 @@ public interface UserService extends IService<User> {
 
     HttpRespMsg areaData(String token);
 
-    boolean ldapAuth(String username, String passWord);
-
-    List<JSONObject> ldapGetOU() throws NamingException;
-
-    List<JSONObject> getUser() throws Exception;
-
-    HttpRespMsg initSystemForAd(String companyName) throws Exception;
-
-    HttpRespMsg syncDeptWithAD(HttpServletRequest request) throws Exception;
 
     HttpRespMsg setActiveByIds(String ids, int isActive);
 

+ 25 - 23
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/AIQuestionServiceImpl.java

@@ -330,19 +330,21 @@ public class AIQuestionServiceImpl extends ServiceImpl<AIQuestionMapper, AIQuest
                     }
                     break;
             }
-
+            System.out.println("dataMsg=="+dataMsg.toJSONStr());
             if(dataMsg.getCode().equals("error")){
                 return dataMsg;
             }
 
-            String filePath = dataMsg.getMsg();
-
+            String filePath = (String)dataMsg.getData();
+            //处理地址,获取最后一个斜杠后面的文件名
+            String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
+            System.out.println("文件名称:" + fileName);
             RestTemplate restTemplate = new RestTemplate();
             //转换为MultipartFile 准备表单数据
             MultiValueMap<String, Object> body = new LinkedMultiValueMap<>();
             body.add("question", questionBO.getContent());
             ByteArrayResource byteArrayResource = null;
-            File f = new File(path,filePath);
+            File f = new File(path,fileName);
             try {
                 MultipartFile multipartFileFromPath = getMultipartFileFromPath(f.getAbsolutePath());
                 byteArrayResource = new ByteArrayResource(multipartFileFromPath.getBytes()) {
@@ -351,28 +353,28 @@ public class AIQuestionServiceImpl extends ServiceImpl<AIQuestionMapper, AIQuest
                         return multipartFileFromPath.getOriginalFilename();
                     }
                 };
+                body.add("file",byteArrayResource);
+                HttpHeaders headers = new HttpHeaders();
+                headers.setContentType(MediaType.MULTIPART_FORM_DATA);
+
+                HttpEntity<MultiValueMap<String, Object>> requestEntity =
+                        new HttpEntity<>(body, headers);
+                ResponseEntity<String> response = restTemplate.exchange(
+                        aiFileAskUrl,
+                        HttpMethod.POST,
+                        requestEntity,
+                        String.class);
+                if(response.getStatusCode().is2xxSuccessful()){
+                    JSONObject jsonObject = JSONObject.parseObject(response.getBody());
+                    System.out.println("jsonObject=== "+jsonObject);
+                    queryRes = jsonObject.getString("data");
+                }else{
+                    queryRes = "AI分析有误,稍后再试";
+                }
             }catch (IOException e){
                 e.printStackTrace();
+                queryRes = "数据处理有误,稍后再试";
             }
-            body.add("file",byteArrayResource);
-            HttpHeaders headers = new HttpHeaders();
-            headers.setContentType(MediaType.MULTIPART_FORM_DATA);
-
-            HttpEntity<MultiValueMap<String, Object>> requestEntity =
-                    new HttpEntity<>(body, headers);
-            ResponseEntity<String> response = restTemplate.exchange(
-                    aiFileAskUrl,
-                    HttpMethod.POST,
-                    requestEntity,
-                    String.class);
-            if(response.getStatusCode().is2xxSuccessful()){
-                JSONObject jsonObject = JSONObject.parseObject(response.getBody());
-                System.out.println("jsonObject=== "+jsonObject);
-                queryRes = jsonObject.getString("data");
-            }else{
-                queryRes = "AI分析有误,稍后再试";
-            }
-
 
             //排除relation表中的关联字段
 //            List<BusObjRelation> busObjRelations = busObjRelationMapper.selectList(new LambdaQueryWrapper<BusObjRelation>()

+ 3 - 7
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/BusinessOpportunityServiceImpl.java

@@ -281,10 +281,6 @@ public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportun
         bOMapper.update(null, updateWrapper);
     }
 
-    @Value(value = "${upload.file}")
-    private String path;
-
-
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpRespMsg saveProduct(BusinessOpportunity bo, User user) {
@@ -408,7 +404,7 @@ public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportun
             UploadFile uploadFile = uploadFileMapper.selectById(file.getId());
             uploadFileMapper.deleteById(uploadFile.getId());
             String realName = uploadFile.getRealName();
-            File file1 = new File(path + realName);
+            File file1 = new File(filePath + realName);
             file1.delete();
             msg.setMsg("删除成功");
         } catch (Exception e) {
@@ -929,7 +925,7 @@ public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportun
             dataList.add(item);
         }
         String fileName=str+"表AI_"+ System.currentTimeMillis();
-        return excelExportService.exportGeneralExcelByTitleAndListAI(fileName,dataList,path);
+        return excelExportService.exportGeneralExcelByTitleAndListAI(fileName,dataList,filePath);
     }
 
     private HttpRespMsg listAI(BusinessOpportunity bo, HttpServletRequest request) {
@@ -939,7 +935,7 @@ public class BusinessOpportunityServiceImpl extends ServiceImpl<BusinessOpportun
         bo.setCompanyId(user.getCompanyId());
         bo.setUserId(user.getId());
         bo.setEndTime(bo.getEndTime() + " 23:59:59");
-        bo.setPageIndex((bo.getPageIndex()-1) * bo.getPageFrom());
+//        bo.setPageIndex((bo.getPageIndex()-1) * bo.getPageFrom());
         List<BusinessOpportunity> list = new ArrayList<>();
         boolean isAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部商机");
         boolean isNotAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看负责部门商机");

+ 2 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ClueServiceImpl.java

@@ -87,7 +87,8 @@ public class ClueServiceImpl extends ServiceImpl<ClueMapper, Clue> implements Cl
         clue.setCompanyId(user.getCompanyId());
         clue.setIsDelete(0);
         clue.setEndTime(clue.getEndTime() + " 23:59:59");
-        clue.setPageIndex((clue.getPageIndex() - 1) * clue.getPageFrom());
+        //导出时不需要页码过滤
+//        clue.setPageIndex((clue.getPageIndex() - 1) * clue.getPageFrom());
         boolean isAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看全部线索");
         boolean isNotAll = sysFunctionService.hasPriviledge(user.getRoleId(), "查看负责部门线索");
         List<Clue> list = new ArrayList<>();

+ 3 - 1
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/ProductServiceImpl.java

@@ -98,6 +98,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
 
     @Override
     public HttpRespMsg getList(Integer companyId,String userId, String productName, String productCode,Integer productType,Integer status,String startDate,String endDate, Integer pageIndex, Integer pageSize) {
+        System.out.println("endDate=="+endDate);
         HttpRespMsg msg=new HttpRespMsg();
         User targetUsr = userMapper.selectById(request.getHeader("token"));
         List<Department> departments = departmentMapper.selectList(new LambdaQueryWrapper<Department>().eq(Department::getCompanyId, companyId));
@@ -161,7 +162,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
             queryWrapper.eq(Product::getStatus,status);
         }
         if(startDate!=null && endDate!=null){
-            DateTimeFormatter df=DateTimeFormatter.ofPattern("yyyy-MM-dd");
+            DateTimeFormatter df = startDate.length() > 10? DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"):DateTimeFormatter.ofPattern("yyyy-MM-dd");
             LocalDateTime start = LocalDate.parse(startDate, df).atTime(LocalTime.MIN);
             LocalDateTime end = LocalDate.parse(endDate, df).atTime(LocalTime.MAX);
             queryWrapper.between(Product::getCreateTime,start,end);
@@ -915,6 +916,7 @@ public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> impl
 
     @Override
     public HttpRespMsg exportDataAI(String startDate, String endDate, HttpServletRequest request) throws Exception {
+        System.out.println("exportDataAI, 接收到参数startDate==="+startDate);
         User user = userMapper.selectById(request.getHeader("token"));
         SysForm sysForm = sysFormMapper.selectOne(new LambdaQueryWrapper<SysForm>().eq(SysForm::getCompanyId, user.getCompanyId()).eq(SysForm::getCode, "Product").eq(SysForm::getIsCurrent, 1));
         WxCorpInfo wxCorpInfo = wxCorpInfoService.getOne(new LambdaQueryWrapper<WxCorpInfo>().eq(WxCorpInfo::getCompanyId, user.getCompanyId()));

+ 1 - 514
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/service/impl/UserServiceImpl.java

@@ -35,8 +35,6 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.http.*;
-import org.springframework.ldap.core.LdapTemplate;
-import org.springframework.ldap.filter.EqualsFilter;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 import org.springframework.web.client.RestTemplate;
@@ -45,17 +43,6 @@ import org.springframework.web.servlet.ModelAndView;
 import org.springframework.web.servlet.view.RedirectView;
 
 import javax.annotation.Resource;
-import javax.naming.Context;
-import javax.naming.NamingEnumeration;
-import javax.naming.NamingException;
-import javax.naming.directory.Attribute;
-import javax.naming.directory.Attributes;
-import javax.naming.directory.SearchControls;
-import javax.naming.directory.SearchResult;
-import javax.naming.ldap.Control;
-import javax.naming.ldap.InitialLdapContext;
-import javax.naming.ldap.LdapContext;
-import javax.naming.ldap.SortControl;
 import javax.servlet.http.HttpServletRequest;
 import java.io.*;
 import java.math.BigDecimal;
@@ -89,16 +76,7 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private String corpId;
     @Value("${providerSecret}")
     private String providerSecret;
-    @Value("${spring.ldap.urls}")
-    private String ldapUrl;
-    @Value("${spring.ldap.username}")
-    private String userName;
-    @Value("${spring.ldap.password}")
-    private String passWord;
-    @Value("${spring.ldap.base.dcFirst}")
-    private String dcFirst;
-    @Value("${spring.ldap.base.dcSecond}")
-    private String dcSecond;
+
     @Value("${configEnv.isPrivateDeploy}")
     private boolean isPrivateDeploy;
 
@@ -107,8 +85,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     public SFTPAsyncUploader sftpAsyncUploader;
 
     public static final String GET_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code";
-    public static final String GET_USERINFO_URL = "https://api.weixin.qq.com/sns/userinfo?access_token=accessToken&openid=openId&lang=zh_CN";
-    public static final String[] MATCHING_FILED = {"corpwx_userid","phone","job_number"};
 
     //用于控制线程锁
     public static HashMap<String, CorpwxJobResult> corpwxJobCenter = new HashMap();
@@ -179,8 +155,6 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private TaskGroupMapper taskGroupMapper;
     @Resource
     private WxCorpInfoMapper wxCorpInfoMapper;
-//    @Resource
-//    private CompanyDingdingService companyDingdingService;
     @Resource
     private WxCorpInfoService wxCorpInfoService;
     @Resource
@@ -196,14 +170,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     @Resource
     private ThirdPartyInterfaceMapper thirdPartyInterfaceMapper;
     @Resource
-    SysConfigMapper sysConfigMapper;
-    @Resource
     private ReportFormMapper reportFormMapper;
     @Resource
     private ProjectAuditorService projectAuditorService;
     @Resource
-    private TaskService taskService;
-    @Resource
     private TaskCommentMapper taskCommentMapper;
     @Resource
     private TaskCommentService taskCommentService;
@@ -219,21 +189,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
     private SysFormService sysFormService;
     @Resource
     private StageService stageService;
-
-    @Resource
-    private CompanyDingdingMapper companyDingdingMapper;
-
-    @Resource
-    private LdapTemplate ldapTemplate;
-
-    public static String provider_access_token = null;
-    public static long providerTokenExpireTime = 0L;
-    @Resource
-    private SysDictMapper sysDictMapper;
-
     @Resource
     private SysDictService sysDictService;
-
     @Resource
     private SuperSonicConfig  superSonicConfig;
 
@@ -3323,474 +3280,4 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
         return httpRespMsg;
     }
 
-    @Override
-    public boolean ldapAuth(String username, String passWord) {
-        EqualsFilter filter = new EqualsFilter("sAMAccountName",username);
-        return ldapTemplate.authenticate("",filter.toString(),passWord);
-    }
-
-    @Override
-    public List<JSONObject> ldapGetOU() throws NamingException {
-        LdapContext ldapContext = adLogin();
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        //域部门节点
-        String searchBase = "OU=my,DC="+dcFirst+",DC="+dcSecond;
-        //String searchBase = "OU=my(组织架构名称),DC=test,DC=com";
-        //搜索条件
-        String searchFilter = "objectclass=organizationalUnit";
-        //String searchFilter = "(&(objectclass=organizationalUnit)(|(name=名称1)(name=名称2)))"; //查询部门,并且部门名称等于名称1或者名称2
-        // 创建搜索控制器
-        SearchControls searchCtls = new SearchControls();
-        String[]  returnedAttrs={"ou", "name","canonicalName","distinguishedName","objectGUID", "objectCategory"};
-        searchCtls.setReturningAttributes(returnedAttrs); //设置指定返回的字段,不设置则返回全部
-        //  设置搜索范围 深度
-        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-        //查询结果
-        NamingEnumeration answer = ldapContext.search(searchBase, searchFilter,searchCtls);
-
-        List<JSONObject> jsonObjectList = new ArrayList<>();
-
-        while (answer.hasMoreElements()){
-            SearchResult searchResult = (SearchResult) answer.next();
-            Attributes attributes = searchResult.getAttributes();
-            if(attributes != null){
-                JSONObject jsonObject = new JSONObject();
-                for(NamingEnumeration ne = attributes.getAll(); ne.hasMore();){
-                    Attribute attribute = (Attribute) ne.next();
-                    for (NamingEnumeration e = attribute.getAll(); e.hasMore();) {
-                        if("objectGUID".equals(attribute.getID())){
-                            String guid =this.getObjectGUID((byte[]) e.next());
-                            jsonObject.put(attribute.getID(), guid);
-                        }else {
-                            jsonObject.put(attribute.getID(), e.next().toString());
-                        }
-                        if(!jsonObjectList.stream().anyMatch(jl->jl.getString("objectGUID").equals(jsonObject.getString("objectGUID")))){
-                            jsonObjectList.add(jsonObject);
-                        }
-//                        jsonObjectList.add(jsonObject);
-                    }
-                }
-            }
-
-        }
-        return jsonObjectList;
-    }
-
-    @Override
-    public List<JSONObject> getUser() throws Exception{
-        HttpRespMsg httpRespMsg=new HttpRespMsg();
-        LdapContext ldapContext = this.adLogin();
-        String searchFilter = "objectclass=User";
-        String searchBase = "DC="+dcFirst+",DC="+dcSecond;
-        // 创建搜索控制器
-        SearchControls searchCtls = new SearchControls();
-        String[]  returnedAttrs={"givenName","name","distinguishedName","userAccountControl","objectGUID", "objectCategory", "logonCount","sAMAccountName","userPrincipalName"};
-        searchCtls.setReturningAttributes(returnedAttrs); //设置指定返回的字段,不设置则返回全部
-        //  设置搜索范围 深度
-        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
-        //查询结果
-        NamingEnumeration answer = ldapContext.search(searchBase, searchFilter,searchCtls);
-
-        List<JSONObject> jsonObjectList = new ArrayList<>();
-
-        while (answer.hasMoreElements()){
-            SearchResult searchResult = (SearchResult) answer.next();
-            Attributes attributes = searchResult.getAttributes();
-
-            if(attributes != null){
-                JSONObject jsonObject = new JSONObject();
-                for(NamingEnumeration ne = attributes.getAll(); ne.hasMore();){
-                    Attribute attribute = (Attribute) ne.next();
-                    for (NamingEnumeration e = attribute.getAll(); e.hasMore();) {
-                        if("objectGUID".equals(attribute.getID())){
-                            String guid =this.getObjectGUID((byte[]) e.next());
-                            jsonObject.put(attribute.getID(), guid);
-                        }else {
-                            jsonObject.put(attribute.getID(), e.next().toString());
-                        }
-                    }
-                }
-                if(!jsonObjectList.stream().anyMatch(jl->jl.getString("objectGUID").equals(jsonObject.getString("objectGUID")))){
-                    jsonObjectList.add(jsonObject);
-                }
-//                        jsonObjectList.add(jsonObject);
-            }
-
-        }
-        return jsonObjectList;
-    }
-
-    @Override
-    public HttpRespMsg initSystemForAd(String companyName) throws Exception {
-        HttpRespMsg msg = new HttpRespMsg();
-        Integer count = companyMapper.selectCount(new QueryWrapper<Company>().eq("company_name", companyName));
-        if (count>0){
-            msg.setError("当前公司名称已存在");
-            return msg;
-        }
-        Company company = new Company().setCompanyName(companyName)
-                .setExpirationDate(LocalDateTime.now().plusDays(36500));
-        company.setPackageProject(0);
-        companyMapper.insert(company);
-        //生成工作时长
-        TimeType timeType = new TimeType();
-        timeType.setCompanyId(company.getId());
-        timeType.setFinanceJobnumEnabled(1);//启用工号来导入财务匹配
-        timeType.setProjectManDay(1);
-        timeTypeMapper.insert(timeType);
-        SysRole smanager = sysRoleService.generateDefaultRoles(company.getId());
-        //创建企业负责人账号
-        Long id = SnowFlake.nextId();
-        User manager = new User()
-                .setId(id.toString())
-                .setRoleId(smanager.getId())
-                .setRoleName(smanager.getRolename())
-                .setName("sysadmin")
-                .setPhone("sysadmin@"+dcFirst+"."+dcSecond)
-                .setPassword(MD5Util.getPassword("000000"))
-                .setColor(ColorUtil.randomColor())
-                .setCompanyId(company.getId());
-        userMapper.insert(manager);
-        System.out.println("生成超级管理员:sysadmin");
-        //生成项目的成本基线默认条目
-        String[] array = Constant.DEFAULT_BASE_COST_ITEMS;
-        for (String baseItem : array) {
-            ProjectBasecostSetting setting = new ProjectBasecostSetting();
-            setting.setName(baseItem);
-            setting.setCompanyId(company.getId());
-            projectBasecostSettingMapper.insert(setting);
-        }
-        //生成费用报销默认条目
-        String[] expenseTypes = Constant.EXPENSE_TYPES;
-        List<String> commonly = new ArrayList<>();
-        commonly.add("材料费");
-        //commonly.add(MessageUtils.message("entry.materialCost"));
-        commonly.add("办公用品");
-        //commonly.add(MessageUtils.message("entry.workCost"));
-        commonly.add("培训费");
-        //commonly.add(MessageUtils.message("entry.trainCost"));
-        commonly.add("打印费");
-        //commonly.add(MessageUtils.message("entry.printCost"));
-        commonly.add("快递费");
-        //commonly.add(MessageUtils.message("entry.expressCost"));
-        commonly.add("制作费");
-        //commonly.add(MessageUtils.message("entry.makeCost"));
-        commonly.add("律师费");
-        //commonly.add(MessageUtils.message("entry.lawyerCost"));
-        commonly.add("水费");
-        //commonly.add(MessageUtils.message("entry.waterCost"));
-        commonly.add("电费");
-        //commonly.add(MessageUtils.message("entry.electricCost"));
-        commonly.add("团建费");
-        //commonly.add(MessageUtils.message("entry.leagueCost"));
-        commonly.add("其他");
-        //commonly.add(MessageUtils.message("entry.other"));
-        List<String> travel  = new ArrayList<>();
-        travel.add("城市间交通费");
-        //travel.add(MessageUtils.message("entry.cityTrafficCost"));
-        travel.add("住宿费");
-        //travel.add(MessageUtils.message("entry.liveCost"));
-        travel.add("伙食补助费");
-        //travel.add(MessageUtils.message("entry.eatCost"));
-        travel.add("市内交通费");
-        //travel.add(MessageUtils.message("entry.insideCityCost"));
-        travel.add("其他差旅费");
-        //travel.add(MessageUtils.message("entry.otherLiveTraCost"));
-        List<String> outsource = new ArrayList<>();
-        outsource.add("项目外包费");
-        //outsource.add(MessageUtils.message("entry.projectCost"));
-        outsource.add("劳务外包费");
-        //outsource.add(MessageUtils.message("entry.labourCost"));
-        outsource.add("其他外包费");
-        //outsource.add(MessageUtils.message("entry.OtherOutsourceCost"));
-        List<ExpenseType> expenseTypeList=new ArrayList<>();
-        List<ExpenseMainType> expenseMainTypes=new ArrayList<>();
-        ExpenseMainType expenseMainType=new ExpenseMainType();
-        expenseMainType.setName("一般费用");
-        expenseMainType.setCompanyId(company.getId());
-        ExpenseMainType expenseMainType1=new ExpenseMainType();
-        expenseMainType1.setName("差旅费用");
-        expenseMainType1.setCompanyId(company.getId());
-        ExpenseMainType expenseMainType2=new ExpenseMainType();
-        expenseMainType2.setName("外包费用");
-        expenseMainType2.setCompanyId(company.getId());
-        expenseMainTypes.add(expenseMainType);
-        expenseMainTypes.add(expenseMainType1);
-        expenseMainTypes.add(expenseMainType2);
-        expenseMainTypeService.saveBatch(expenseMainTypes);
-        for (String expenseType : expenseTypes) {
-            ExpenseType item=new ExpenseType();
-            item.setCompanyId(company.getId());
-            item.setTypeName(expenseType);
-            if(commonly.contains(expenseType)){
-                item.setMainType(expenseMainType.getId());
-            }
-            if(travel.contains(expenseType)){
-                item.setMainType(expenseMainType1.getId());
-            }
-            if(outsource.contains(expenseType)){
-                item.setMainType(expenseMainType2.getId());
-            }
-            expenseTypeList.add(item);
-        }
-        expenseTypeService.saveBatch(expenseTypeList);
-        //todo: 生成初始测试项目及任务
-        Project project=new Project();
-        project.setCompanyId(company.getId());
-        project.setInchargerId(manager.getId());
-        project.setInchargerName(manager.getName());
-        project.setCreatorId(manager.getId());
-        project.setCreatorName(manager.getName());
-        project.setCreateDate(LocalDate.now());
-        project.setProjectCode("example");
-        project.setProjectName("示例项目");
-        //设置为公共项目,这样测试的用户都能填报
-        project.setIsPublic(1);
-        projectMapper.insert(project);
-        //todo: 生成初始项目相关日报审核人
-        ProjectAuditor projectAuditor=new ProjectAuditor();
-        projectAuditor.setAuditorId(manager.getId());
-        projectAuditor.setAuditorName(manager.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())
-                .setInchargerId(manager.getId())
-                .setName("项目阶段");
-        taskGroupMapper.insert(taskGroup);
-        Stages stage = new Stages();
-        stage.setGroupId(taskGroup.getId());
-        stage.setSequence(1);
-        stage.setProjectId(project.getId());
-        stage.setStagesName("工作开展");
-        stagesMapper.insert(stage);
-        Task task=new Task();
-//        Integer oneDayHours = 8;
-//        task.setCreateDate(LocalDate.now());
-//        task.setProjectId(project.getId());
-//        task.setCompanyId(company.getId());
-//        task.setCreaterId(manager.getId());
-//        task.setCreaterName(manager.getName());
-//        task.setCreatorColor(manager.getColor());
-//        task.setExecutorId(manager.getId());
-//        task.setExecutorColor(manager.getColor());
-//        task.setExecutorName(manager.getName());
-//        task.setPlanHours(oneDayHours);
-//        task.setStagesId(stage.getId());
-//        task.setGroupId(taskGroup.getId());
-//        task.setSeq(0);
-//        task.setName("示例任务");
-        taskMapper.insert(task);
-        //任务执行人表也要插入,不然会导致编辑任务的时候执行人为空
-        TaskExecutor executor = new TaskExecutor();
-        executor.setTaskId(task.getId());
-//        executor.setPlanHours(oneDayHours);
-        executor.setProjectId(project.getId());
-        executor.setExecutorId(manager.getId());
-        executor.setExecutorColor(manager.getColor());
-        executor.setExecutorName(manager.getName());
-        taskExecutorMapper.insert(executor);
-        SysRole role = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id", company.getId()).eq("rolename","普通员工"));
-        List<JSONObject> deptArrays = ldapGetOU();
-        for (JSONObject dept : deptArrays) {
-            Department department=new Department();
-            department.setDepartmentName(dept.getString("name"))
-                    .setCompanyId(company.getId());
-            departmentMapper.insert(department);
-        }
-        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id", company.getId()));
-        for (JSONObject deptArray : deptArrays) {
-            String canonicalName = deptArray.getString("canonicalName");
-            Optional<Department> first = departmentList.stream().filter(dl -> dl.getDepartmentName().equals(deptArray.getString("name"))).findFirst();
-            if(first.isPresent()){
-                String[] split = canonicalName.split("/");
-                if(split.length>2){
-                    String s = split[split.length - 2];
-                    Department one = departmentMapper.selectOne(new QueryWrapper<Department>().eq("department_name", s).eq("company_id", company.getId()));
-                    if(one!=null&&Optional.of(one).isPresent()){
-                        first.get().setSuperiorId(one.getDepartmentId());
-                    }
-                }
-                departmentMapper.updateById(first.get());
-            }
-        }
-        List<JSONObject> userArrays = getUser();
-        Integer[] ints = {514, 546, 66050, 66080, 66082};
-        List<Integer> disable = Arrays.asList(ints);
-        for (JSONObject user : userArrays) {
-            if(disable.contains(user.getIntValue("userAccountControl"))){
-                continue;
-            }
-            User u=new User();
-            u.setId(SnowFlake.nextId()+"")
-                    .setName(user.getString("name"))
-                    .setPhone(user.getString("userPrincipalName"))
-                    .setId(SnowFlake.nextId()+"")
-                    .setRoleId(role.getId())//默认普通员工
-                    .setRoleName(role.getRolename())
-                    .setCompanyId(company.getId())
-                    .setColor(ColorUtil.randomColor())
-                    .setPassword(MD5Util.getPassword("000000"));
-            String distinguishedName = user.getString("distinguishedName");
-            String[] split = distinguishedName.split(",");
-            List<String> list = Arrays.asList(split);
-            List<String> collect = list.stream().filter(l -> l.contains("OU=")).collect(Collectors.toList());
-            if(collect.size()>0){
-                String s = collect.get(0).replaceAll("OU=", "");
-                Department one = departmentMapper.selectOne(new QueryWrapper<Department>().eq("department_name", s).eq("company_id", company.getId()));
-                if(one!=null){
-                    u.setDepartmentId(one.getDepartmentId()).setDepartmentName(one.getDepartmentName()).setDepartmentCascade(convertDepartmentIdToCascade(one.getDepartmentId(),departmentList));
-                }
-            }
-            userMapper.insert(u);
-        }
-        return msg;
-    }
-
-    @Override
-    public HttpRespMsg syncDeptWithAD(HttpServletRequest request) throws Exception {
-        Integer companyId = userMapper.selectById(request.getHeader("token")).getCompanyId();
-        SysRole role = sysRoleMapper.selectOne(new QueryWrapper<SysRole>().eq("company_id",companyId).eq("rolename","普通员工"));
-        List<Department> departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",companyId));
-        List<User> userList = userMapper.selectList(new QueryWrapper<User>().eq("company_id", companyId));
-        List<JSONObject> deptArrays = ldapGetOU();
-        for (JSONObject dept : deptArrays) {
-            if(departmentList.stream().anyMatch(dl->dl.getDepartmentName().equals(dept.getString("name")))){
-                continue;
-            }
-            Department department=new Department();
-            department.setDepartmentName(dept.getString("name"))
-                    .setCompanyId(companyId);
-            departmentMapper.insert(department);
-        }
-        departmentList = departmentMapper.selectList(new QueryWrapper<Department>().eq("company_id",companyId));
-        for (JSONObject deptArray : deptArrays) {
-            String canonicalName = deptArray.getString("canonicalName");
-            Optional<Department> first = departmentList.stream().filter(dl -> dl.getDepartmentName().equals(deptArray.getString("name"))).findFirst();
-            if(first.isPresent()){
-                String[] split = canonicalName.split("/");
-                if(split.length>2){
-                    String s = split[split.length - 2];
-                    Department one = departmentMapper.selectOne(new QueryWrapper<Department>().eq("department_name", s).eq("company_id",companyId));
-                    if(one!=null&&Optional.of(one).isPresent()){
-                        first.get().setSuperiorId(one.getDepartmentId());
-                    }
-                }
-                departmentMapper.updateById(first.get());
-            }
-        }
-        List<JSONObject> userArrays = getUser();
-        Integer[] ints = {514, 546, 66050, 66080, 66082};
-        List<Integer> disable = Arrays.asList(ints);
-        for (JSONObject user : userArrays) {
-            if(disable.contains(user.getIntValue("userAccountControl"))){
-                List<User> users = userList.stream().filter(ul -> ul.getPhone() != null).collect(Collectors.toList());
-                Optional<User> optional = users.stream().filter(ul -> ul.getPhone() != null && ul.getPhone().equals(user.getString("userPrincipalName"))).findFirst();
-                if(optional.isPresent()){
-                    optional.get().setIsActive(0);
-                    userMapper.updateById(optional.get());
-                }
-                continue;
-            }
-            if(!user.containsKey("userPrincipalName")){
-                continue;
-            }
-            User u=new User();
-            u.setId(SnowFlake.nextId()+"")
-                    .setName(user.getString("name"))
-                    .setPhone(user.getString("userPrincipalName"))
-                    .setId(SnowFlake.nextId()+"")
-                    .setRoleId(role.getId())//默认普通员工
-                    .setRoleName(role.getRolename())
-                    .setCompanyId(companyId)
-                    .setColor(ColorUtil.randomColor())
-                    .setPassword(MD5Util.getPassword("000000"));
-            String distinguishedName = user.getString("distinguishedName");
-            String[] split = distinguishedName.split(",");
-            List<String> list = Arrays.asList(split);
-            List<String> collect = list.stream().filter(l -> l.contains("OU=")).collect(Collectors.toList());
-            if(collect.size()>0){
-                String s = collect.get(0).replaceAll("OU=", "");
-                Department one = departmentMapper.selectOne(new QueryWrapper<Department>().eq("department_name", s).eq("company_id",companyId));
-                if(one!=null){
-                    u.setDepartmentId(one.getDepartmentId()).setDepartmentName(one.getDepartmentName()).setDepartmentCascade(convertDepartmentIdToCascade(one.getDepartmentId(),departmentList));
-                }
-            }
-            List<User> users = userList.stream().filter(ul -> ul.getPhone() != null).collect(Collectors.toList());
-            if(!users.stream().anyMatch(ul->ul.getPhone()!=null&&ul.getPhone().equals(u.getPhone()))){
-                userMapper.insert(u);
-            }
-        }
-        return new HttpRespMsg();
-    }
-    public LdapContext adLogin() {
-
-        LdapContext ldapContext = null;
-        Hashtable<String, Object> env = new Hashtable<String, Object>();
-        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
-        //验证类型
-        env.put(Context.SECURITY_AUTHENTICATION, "simple");
-        //用户名称,cn,ou,dc 分别:用户,组,域
-        env.put(Context.SECURITY_PRINCIPAL,userName);
-        //用户密码 cn 的密码
-        env.put(Context.SECURITY_CREDENTIALS,passWord);
-        //url 格式:协议://ip:端口/组,域   ,直接连接到域或者组上面
-        env.put(Context.PROVIDER_URL,ldapUrl);
-//        //协议
-//        env.put(Context.SECURITY_PROTOCOL, "ssl");
-//        env.put("java.naming.ldap.factory.socket", "org.utils.ad.DummySSLSocketFactory");
-        //objectGUID 转换,很关键
-        env.put("java.naming.ldap.attributes.binary","objectGUID");
-        try {
-            Control[] sortConnCtls = new SortControl[1];
-            sortConnCtls[0] = new SortControl("sAMAccountName", Control.CRITICAL);
-            ldapContext = new InitialLdapContext(env, sortConnCtls);
-        } catch (IOException | NamingException e) {
-            e.printStackTrace();
-        }
-        return ldapContext;
-    }
-
-    private String getObjectGUID(byte[] GUID){
-        String strGUID = "";
-        String byteGUID = "";
-        for (int c=0;c<GUID.length;c++) {
-            byteGUID = byteGUID + "\\" + AddLeadingZero((int)GUID[c] & 0xFF);
-        }
-        strGUID = strGUID + AddLeadingZero((int)GUID[3] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[2] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[1] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[0] & 0xFF);
-        strGUID = strGUID + "-";
-        strGUID = strGUID + AddLeadingZero((int)GUID[5] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[4] & 0xFF);
-        strGUID = strGUID + "-";
-        strGUID = strGUID + AddLeadingZero((int)GUID[7] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[6] & 0xFF);
-        strGUID = strGUID + "-";
-        strGUID = strGUID + AddLeadingZero((int)GUID[8] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[9] & 0xFF);
-        strGUID = strGUID + "-";
-        strGUID = strGUID + AddLeadingZero((int)GUID[10] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[11] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[12] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[13] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[14] & 0xFF);
-        strGUID = strGUID + AddLeadingZero((int)GUID[15] & 0xFF);
-        return strGUID;
-    }
-
-    private static String AddLeadingZero(int k) {
-        return (k <= 0xF) ? "0" + Integer.toHexString(k) : Integer
-                .toHexString(k);
-    }
 }

+ 1 - 0
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/util/ExcelUtil.java

@@ -169,6 +169,7 @@ public class ExcelUtil {
             workBook.write(os);
             os.flush();
             os.close();
+            System.out.println("写入文件路径=="+downloadPath+fileName);
         }catch(Exception e) {
             System.out.println(result);
             e.printStackTrace();

+ 0 - 297
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/util/ImageCompare.java

@@ -1,297 +0,0 @@
-package com.management.platform.util;
-
-import java.awt.HeadlessException;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.imageio.ImageIO;
-
-import org.opencv.core.*;
-import org.opencv.imgcodecs.Imgcodecs;
-import org.opencv.imgproc.Imgproc;
-import org.opencv.utils.Converters;
-
-public class ImageCompare {
-    static {
-        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
-        //注意程序运行的时候需要在VM option添加该行 指明opencv的dll文件所在路径
-        //-Djava.library.path=$PROJECT_DIR$\opencv\x64
-    }
-    private boolean compareResult = false;
-    private String mark = "_compareResult";
-    /**
-     * 通过两张图对比,判断是否是游戏电影类型
-     * @param imagePath1 图片1的路径
-     * @param imagePath2 图片2的路径
-     */
-    public boolean isMoviePlay(String imagePath1, String imagePath2)
-    {
-        Mat mat1 = readMat(imagePath1);
-        Mat mat2 = readMat(imagePath2);
-        mat1 = Imgcodecs.imdecode(mat1, Imgcodecs.IMREAD_UNCHANGED);
-        mat2 = Imgcodecs.imdecode(mat2, Imgcodecs.IMREAD_UNCHANGED);
-        if(mat1.cols() == 0 || mat2.cols() == 0 || mat1.rows() == 0 || mat2.rows() == 0)
-        {
-            System.out.println("图片文件路径异常,获取的图片大小为0,无法读取");
-            return false;
-        }
-        if(mat1.cols() != mat2.cols() || mat1.rows() != mat2.rows())
-        {
-            System.out.println("两张图片大小不同,无法比较");
-            return false;
-        }
-        mat1.convertTo(mat1, CvType.CV_8UC1);
-        mat2.convertTo(mat2, CvType.CV_8UC1);
-        Mat mat1_gray = new Mat();
-        Imgproc.cvtColor(mat1, mat1_gray, Imgproc.COLOR_BGR2GRAY);
-        Mat mat2_gray = new Mat();
-        Imgproc.cvtColor(mat2, mat2_gray, Imgproc.COLOR_BGR2GRAY);
-        mat1_gray.convertTo(mat1_gray, CvType.CV_32F);
-        mat2_gray.convertTo(mat2_gray, CvType.CV_32F);
-        double result = Imgproc.compareHist(mat1_gray, mat2_gray, Imgproc.CV_COMP_CORREL);
-        if(result == 1)
-        {
-            return false;
-        }
-//        System.out.println("相似度数值为:"+result);
-        Mat mat_result = new Mat();
-        //计算两个灰度图的绝对差值,并输出到一个Mat对象中
-        Core.absdiff(mat1_gray, mat2_gray, mat_result);
-        //将灰度图按照阈值进行绝对值化
-        mat_result.convertTo(mat_result, CvType.CV_8UC1);
-        List<MatOfPoint> mat2_list = new ArrayList<MatOfPoint>();
-        Mat mat2_hi = new Mat();
-        //寻找轮廓图
-        Imgproc.findContours(mat_result, mat2_list, mat2_hi, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
-        Mat mat_result1 = mat1;
-        Mat mat_result2 = mat2;
-        //使用红色标记不同点
-        System.out.println(mat2_list.size());
-        List<Point> allPoints = new ArrayList<Point>();
-        //按照目标区域的面积大小, 长宽不低于480*480
-        Point leftTop = null;
-        Point rightTop = null;
-        Point leftBottom = null;
-        Point rightBottom = null;
-        for (MatOfPoint matOfPoint : mat2_list)
-        {
-            Rect rect = Imgproc.boundingRect(matOfPoint);
-            if ((rect.width >= 640 && rect.height >= 480) || (rect.width >= 480 && rect.height >= 640)) {
-//                System.out.println("位置==["+rect.x +","+ rect.y+"], 大小=" +rect.width+"x"+rect.height+", 包含点=" + matOfPoint.toList().size());
-                Imgproc.rectangle(mat_result1, rect.tl(), rect.br(), new Scalar(0, 0, 255),2);
-                Imgproc.rectangle(mat_result2, rect.tl(), rect.br(), new Scalar(0, 0, 255),2);
-                allPoints = matOfPoint.toList();
-                leftTop = new Point(rect.x, rect.y);
-                rightTop = new Point(rect.x + rect.width -1, rect.y);
-                leftBottom = new Point(rect.x, rect.y + rect.height -1);
-                rightBottom = new Point(rect.x + rect.width -1, rect.y + rect.height -1);
-                break;
-            }
-        }
-        for (Point p : allPoints) {
-            Imgproc.drawMarker(mat_result1, p, new Scalar(0, 255, 0),2);
-        }
-        //找到四个顶点
-        System.out.println("allPoints size=="+allPoints.size());
-        if (allPoints.size() == 0) {
-            return false;
-        }
-        System.out.println(leftTop);
-        System.out.println(rightTop);
-        System.out.println(leftBottom);
-        System.out.println(rightBottom);
-        //统计在矩形边上的点数量
-        int hitCount = 0;
-        for (Point p : allPoints) {
-            if ((Math.abs(p.x - leftTop.x) <= 6 || Math.abs(p.y - leftTop.y) <= 6)
-                    || (Math.abs(p.x - rightBottom.x) <= 6 || Math.abs(p.y - rightBottom.y) <= 6)) {
-                hitCount++;
-            }
-        }
-        System.out.println("hitCount="+hitCount+", percent="+(100*hitCount/allPoints.size())+"%");
-        int percent = (100*hitCount/allPoints.size());
-        //分析占比
-        if (percent > 80) {
-            return true;//
-        } else {
-            return false;
-        }
-    }
-
-    private void writeImage(Mat mat, String outPutFile)
-    {
-        MatOfByte matOfByte = new MatOfByte();
-        Imgcodecs.imencode(".png", mat, matOfByte);
-        byte[] byteArray = matOfByte.toArray();
-        BufferedImage bufImage = null;
-        try {
-            InputStream in = new ByteArrayInputStream(byteArray);
-            bufImage = ImageIO.read(in);
-            ImageIO.write(bufImage, "png", new File(outPutFile));
-        } catch (IOException | HeadlessException e)
-        {
-            e.printStackTrace();
-        }
-    }
-
-    private String getFileName(String filePath)
-    {
-        File f = new File(filePath);
-        return f.getName();
-    }
-
-    private String getParentDir(String filePath)
-    {
-        File f = new File(filePath);
-        return f.getParent();
-    }
-
-    private Mat readMat(String filePath)
-    {
-        try {
-            File file = new File(filePath);
-            FileInputStream inputStream = new FileInputStream(filePath);
-            byte[] byt = new byte[(int) file.length()];
-            int read = inputStream.read(byt);
-            List<Byte> bs = convert(byt);
-            Mat mat1 = Converters.vector_char_to_Mat(bs);
-            return mat1;
-        } catch (UnsupportedEncodingException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return new Mat();
-    }
-
-    private List<Byte> convert(byte[] byt)
-    {
-        List<Byte> bs = new ArrayList<Byte>();
-        for (int i = 0; i < byt.length; i++)
-        {
-            bs.add(i, byt[i]);
-        }
-        return bs;
-    }
-
-    public boolean test(String imagePath1, String imagePath2)
-    {
-        Mat mat1 = readMat(imagePath1);
-        Mat mat2 = readMat(imagePath2);
-        mat1 = Imgcodecs.imdecode(mat1, Imgcodecs.IMREAD_UNCHANGED);
-        mat2 = Imgcodecs.imdecode(mat2, Imgcodecs.IMREAD_UNCHANGED);
-        /*Mat mat1 = Imgcodecs.imread(imagePath1, Imgcodecs.IMREAD_UNCHANGED);
-        Mat mat2 = Imgcodecs.imread(imagePath2, Imgcodecs.IMREAD_UNCHANGED);*/
-        if(mat1.cols() == 0 || mat2.cols() == 0 || mat1.rows() == 0 || mat2.rows() == 0)
-        {
-            System.out.println("图片文件路径异常,获取的图片大小为0,无法读取");
-            return false;
-        }
-        if(mat1.cols() != mat2.cols() || mat1.rows() != mat2.rows())
-        {
-            System.out.println("两张图片大小不同,无法比较");
-            return false;
-        }
-        mat1.convertTo(mat1, CvType.CV_8UC1);
-        mat2.convertTo(mat2, CvType.CV_8UC1);
-        Mat mat1_gray = new Mat();
-        Imgproc.cvtColor(mat1, mat1_gray, Imgproc.COLOR_BGR2GRAY);
-        Mat mat2_gray = new Mat();
-        Imgproc.cvtColor(mat2, mat2_gray, Imgproc.COLOR_BGR2GRAY);
-        mat1_gray.convertTo(mat1_gray, CvType.CV_32F);
-        mat2_gray.convertTo(mat2_gray, CvType.CV_32F);
-        double result = Imgproc.compareHist(mat1_gray, mat2_gray, Imgproc.CV_COMP_CORREL);
-        if(result == 1)
-        {
-            compareResult = true;//此处结果为1则为完全相同
-            return false;
-        }
-        System.out.println("相似度数值为:"+result);
-        Mat mat_result = new Mat();
-        //计算两个灰度图的绝对差值,并输出到一个Mat对象中
-        Core.absdiff(mat1_gray, mat2_gray, mat_result);
-        //将灰度图按照阈值进行绝对值化
-        mat_result.convertTo(mat_result, CvType.CV_8UC1);
-        List<MatOfPoint> mat2_list = new ArrayList<MatOfPoint>();
-        Mat mat2_hi = new Mat();
-        //寻找轮廓图
-        Imgproc.findContours(mat_result, mat2_list, mat2_hi, Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_SIMPLE);
-        Mat mat_result1 = mat1;
-        Mat mat_result2 = mat2;
-        //使用红色标记不同点
-        System.out.println(mat2_list.size());
-        List<Point> allPoints = new ArrayList<Point>();
-        //按照目标区域的面积大小, 长宽不低于480*480
-        Point leftTop = null;
-        Point rightTop = null;
-        Point leftBottom = null;
-        Point rightBottom = null;
-        for (MatOfPoint matOfPoint : mat2_list)
-        {
-            Rect rect = Imgproc.boundingRect(matOfPoint);
-            if (rect.width >= 280 && rect.height >= 280) {
-                System.out.println("位置==["+rect.x +","+ rect.y+"], 大小=" +rect.width+"x"+rect.height+", 包含点=" + matOfPoint.toList().size());
-                Imgproc.rectangle(mat_result1, rect.tl(), rect.br(), new Scalar(0, 0, 255),2);
-                Imgproc.rectangle(mat_result2, rect.tl(), rect.br(), new Scalar(0, 0, 255),2);
-                allPoints = matOfPoint.toList();
-                leftTop = new Point(rect.x, rect.y);
-                rightTop = new Point(rect.x + rect.width -1, rect.y);
-                leftBottom = new Point(rect.x, rect.y + rect.height -1);
-                rightBottom = new Point(rect.x + rect.width -1, rect.y + rect.height -1);
-                break;
-            }
-        }
-        for (Point p : allPoints) {
-            Imgproc.drawMarker(mat_result1, p, new Scalar(0, 255, 0),2);
-        }
-        String fileName1 = getFileName(imagePath1);
-        String targetPath1 = getParentDir(imagePath2)+File.separator+fileName1.replace(".", mark+".");
-        String fileName2 = getFileName(imagePath2);
-        String targetPath2 = getParentDir(imagePath2)+File.separator+fileName2.replace(".", mark+".");
-        System.out.println(targetPath1);
-        System.out.println(targetPath2);
-        writeImage(mat_result1, targetPath1);
-        writeImage(mat_result2, targetPath2);
-        //找到四个顶点
-        System.out.println("allPoints size=="+allPoints.size());
-        System.out.println(leftTop);
-        System.out.println(rightTop);
-        System.out.println(leftBottom);
-        System.out.println(rightBottom);
-        //检测其他点,是否都在矩形边上
-        int hitCount = 0;
-        for (Point p : allPoints) {
-            if ((Math.abs(p.x - leftTop.x) <= 6 || Math.abs(p.y - leftTop.y) <= 6)
-                    || (Math.abs(p.x - rightBottom.x) <= 6 || Math.abs(p.y - rightBottom.y) <= 6)) {
-                hitCount++;
-            } else {
-//                System.out.println("失效点:"+p.x + "," + p.y);
-            }
-        }
-        System.out.println("hitCount="+hitCount+", percent="+(100*hitCount/allPoints.size())+"%");
-        int percent = (100*hitCount/allPoints.size());
-
-        if (percent > 80) {
-            return true;//
-        } else {
-            return false;
-        }
-    }
-
-    public static void main(String[] args) {
-        String img1 = "C:\\Users\\seya\\Desktop\\e.jpg";
-        String img2 = "C:\\Users\\seya\\Desktop\\d.jpg";
-        ImageCompare ip = new ImageCompare();
-        System.out.println("是电影娱乐吗?"+ip.test(img1, img2));
-    }
-
-
-}
-

+ 0 - 129
fhKeeper/formulahousekeeper/management-crm/src/main/java/com/management/platform/util/ImageReconizeUtil.java

@@ -1,129 +0,0 @@
-package com.management.platform.util;
-
-import org.opencv.core.*;
-import org.opencv.features2d.ORB;
-import org.opencv.highgui.HighGui;
-import org.opencv.imgcodecs.Imgcodecs;
-import org.opencv.imgproc.Imgproc;
-
-import javax.imageio.ImageIO;
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-
-import static java.lang.Math.E;
-import static org.opencv.imgproc.Imgproc.*;
-
-public class ImageReconizeUtil {
-//    public static final double YUZHI_HIGH = 2*Math.pow(0.1, 11);
-//    public static final double YUZHI_NORMAL = 1*Math.pow(0.1, 10);
-    public static final double YUZHI = 0.89;
-    static {
-        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
-        //注意程序运行的时候需要在VM option添加该行 指明opencv的dll文件所在路径
-        //-Djava.library.path=$PROJECT_DIR$\opencv\x64
-    }
-    public static void main(String[] args) {
-        boolean match = isWholeTemplateMatch("C:\\Users\\seya\\Desktop\\wjw.jpg",
-                "C:\\picrecongnize\\im\\wechat.jpg");
-
-    }
-
-    public static boolean isTemplateMatch(String sourcePic, String targetPic) {
-        double matchVal = templete(TM_CCOEFF_NORMED, sourcePic, targetPic,true);
-        if (matchVal >= YUZHI) {
-            System.out.println("找到啦");
-            return true;
-        } else {
-            System.out.println("没匹配上");
-            return false;
-        }
-    }
-
-    public static boolean isWholeTemplateMatch(String sourcePic, String targetPic) {
-        double matchVal = templete(Imgproc.TM_CCOEFF_NORMED, sourcePic, targetPic, false);
-        if (matchVal >= YUZHI) {
-            System.out.println("找到啦"+targetPic);
-            return true;
-        } else {
-            System.out.println("没匹配上");
-            return false;
-        }
-    }
-
-    /**
-     * OpenCV-4.1.0 模板匹配
-     * <table border="1" cellpadding="8">
-     * <tr><th>输入参数</th><th>参数解释</th></tr>
-     * <tr><td align="left">TM_SQDIFF是平方差匹配、TM_SQDIFF_NORMED是标准平方差匹配</td><td>利用平方差来进行匹配,最好匹配为0.匹配越差,匹配值越大。</td></tr>
-     * <tr><td align="left">TM_CCORR是相关性匹配、TM_CCORR_NORMED是标准相关性匹配</td><td>采用模板和图像间的乘法操作,数越大表示匹配程度较高, 0表示最坏的匹配效果。</td></tr>
-     * <tr><td align="left">TM_CCOEFF是相关性系数匹配、TM_CCOEFF_NORMED是标准相关性系数匹配</td><td>将模版对其均值的相对值与图像对其均值的相关值进行匹配,1表示完美匹配,-1表示糟糕的匹配,0表示没有任何相关性(随机序列)。</td></tr>
-     * <tr><td colspan="2">随着从简单的测量(平方差)到更复杂的测量(相关系数),我们可获得越来越准确的匹配(同时也意味着越来越大的计算代价)。</td></tr>
-     * <tr><td colspan="2">相关性是越接近1越大越好,平方差是越小越好,所以TM_SQDIFF在使用时和其他的是有所区别的。</td></tr>
-     * <tr><td colspan="2">模板匹配结果Mat要是32位的。</td></tr>
-     * </table>
-     * @return: void
-     * @date: 2019年5月7日12:16:55
-     */
-    public static double templete(int method, String inFile, String templateFile, boolean cutMatch) {
-        // 1 获取待匹配图片
-//        System.out.println("sourcePic="+sourcePic+", targetPic="+targetPic);
-        Mat srcMat = Imgcodecs.imread(inFile);
-        if (cutMatch) {
-            //先裁减,左上角1/4的截图,提高比对速度。
-            Rect rect = new Rect(0,0,srcMat.width()/4, srcMat.height()/4);
-            Mat subMat = new Mat(srcMat, rect);
-            subMat.copyTo(srcMat);
-        }
-
-        //将rgb灰化处理
-//        Imgproc.cvtColor(templete, templete,Imgproc.COLOR_BGR2GRAY);
-//
-        // 2 获取匹配模板
-        Mat demo = Imgcodecs.imread(templateFile);
-//        Imgproc.cvtColor(demo, demo,Imgproc.COLOR_BGR2GRAY);
-
-        Core.MinMaxLocResult mmr = getLocResult(method, srcMat, demo);
-        // 7 绘制匹配到的结果
-        double x,y;
-        double matchVal = 0;
-        if (method==Imgproc.TM_SQDIFF_NORMED || method==Imgproc.TM_SQDIFF) {
-            x = mmr.minLoc.x;
-            y = mmr.minLoc.y;
-            matchVal = mmr.minVal;
-        } else {
-            x = mmr.maxLoc.x;
-            y = mmr.maxLoc.y;
-            matchVal = mmr.maxVal;
-        }
-
-        System.out.println("匹配度=="+matchVal+", target="+templateFile.substring(templateFile.lastIndexOf(File.separator)-10)+", inFile="+inFile.substring(inFile.lastIndexOf(File.separator)));
-        System.out.println("x="+x+", y=" + y);
-        //我们匹配的图像在左上角,考虑到用户可能拖动窗口,但是不应该偏差很大。 这里增加判断标准:坐标处在左上方。
-
-//        if (matchVal >= YUZHI) {
-//            Imgproc.rectangle(srcMat,new Point(x,y),new Point(x+demo.cols(),y+demo.rows()),new Scalar( 0, 0, 255),2,Imgproc.LINE_AA);
-//            Imgproc.putText(srcMat,"Match Success",new Point(x,y),Imgproc.FONT_HERSHEY_SCRIPT_COMPLEX, 1.0, new Scalar(0, 255, 0),1,Imgproc.LINE_AA);
-//            // 8 显示结果
-//            HighGui.imshow("模板匹配", srcMat);
-//            HighGui.waitKey(0);
-//        }
-
-        return matchVal;
-    }
-
-    private static Core.MinMaxLocResult getLocResult(int method, Mat templete, Mat demo) {
-        int width=templete.cols()-demo.cols()+1;
-        int height=templete.rows()-demo.rows()+1;
-        // 3 创建32位模板匹配结果Mat
-        Mat result=new Mat(width,height,CvType.CV_32FC1);
-        // 4 调用 模板匹配函数
-        Imgproc.matchTemplate(templete, demo, result, method);
-        // 5 归一化
-//        Core.normalize(result, result,0, 1, Core.NORM_MINMAX, -1, new Mat());
-        // 6 获取模板匹配结果
-        Core.MinMaxLocResult mmr = Core.minMaxLoc(result);
-        return mmr;
-    }
-
-}

+ 3 - 16
fhKeeper/formulahousekeeper/management-crm/src/main/resources/application.yml

@@ -51,19 +51,6 @@ spring:
   messages:
     basename: i18n.messages #配置国际化资源文件路径
     encoding: UTF-8
-
-  ##AD认证
-  ldap:
-    ##AD服务器IP,默认端口389
-    urls: ldap://192.168.2.44:389
-    ##登录账号
-    username: zhangsan@yurk.cn
-    ##密码
-    password: Zs123456
-    #distinguishedName的部分节点
-    base:
-      dcFirst: yurk
-      dcSecond: cn
 ##########日志配置
 logging:
   level:
@@ -100,7 +87,7 @@ mybatis:
 #####配置图片上传路径####
 upload:
   path: C:/upload/
-  file: C:/file/
+#  file: C:/file/
 picrecongnize:
   browser: C:/picrecongnize/browser/
   develop: C:/picrecongnize/develop/
@@ -183,5 +170,5 @@ supersonic:
   password: e6+jQ26AESREiBBuKM1u1A==
 
 aiask:
-  fileaskurl: http://192.168.2.5:5000/analyze
-  askurl: http://192.168.2.5:5000/analyzeOnlyQuestion
+  fileaskurl: http://123.60.32.117:5000/analyze
+  askurl: http://123.60.32.117:5000/analyzeOnlyQuestion

+ 9 - 3
fhKeeper/formulahousekeeper/management-crm/src/main/resources/mapper/ClueMapper.xml

@@ -99,7 +99,9 @@
                 c.id DESC
             </otherwise>
         </choose>
-        limit #{pageIndex},#{pageFrom}
+        <if test="pageIndex != null and pageFrom !=null">
+            limit #{pageIndex},#{pageFrom}
+        </if>
     </select>
     <select id="list1" resultType="com.management.platform.entity.Clue">
         select c.id,
@@ -173,7 +175,9 @@
                 c.id DESC
             </otherwise>
         </choose>
-        limit #{clue.pageIndex},#{clue.pageFrom}
+        <if test="clue.pageIndex != null and clue.pageFrom !=null">
+            limit #{clue.pageIndex},#{clue.pageFrom}
+        </if>
     </select>
     <select id="list2" resultType="com.management.platform.entity.Clue">
         select c.id,
@@ -245,7 +249,9 @@
                 c.id DESC
             </otherwise>
         </choose>
-        limit #{clue.pageIndex},#{clue.pageFrom}
+        <if test="clue.pageIndex != null and clue.pageFrom !=null">
+            limit #{clue.pageIndex},#{clue.pageFrom}
+        </if>
     </select>
     <select id="getTotal" resultType="java.lang.Integer">
         select count(*)

+ 8 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/TaskFilesController.java

@@ -5,10 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.management.platform.entity.*;
 import com.management.platform.mapper.*;
-import com.management.platform.service.CompanyDingdingService;
-import com.management.platform.service.ProjectDocumentService;
-import com.management.platform.service.TaskFilesService;
-import com.management.platform.service.WxCorpInfoService;
+import com.management.platform.service.*;
 import com.management.platform.task.SFTPAsyncUploader;
 import com.management.platform.util.DocumentTypeUtil;
 import com.management.platform.util.FileUtil;
@@ -86,6 +83,10 @@ public class TaskFilesController {
     private TaskFilesService taskFilesService;
     @Autowired
     private TaskExecutorMapper taskExecutorMapper;
+    @Autowired
+    private PermissionService permissionService;
+    @Autowired
+    private SysFunctionService sysFunctionService;
 
     @PostMapping("/reUploadFile")
     public HttpRespMsg reUploadFile(@RequestParam Integer projectId,
@@ -598,9 +599,10 @@ public class TaskFilesController {
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id",user.getCompanyId()));
         CompanyDingding dingding = companyDingdingService.getOne(new LambdaQueryWrapper<CompanyDingding>().eq(CompanyDingding::getCompanyId, user.getCompanyId()));
 
-        //审核通过的  或者是老文件 所有人都能看到
+        //审核通过的  或者是老文件 所有人都能看到;或是有查看待审核文件的权限的人
+        boolean canViewAuditFile = sysFunctionService.hasPriviledge(user.getRoleId(), "查看他人审核文件");
         //审核不通过的需要判断 登录人 是否是 文件上传人/审核人一、二中的一个 ,能则可以看到
-        List<TaskFiles> list = taskFilesMapper.getTaskFiles(taskId,user.getId());
+        List<TaskFiles> list = taskFilesMapper.getTaskFiles(taskId,user.getId(), canViewAuditFile);
 
         List<String> allIds = new ArrayList<>();
         List<String> chargeOneIds = list.stream().filter(t -> org.apache.commons.lang3.StringUtils.isNotBlank(t.getChargeOneId()))

+ 1 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/vo/OtherTaskFileInfoVO.java

@@ -14,6 +14,7 @@ public class OtherTaskFileInfoVO {
     private String creatorName;
 
     private String documentName;
+    private String url;
     private String finalChargeId;
     private String finalChargeName;
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/TaskFilesMapper.java

@@ -18,7 +18,7 @@ public interface TaskFilesMapper extends BaseMapper<TaskFiles> {
 
     List<Integer> getAllNeedChargeTaskIds();
 
-    List<TaskFiles> getTaskFiles(@Param("taskId") Integer taskId, @Param("userId") String userId);
+    List<TaskFiles> getTaskFiles(@Param("taskId") Integer taskId, @Param("userId") String userId, @Param("canViewAuditFiles") Boolean canViewAuditFiles);
 
     List<TaskFiles> getAllNeedChargeTaskFiles();
 

+ 0 - 24
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/TaskServiceImpl.java

@@ -1009,35 +1009,11 @@ public class TaskServiceImpl extends ServiceImpl<TaskMapper, Task> implements Ta
                 .eq(User::getIsActive, 1)
         );
 
-//        WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id",user.getCompanyId()));
-//        CompanyDingding dingding = companyDingdingService.getOne(new LambdaQueryWrapper<CompanyDingding>().eq(CompanyDingding::getCompanyId, user.getCompanyId()));
-
         if(CollectionUtils.isNotEmpty(list)){
             Map<String, User> userMap = users.stream().collect(Collectors.toMap(User::getId, t -> t));
             for (OtherTaskFileInfoVO otherTaskFileInfoVO : list) {
                 User chargeUser = userMap.getOrDefault(otherTaskFileInfoVO.getFinalChargeId(), null);
                 otherTaskFileInfoVO.setFinalChargeName(null==chargeUser?"":chargeUser.getName());
-//                User createrUser = userMap.get(otherTaskFileInfoVO.getCreatorId());
-//                User finalChargeUser = userMap.get(otherTaskFileInfoVO.getFinalChargeId());
-//                String createrUserWxId = "";
-//                String chargeUserWxId = "";
-//                if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
-//                    createrUserWxId = createrUser.getCorpwxRealUserid();
-//                    chargeUserWxId = finalChargeUser.getCorpwxRealUserid();
-//                }else if(dingding!=null&&dingding.getContactNeedTranslate()==1){
-//                    createrUserWxId = createrUser.getDingdingUserid();
-//                    chargeUserWxId = finalChargeUser.getDingdingUserid();
-//                }
-//                if(StringUtils.isNotBlank(createrUserWxId)){
-//                    otherTaskFileInfoVO.setCreatorName("$userName=" + createrUserWxId + "$");
-//                }else{
-//                    otherTaskFileInfoVO.setCreatorName(createrUser.getName());
-//                }
-//                if(StringUtils.isNotBlank(chargeUserWxId)){
-//                    otherTaskFileInfoVO.setFinalChargeName("$userName=" + chargeUserWxId + "$");
-//                }else{
-//                    otherTaskFileInfoVO.setFinalChargeName(finalChargeUser.getName());
-//                }
             }
         }
 

+ 5 - 3
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/TaskFilesMapper.xml

@@ -32,11 +32,13 @@
         select *
         from task_files
         where task_id = #{taskId}
-          and (
+        <if test="!canViewAuditFiles">
+            and (
             charge_one_id = #{userId} or charge_two_id = #{userId} or creator_id = #{userId}
-                or need_file_charge = 0
-                or final_charge_status = 1
+            or need_file_charge = 0
+            or final_charge_status = 1
             )
+        </if>
         ORDER BY indate desc
     </select>
     <select id="getAllNeedChargeTaskFiles" resultType="com.management.platform.entity.TaskFiles">

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

@@ -741,7 +741,7 @@
         group by project_id
     </select>
     <select id="getOtherTaskChargePage" resultType="com.management.platform.entity.vo.OtherTaskFileInfoVO">
-        select tf.task_id,task.name as taskName
+        select tf.task_id,task.name as taskName,tf.url
         ,p.id as projectId,p.project_name,task.group_id
         ,tf.creator_id,tf.creator_name,tf.document_name
         ,case tf.charge_stage

+ 4 - 7
fhKeeper/formulahousekeeper/timesheet/src/views/task/list.vue

@@ -249,13 +249,11 @@
                             </div>
                         </template>
                     </el-table-column>
-                    <el-table-column label="文件名称" v-if="documentRadios == '待他人审核'">
+                    <el-table-column label="文件名称" v-if="documentRadios == '待他人审核'" prop="documentName">
                         <template slot-scope="scope">
-                            <template slot-scope="scope">
-                                <el-link @click.stop.native="viewOnline(scope.row)">
-                                    {{scope.row.documentName}}
-                                </el-link>
-                            </template>
+                            <el-link @click.stop.native="viewOnline(scope.row)">
+                                {{scope.row.documentName}}
+                            </el-link>
                         </template>
                     </el-table-column>
                     <el-table-column prop="executorName" :label="$t('zhi-hang-ren')" sortable>
@@ -2064,7 +2062,6 @@ import { getThemeColor } from '@/utils/commonMethod.js'
                 this.title=this.$t('createtask ');
                 this.commentList = [];
                 this.showOrNot = true
-
                 let obj = {
                     create: true,
                     addForm: this.addForm,