Просмотр исходного кода

与ccpm系统实现数据同步调整

sangwenwei 6 месяцев назад
Родитель
Сommit
43d9e9403a
16 измененных файлов с 792 добавлено и 62 удалено
  1. 11 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/JeeplusFinanceApplication.java
  2. 338 36
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/controller/CcpmList.java
  3. 290 22
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/controller/receiveData.java
  4. 6 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/vo/RuralProjectRecordsVo.java
  5. 44 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/vo/WorkClientAttachment.java
  6. 6 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/vo/WorkClientInfoVo.java
  7. 4 1
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/vo/WorkContractInfoVo.java
  8. 70 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/config/ConnectionService.java
  9. 1 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/CwProjectClientContactMapper.java
  10. 4 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/CwProjectClientContactMapper.xml
  11. 2 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectReportData.java
  12. 2 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/workClientInfo/mapper/CwWorkClientBaseMapper.java
  13. 3 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/workClientInfo/mapper/xml/CwWorkClientBaseMapper.xml
  14. 1 0
      jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/workClientInfo/service/CwWorkClientService.java
  15. 9 0
      jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/FlowableTaskController.java
  16. 1 1
      jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/mapper/xml/UserMapper.xml

+ 11 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/JeeplusFinanceApplication.java

@@ -1,8 +1,12 @@
 package com.jeeplus.finance;
 
 import com.jeeplus.core.annotation.JeeplusCloudApplication;
+import com.jeeplus.finance.config.ConnectionService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 
+import javax.annotation.PostConstruct;
+
 /**
  * 测试模块
  *
@@ -12,6 +16,9 @@ import org.springframework.boot.SpringApplication;
 
 @JeeplusCloudApplication
 public class JeeplusFinanceApplication {
+    @Autowired
+    private ConnectionService connectionService;
+
     public static void main(String[] args) {
         SpringApplication.run ( JeeplusFinanceApplication.class, args );
         System.out.println ( " O(∩_∩)O~ 财务模块启动成功 ^_^゙  \n" + "    _                         _                   _                  _   \n" +
@@ -25,4 +32,8 @@ public class JeeplusFinanceApplication {
     }
 
 
+    @PostConstruct
+    public void init() {
+        connectionService.startCheckingConnection(); // 启动连接检查
+    }
 }

+ 338 - 36
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/controller/CcpmList.java

@@ -1,44 +1,47 @@
 package com.jeeplus.finance.ccpm.controller;
 
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.TypeReference;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.jeeplus.finance.ccpm.service.ccpm.FlowRequest;
-import com.jeeplus.finance.ccpm.vo.RuralProjectRecordsVo;
-import com.jeeplus.finance.ccpm.vo.WorkClientBankVo;
-import com.jeeplus.finance.ccpm.vo.WorkClientInfoVo;
-import com.jeeplus.finance.ccpm.vo.WorkContractInfoVo;
-import com.jeeplus.finance.contractRegistration.domain.ContractFile;
+import com.jeeplus.finance.ccpm.vo.*;
 import com.jeeplus.finance.contractRegistration.domain.ContractFilePaper;
 import com.jeeplus.finance.contractRegistration.domain.ContractInfo;
-import com.jeeplus.finance.contractRegistration.mapper.ContractFileMapper;
 import com.jeeplus.finance.contractRegistration.mapper.ContractFilePaperMapper;
 import com.jeeplus.finance.contractRegistration.mapper.ContractInfoMapper;
+import com.jeeplus.finance.projectRecords.domain.CwProjectClientContact;
 import com.jeeplus.finance.projectRecords.domain.CwProjectRecords;
+import com.jeeplus.finance.projectRecords.mapper.CwProjectClientContactMapper;
 import com.jeeplus.finance.projectRecords.mapper.CwProjectRecordsMapper;
-import com.jeeplus.finance.projectRecords.service.dto.CwProjectRecordsDTO;
 import com.jeeplus.finance.projectReport.domain.*;
 import com.jeeplus.finance.projectReport.mapper.*;
 import com.jeeplus.finance.utils.RestTemplateService;
-import com.jeeplus.finance.utils.RestUtil;
-import com.jeeplus.finance.workClientInfo.domain.*;
+
+import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBase;
+import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBilling;
+import com.jeeplus.finance.workClientInfo.domain.CwWorkClientContact;
+import com.jeeplus.finance.workClientInfo.domain.CwWorkClientType;
 import com.jeeplus.finance.workClientInfo.mapper.CwWorkClientBaseMapper;
 import com.jeeplus.finance.workClientInfo.mapper.CwWorkClientBillingMapper;
+import com.jeeplus.finance.workClientInfo.mapper.CwWorkClientContactMapper;
 import com.jeeplus.finance.workClientInfo.mapper.CwWorkClientTypeMapper;
-
 import com.jeeplus.sys.domain.Area;
-import com.jeeplus.sys.feign.IAreaApi;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import com.jeeplus.sys.feign.*;
 
 
-import com.jeeplus.sys.feign.IDictApi;
+import com.jeeplus.sys.service.dto.OfficeDTO;
+import com.jeeplus.sys.service.dto.UserDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
@@ -89,20 +92,37 @@ public class CcpmList  {
     @Autowired
     private ContractFilePaperMapper contractFilePaperMapper;
 
+    @Resource
+    private CwWorkClientContactMapper cwWorkClientContactMapper;
+
+    @Resource
+    private CwProjectClientContactMapper cwProjectClientContactMapper;
+
+
 
 
 
-    @PostConstruct
-    public void initMethod() throws Exception {
-        getProjectList();
-        getWorkContract();
-        getAllClient();
+//    @PostConstruct
+//    public void initMethod() throws Exception {
+//        //获取所有的用户信息
+//        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+//        getAllClient(allUserInfo);
+//        getWorkContract(allUserInfo);
+//        getProjectList(allUserInfo);
+//    }
+
+    public void getCcpmMethod() throws Exception {
+        //获取所有的用户信息
+        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
+        getAllClient(allUserInfo);
+        getWorkContract(allUserInfo);
+        getProjectList(allUserInfo);
     }
 
     /*8
     获取项目信息
      */
-    public void getProjectList() throws Exception {
+    public void getProjectList( List<UserDTO> allUserInfo) throws Exception {
         //ccpm系统中的项目信息
         Object projectList = flowRequest.getProjectList();
         System.out.println(projectList);
@@ -116,6 +136,7 @@ public class CcpmList  {
             cwProjectReportSignAndIssueMapper.deleteByTenantId();
             cwProjectReportOnlineArchivingMapper.deleteByTenantId();
             cwProjectReportPaperArchivingMapper.deleteByTenantId();
+            cwProjectClientContactMapper.deleteByTenantId();
             //将获取到的项目信息通过遍历的方式插入到数据表中
             if (CollectionUtils.isNotEmpty(ruralProjectRecordsVos)){
                 for (RuralProjectRecordsVo recordsVo : ruralProjectRecordsVos) {
@@ -139,9 +160,32 @@ public class CcpmList  {
                         cwProjectRecords.setProjectNumber(recordsVo.getProjectId());//项目编号
                         cwProjectRecords.setContractId(recordsVo.getWorkContractInfo().getId());
                         cwProjectRecords.setProjectName(recordsVo.getProjectName());
-                        cwProjectRecords.setProjectType(recordsVo.getProjectType());
+                        if (StringUtils.isNotBlank(recordsVo.getProjectType())){
+                            if (recordsVo.getProjectType().equals("2")){
+                                cwProjectRecords.setProjectType("1");//造价
+                                cwProjectRecords.setReportType(recordsVo.getAttachmentProjectSort()); //项目类别
+                            }else {
+                                cwProjectRecords.setProjectType("2");
+                                cwProjectRecords.setReportType(recordsVo.getAttachmentProjectSort());
+                            }
+                        }
                         cwProjectRecords.setStatus(recordsVo.getProjectStatus()+"");
-                        cwProjectRecords.setCreateById("1");
+                        if (StringUtils.isNotBlank(recordsVo.getCreateNamePhone())){
+                            Optional<String> matchingUserId = allUserInfo.stream()
+                                    .filter(user -> user.getMobile().equals(recordsVo.getCreateNamePhone()))
+                                    .map(UserDTO::getId)
+                                    .findFirst();
+                            if (matchingUserId.isPresent()) {
+                                UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getById(matchingUserId.get());
+                                if (userDTO != null) {
+                                    cwProjectRecords.setCreateById(userDTO.getId());
+                                    cwProjectRecords.setUpdateById(userDTO.getId());
+                                    cwProjectRecords.setOfficeId(userDTO.getOfficeDTO().getId());
+                                }
+                            }
+
+                        }
+                        cwProjectRecords.setCreateTime(recordsVo.getCreateDate());
                         cwProjectRecords.setTenantId("ccpm");
                         //获取项目所在地
                         List<Area> areaDTO = SpringUtil.getBean(IAreaApi.class).getAreaDTOByName(recordsVo.getArea().getName());
@@ -164,7 +208,64 @@ public class CcpmList  {
                                 }
                             }
                         }
+                        //项目等级
+                        if (StringUtils.isNotBlank(recordsVo.getSubmitMoney())){
+                            if (recordsVo.getSubmitMoney().equals("1")){
+                                cwProjectRecords.setProjectLevel("2");
+                            }else {
+                                cwProjectRecords.setProjectLevel("1");
+                            }
+                        }
+
+                        //项目金额
+                        if (ObjectUtils.isNotEmpty(recordsVo.getTotalFees())){
+                            cwProjectRecords.setProjectMoney(recordsVo.getTotalFees().toString());
+                        }
+
+                        //项目开始时间结束时间
+                        cwProjectRecords.setProjectStartTime(recordsVo.getStartDate());
+                        cwProjectRecords.setProjectEndTime(recordsVo.getEndDate());
+                        //工程类型
+                        cwProjectRecords.setEngineeringType(recordsVo.getEngineeringType());
+                        //项目负责人
+                        if (StringUtils.isNotBlank(recordsVo.getProjectMasterPhone())){
+                            Optional<String> matchingUserId = allUserInfo.stream()
+                                    .filter(user -> user.getMobile().equals(recordsVo.getProjectMasterPhone()))
+                                    .map(UserDTO::getId)
+                                    .findFirst();
+                            if (matchingUserId.isPresent()){
+                                UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getById(matchingUserId.get());
+                                if (userDTO != null){
+                                    cwProjectRecords.setProjectLeaderId(userDTO.getId());
+                                }
+                            }
+
+                        }
                         cwProjectRecordsMapper.insert(cwProjectRecords);
+                        //项目联系人
+                        if (CollectionUtils.isNotEmpty(recordsVo.getWorkClientLinkmanList())){
+                            for (WorkClientLinkman workClientLinkman : recordsVo.getWorkClientLinkmanList()) {
+                                if (workClientLinkman.getClientId() != null){
+                                    CwProjectClientContact cwProjectClientContact = new CwProjectClientContact();
+                                    cwProjectClientContact.setProjectId(recordsVo.getId());
+                                    cwProjectClientContact.setClientId(workClientLinkman.getId());
+                                    cwProjectClientContact.setEmail(workClientLinkman.getEmail());
+                                    cwProjectClientContact.setContactFirst(workClientLinkman.getLinkMobile());
+                                    cwProjectClientContact.setContactSecond(workClientLinkman.getLinkPhone());
+                                    cwProjectClientContact.setName(workClientLinkman.getName());
+                                    cwProjectClientContact.setPosition(workClientLinkman.getPosition());
+                                    if (StringUtils.isNotBlank(workClientLinkman.getOffice())){
+                                        OfficeDTO officeDTOByName = SpringUtil.getBean(IOfficeApi.class).getOfficeDTOByName(workClientLinkman.getOffice());
+                                        if (officeDTOByName != null){
+                                            cwProjectClientContact.setOfficeId(officeDTOByName.getId());
+                                        }
+                                    }
+                                    cwProjectClientContact.setClientContactId(workClientLinkman.getClientId().getId());
+                                    cwProjectClientContact.setTenantId("ccpm");
+                                    cwProjectClientContactMapper.insert(cwProjectClientContact);
+                                }
+                            }
+                        }
                     }
                     //质量复核
                     if (StringUtils.isNotBlank(recordsVo.getPrdId())){
@@ -173,7 +274,18 @@ public class CcpmList  {
                         cwProjectReviewNew.setProjectId(recordsVo.getId());
                         cwProjectReviewNew.setReviewStatus(recordsVo.getProjectReportStatus().toString());
                         cwProjectReviewNew.setTenantId("ccpm");
-                        cwProjectReviewNew.setCreateById("1");
+                        if (StringUtils.isNotBlank(recordsVo.getCreateNamePhone())){
+                            Optional<String> matchingUserId = allUserInfo.stream()
+                                    .filter(user -> user.getMobile().equals(recordsVo.getCreateNamePhone()))
+                                    .map(UserDTO::getId)
+                                    .findFirst();
+                            if (matchingUserId.isPresent()){
+                                cwProjectReviewNew.setCreateById(matchingUserId.get());
+                                cwProjectReviewNew.setUpdateById(matchingUserId.get());
+                            }
+
+                        }
+                        cwProjectReviewNew.setCreateTime(recordsVo.getCreateDate());
                         cwProjectReviewNewMapper.insert(cwProjectReviewNew);
                     }
                     //报告
@@ -183,7 +295,18 @@ public class CcpmList  {
                         report.setId(id);
                         report.setProjectId(recordsVo.getId());
                         report.setTenantId("ccpm");
-                        report.setCreateById("1");
+                        if (StringUtils.isNotBlank(recordsVo.getCreateNamePhone())){
+                            Optional<String> matchingUserId = allUserInfo.stream()
+                                    .filter(user -> user.getMobile().equals(recordsVo.getCreateNamePhone()))
+                                    .map(UserDTO::getId)
+                                    .findFirst();
+                            if (matchingUserId.isPresent()){
+                                report.setCreateById(matchingUserId.get());
+                                report.setUpdateById(matchingUserId.get());
+                            }
+
+                        }
+                        report.setCreateTime(recordsVo.getCreateDate());
                         cwProjectReportMapper.insert(report);
 
                         //报告编号
@@ -192,7 +315,18 @@ public class CcpmList  {
                         cwProjectInfoData.setReportId(id);
                         cwProjectInfoData.setReportNo(recordsVo.getProjectReportNumber());
                         cwProjectInfoData.setTenantId("ccpm");
-                        cwProjectInfoData.setCreateById("1");
+                        if (StringUtils.isNotBlank(recordsVo.getCreateNamePhone())){
+                            Optional<String> matchingUserId = allUserInfo.stream()
+                                    .filter(user -> user.getMobile().equals(recordsVo.getCreateNamePhone()))
+                                    .map(UserDTO::getId)
+                                    .findFirst();
+                            if (matchingUserId.isPresent()){
+                                cwProjectInfoData.setCreateById(matchingUserId.get());
+                                cwProjectInfoData.setUpdateById(matchingUserId.get());
+                            }
+
+                        }
+                        cwProjectInfoData.setCreateTime(recordsVo.getCreateTime());
                         cwProjectInfoMapper.insert(cwProjectInfoData);
                     }
                     //报告签发
@@ -206,7 +340,18 @@ public class CcpmList  {
 
                         }
                         cwProjectReportSignAndIssue.setTenantId("ccpm");
-                        cwProjectReportSignAndIssue.setCreateById("1");
+                        if (StringUtils.isNotBlank(recordsVo.getCreateNamePhone())){
+                            Optional<String> matchingUserId = allUserInfo.stream()
+                                    .filter(user -> user.getMobile().equals(recordsVo.getCreateNamePhone()))
+                                    .map(UserDTO::getId)
+                                    .findFirst();
+                            if (matchingUserId.isPresent()){
+                                cwProjectReportSignAndIssue.setCreateById(matchingUserId.get());
+                                cwProjectReportSignAndIssue.setUpdateById(matchingUserId.get());
+                            }
+
+                        }
+                        cwProjectReportSignAndIssue.setCreateTime(recordsVo.getCreateDate());
                         cwProjectReportSignAndIssueMapper.insert(cwProjectReportSignAndIssue);
                     }
 
@@ -220,7 +365,18 @@ public class CcpmList  {
                             cwProjectReportOnlineArchiving.setStatus("");
                         }
                         cwProjectReportOnlineArchiving.setTenantId("ccpm");
-                        cwProjectReportOnlineArchiving.setCreateById("1");
+                        if (StringUtils.isNotBlank(recordsVo.getCreateNamePhone())){
+                            Optional<String> matchingUserId = allUserInfo.stream()
+                                    .filter(user -> user.getMobile().equals(recordsVo.getCreateNamePhone()))
+                                    .map(UserDTO::getId)
+                                    .findFirst();
+                            if (matchingUserId.isPresent()){
+                                cwProjectReportOnlineArchiving.setCreateById(matchingUserId.get());
+                                cwProjectReportOnlineArchiving.setUpdateById(matchingUserId.get());
+                            }
+
+                        }
+                        cwProjectReportOnlineArchiving.setCreateTime(recordsVo.getCreateDate());
                         cwProjectReportOnlineArchivingMapper.insert(cwProjectReportOnlineArchiving);
                     }
                     //纸质归档
@@ -234,8 +390,18 @@ public class CcpmList  {
                             cwProjectReportPaperArchiving.setStatus("");
                         }
                         cwProjectReportPaperArchiving.setTenantId("ccpm");
-                        cwProjectReportPaperArchiving.setCreateById("1");
-                        cwProjectReportPaperArchiving.setUpdateById("1");
+                        if (StringUtils.isNotBlank(recordsVo.getCreateNamePhone())){
+                            Optional<String> matchingUserId = allUserInfo.stream()
+                                    .filter(user -> user.getMobile().equals(recordsVo.getCreateNamePhone()))
+                                    .map(UserDTO::getId)
+                                    .findFirst();
+                            if (matchingUserId.isPresent()){
+                                cwProjectReportPaperArchiving.setCreateById(matchingUserId.get());
+                                cwProjectReportPaperArchiving.setUpdateById(matchingUserId.get());
+                            }
+
+                        }
+                        cwProjectReportPaperArchiving.setCreateTime(recordsVo.getCreateDate());
                         cwProjectReportPaperArchivingMapper.insert(cwProjectReportPaperArchiving);
                     }
                 }
@@ -249,7 +415,7 @@ public class CcpmList  {
     /**
      * 获取合同信息
      */
-    public void getWorkContract(){
+    public void getWorkContract( List<UserDTO> allUserInfo){
         //ccpm系统中的合同信息
         Object contractList = flowRequest.getWorkContractList();
         System.out.println(contractList);
@@ -263,8 +429,17 @@ public class CcpmList  {
                 for (WorkContractInfoVo contractInfoVo : workContractInfoVos) {
                     ContractInfo workContractInfo = new ContractInfo();
                     workContractInfo.setId(contractInfoVo.getId());//id
-                    workContractInfo.setCreateById("1");
-                    workContractInfo.setCreateTime(new Date());
+                    if (StringUtils.isNotBlank(contractInfoVo.getCreateUserMobile())){
+                        Optional<String> matchingUserId = allUserInfo.stream()
+                                .filter(user -> user.getMobile().equals(contractInfoVo.getCreateUserMobile()))
+                                .map(UserDTO::getId)
+                                .findFirst();
+                        if (matchingUserId.isPresent()){
+                            workContractInfo.setCreateById(matchingUserId.get());
+                            workContractInfo.setUpdateById(matchingUserId.get());
+                        }
+                    }
+                    workContractInfo.setCreateTime(contractInfoVo.getCreateDate());
                     workContractInfo.setContractName(contractInfoVo.getName());//合同名称
                     workContractInfo.setContractNo(contractInfoVo.getContractNum());//合同编号
                     workContractInfo.setClientContacts(contractInfoVo.getClient().getId());//客户id
@@ -302,17 +477,75 @@ public class CcpmList  {
                     workContractInfo.setFiledNo(contractInfoVo.getRecordNum());//案卷号
                     workContractFile.setFiledPaperType(contractInfoVo.getContrractRecordStatus());
                     workContractFile.setTenantId("ccpm");
-                    workContractFile.setCreateById("1");
+                    workContractFile.setCreateTime(contractInfoVo.getCreateDate());
+                    if (StringUtils.isNotBlank(contractInfoVo.getCreateUserMobile())){
+                        Optional<String> matchingUserId = allUserInfo.stream()
+                                .filter(user -> user.getMobile().equals(contractInfoVo.getCreateUserMobile()))
+                                .map(UserDTO::getId)
+                                .findFirst();
+                        if (matchingUserId.isPresent()){
+                            workContractFile.setCreateById(matchingUserId.get());
+                            workContractFile.setUpdateById(matchingUserId.get());
+                        }
+                    }
                     contractFilePaperMapper.insert(workContractFile);
+                    if (contractInfoVo.getWorkAttachments()!=null){
+                        SpringUtil.getBean ( IWorkAttachmentApi.class ).deleteByAttachmentId(contractInfoVo.getId());
+                        UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(contractInfoVo.getCreateUser());
+                        if (userDTO != null){
+                            saveWorkContractFiles(contractInfoVo.getWorkAttachments(),userDTO,contractInfoVo.getId(),"workcontract");
+
+                        }
+                    }
                 }
             }
         }
 
     }
 
+    /**
+     * 保存附件信息
+     * @param list 待保存的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveWorkContractFiles(List<WorkClientAttachment> list, UserDTO userDTO, String id,String flag) {
+        int j = 1;
+        for (WorkClientAttachment dto : list) {
+            WorkAttachmentInfo i = new WorkAttachmentInfo();
+            //包含了url、size、name
+            i.setId(UUID.randomUUID().toString().replace("-", ""));
+//            i.getCreateBy().setId(userDTO.getId());
+            i.setCreateTime(new Date());
+//            i.getUpdateBy().setId(userDTO.getId());
+            i.setUpdateTime(new Date());
+            i.setDelFlag(0);
+            i.setUrl(dto.getUrl());
+            //文件类型处理
+            List<String> strings = Arrays.asList(dto.getAttachmentName().split("\\."));
+            if (CollectionUtil.isNotEmpty(strings)) {
+                i.setType(strings.get(1));
+            }
+            i.setAttachmentId(id);
+            i.setAttachmentName(dto.getAttachmentName());
+            i.setAttachmentFlag(flag);
+            i.setFileSize(dto.getFileSize());
+            i.setSort(j);
+            Map<String,String> map = new HashMap<>();
+            String workAttachment = JSON.toJSONString((i));
+            String userDTOInfo = JSON.toJSONString((userDTO));
+            map.put("workAttachment",workAttachment);
+            map.put("userDTO",userDTOInfo);
+            SpringUtil.getBean ( IWorkAttachmentApi.class ).insertWorkAttachment(map);
+            j++;
+        }
+    }
+
 
     //获取ccpm中所有的客户信息
-    public void getAllClient(){
+    public void getAllClient( List<UserDTO> allUserInfo){
+
         Object clientList = flowRequest.getClientList();
         System.out.println(clientList);
         if (ObjectUtils.isNotEmpty(clientList)){
@@ -321,20 +554,35 @@ public class CcpmList  {
             cwWorkClientBaseMapper.deleteByTenantId();
             cwWorkClientBillingMapper.deleteByTenantId();
             cwWorkClientTypeMapper.deleteByTenantId();
+            cwWorkClientBaseMapper.deleteLinkmanByTenantId();
             for (WorkClientInfoVo workClientInfoVo : workClientInfoVos) {
                 //客户基本信息
                 CwWorkClientBase cwWorkClientBase = new CwWorkClientBase();
                 cwWorkClientBase.setId(workClientInfoVo.getId());
-                cwWorkClientBase.setCreateById("1");
+                if (StringUtils.isNotBlank(workClientInfoVo.getCreateMobile())){
+                    Optional<String> matchingUserId = allUserInfo.stream()
+                            .filter(user -> user.getMobile().equals(workClientInfoVo.getCreateMobile()))
+                            .map(UserDTO::getId)
+                            .findFirst();
+                    if (matchingUserId.isPresent()){
+                        cwWorkClientBase.setCreateById(matchingUserId.get());
+                        cwWorkClientBase.setUpdateById(matchingUserId.get());
+                    }
+
+                }
                 cwWorkClientBase.setName(workClientInfoVo.getName());//客户名称
                 cwWorkClientBase.setIsUscCode(workClientInfoVo.getHasUscc()+"");//是否有统一社会信用代码
                 cwWorkClientBase.setUscCode(workClientInfoVo.getUscCode());//统一社会信用代码
                 cwWorkClientBase.setAddress(workClientInfoVo.getRegisterAddress());//地址
                 cwWorkClientBase.setMobile(workClientInfoVo.getTelephone()); //电话
-                cwWorkClientBase.setIndustry(workClientInfoVo.getCompanyIndustry()); //所属行业
-                cwWorkClientBase.setType(workClientInfoVo.getClientType()); //客户类型
+                if (StringUtils.isNotBlank(workClientInfoVo.getCompanyIndustry())){
+                    String dictValue = SpringUtil.getBean(IDictApi.class).getDictValue(workClientInfoVo.getCompanyIndustry(), "cw_work_client_industry", "");
+                    cwWorkClientBase.setIndustry(dictValue); //所属行业
+                }
+
                 cwWorkClientBase.setStatus("5");
                 cwWorkClientBase.setTenantId("ccpm");
+                cwWorkClientBase.setCreateTime(workClientInfoVo.getCreateDate());
                 cwWorkClientBaseMapper.insert(cwWorkClientBase);
                 //修改客户开户行信息
                 if (CollectionUtils.isNotEmpty(workClientInfoVo.getWorkClientBankList())){
@@ -344,6 +592,18 @@ public class CcpmList  {
                         clientBilling.setClientId(workClientBank.getClientId().getId());
                         clientBilling.setAccountHolder(workClientBank.getOurBank());//开户行
                         clientBilling.setAccount(workClientBank.getBankNumber());//银行账号
+                        if (StringUtils.isNotBlank(workClientInfoVo.getCreateMobile())){
+                            Optional<String> matchingUserId = allUserInfo.stream()
+                                    .filter(user -> user.getMobile().equals(workClientInfoVo.getCreateMobile()))
+                                    .map(UserDTO::getId)
+                                    .findFirst();
+                            if (matchingUserId.isPresent()){
+                                clientBilling.setCreateById(matchingUserId.get());
+                                clientBilling.setUpdateById(matchingUserId.get());
+                            }
+
+                        }
+                        clientBilling.setCreateTime(workClientInfoVo.getCreateDate());
                         clientBilling.setTenantId("ccpm");
                         cwWorkClientBillingMapper.insert(clientBilling);
 
@@ -354,8 +614,50 @@ public class CcpmList  {
                 cwWorkClientType.setIsListed("0");
                 cwWorkClientType.setTenantId("ccpm");
                 cwWorkClientType.setClientId(workClientInfoVo.getId());
+                cwWorkClientType.setCreateTime(workClientInfoVo.getCreateDate());
+                if (StringUtils.isNotBlank(workClientInfoVo.getCreateMobile())){
+                    Optional<String> matchingUserId = allUserInfo.stream()
+                            .filter(user -> user.getMobile().equals(workClientInfoVo.getCreateMobile()))
+                            .map(UserDTO::getId)
+                            .findFirst();
+                    if (matchingUserId.isPresent()){
+                        cwWorkClientType.setCreateById(matchingUserId.get());
+                        cwWorkClientType.setUpdateById(matchingUserId.get());
+                    }
+                }
                 cwWorkClientTypeMapper.insert(cwWorkClientType);
 
+                //客户联系人
+                CwWorkClientContact cwWorkClientContact = new CwWorkClientContact();
+                if (workClientInfoVo.getWorkClientLinkmanList() != null){
+                    for (WorkClientLinkman clientLinkman : workClientInfoVo.getWorkClientLinkmanList()) {
+                        cwWorkClientContact.setId(clientLinkman.getId());
+                        cwWorkClientContact.setTenantId("ccpm");
+                        cwWorkClientContact.setClientId(workClientInfoVo.getId());
+                        cwWorkClientContact.setEmail(clientLinkman.getEmail());
+                        cwWorkClientContact.setContactFirst(clientLinkman.getLinkMobile());
+                        cwWorkClientContact.setContactSecond(clientLinkman.getLinkPhone());
+                        if (StringUtils.isNotBlank(clientLinkman.getOffice())){
+                            OfficeDTO officeDTOByName = SpringUtil.getBean(IOfficeApi.class).getOfficeDTOByName(clientLinkman.getOffice());
+                            if (officeDTOByName != null){
+                                cwWorkClientContact.setOfficeId(officeDTOByName.getId());
+                            }
+                        }
+                        cwWorkClientContact.setName(clientLinkman.getName());
+                        cwWorkClientContact.setPosition(clientLinkman.getPosition());
+                        cwWorkClientContactMapper.insert(cwWorkClientContact);
+                    }
+                }
+
+                if (workClientInfoVo.getWorkAttachments()!=null){
+                    SpringUtil.getBean ( IWorkAttachmentApi.class ).deleteByAttachmentId(workClientInfoVo.getId());
+                    UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(workClientInfoVo.getUserName());
+                    if (userDTO != null){
+                        saveWorkContractFiles(workClientInfoVo.getWorkAttachments(),userDTO,workClientInfoVo.getId(),"cw_work_client");
+                    }
+                }
+
+
 
             }
         }

+ 290 - 22
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/controller/receiveData.java

@@ -1,42 +1,42 @@
 package com.jeeplus.finance.ccpm.controller;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.extra.spring.SpringUtil;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.jeeplus.finance.ccpm.service.ccpm.FlowRequest;
-import com.jeeplus.finance.ccpm.vo.RuralProjectRecordsVo;
-import com.jeeplus.finance.ccpm.vo.WorkClientBankVo;
-import com.jeeplus.finance.ccpm.vo.WorkClientInfoVo;
-import com.jeeplus.finance.ccpm.vo.WorkContractInfoVo;
+import com.jeeplus.finance.ccpm.vo.*;
+import com.jeeplus.finance.ccpm.vo.WorkClientLinkman;
 import com.jeeplus.finance.contractRegistration.domain.ContractFilePaper;
 import com.jeeplus.finance.contractRegistration.domain.ContractInfo;
 import com.jeeplus.finance.contractRegistration.mapper.ContractFilePaperMapper;
 import com.jeeplus.finance.contractRegistration.mapper.ContractInfoMapper;
+import com.jeeplus.finance.projectRecords.domain.CwProjectClientContact;
 import com.jeeplus.finance.projectRecords.domain.CwProjectRecords;
+import com.jeeplus.finance.projectRecords.mapper.CwProjectClientContactMapper;
 import com.jeeplus.finance.projectRecords.mapper.CwProjectRecordsMapper;
 import com.jeeplus.finance.projectReport.domain.*;
 import com.jeeplus.finance.projectReport.mapper.*;
-import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBase;
-import com.jeeplus.finance.workClientInfo.domain.CwWorkClientBilling;
-import com.jeeplus.finance.workClientInfo.domain.CwWorkClientType;
-import com.jeeplus.finance.workClientInfo.mapper.CwWorkClientBaseMapper;
-import com.jeeplus.finance.workClientInfo.mapper.CwWorkClientBillingMapper;
-import com.jeeplus.finance.workClientInfo.mapper.CwWorkClientTypeMapper;
+import com.jeeplus.finance.workClientInfo.domain.*;
+import com.jeeplus.finance.workClientInfo.mapper.*;
 import com.jeeplus.finance.workClientInfo.service.dto.CwWorkClientBillingDTO;
 import com.jeeplus.sys.domain.Area;
-import com.jeeplus.sys.feign.IAreaApi;
-import com.jeeplus.sys.feign.IDictApi;
+import com.jeeplus.sys.domain.WorkAttachmentInfo;
+import com.jeeplus.sys.feign.*;
+import com.jeeplus.sys.service.dto.OfficeDTO;
+import com.jeeplus.sys.service.dto.UserDTO;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.Date;
-import java.util.List;
-import java.util.UUID;
+import javax.annotation.Resource;
+import java.util.*;
 
 @RestController
 @RequestMapping(value = "/ccpmData/data")
@@ -81,23 +81,40 @@ public class receiveData {
     @Autowired
     private ContractFilePaperMapper contractFilePaperMapper;
 
+    @Resource
+    private CwWorkClientContactMapper cwWorkClientContactMapper;
+    @Resource
+    private CwProjectClientContactMapper cwProjectClientContactMapper;
+
     //保存客户信息
     @PostMapping("/saveClient")
     public void saveClient(@RequestBody WorkClientInfoVo workClientInfoVo) {
+        //获取所有的用户信息
+        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
         if (ObjectUtils.isNotEmpty(workClientInfoVo)) {
             //先进行删除
             cwWorkClientBaseMapper.deleteClientById(workClientInfoVo.getId());
             //客户基本信息
             CwWorkClientBase clientBase = new CwWorkClientBase();
             clientBase.setId(workClientInfoVo.getId());
-            clientBase.setCreateById("1");
+            if (StringUtils.isNotBlank(workClientInfoVo.getCreateMobile())){
+                Optional<String> matchingUserId = allUserInfo.stream()
+                        .filter(user -> user.getMobile().equals(workClientInfoVo.getCreateMobile()))
+                        .map(UserDTO::getId)
+                        .findFirst();
+                if (matchingUserId.isPresent()){
+                    clientBase.setCreateById(matchingUserId.get());
+                    clientBase.setUpdateById(matchingUserId.get());
+                }
+
+            }
             clientBase.setName(workClientInfoVo.getName());//客户名称
             clientBase.setIsUscCode(workClientInfoVo.getHasUscc() + "");//是否有统一社会信用代码
             clientBase.setUscCode(workClientInfoVo.getUscCode());//统一社会信用代码
             clientBase.setAddress(workClientInfoVo.getRegisterAddress());//地址
             clientBase.setMobile(workClientInfoVo.getTelephone()); //电话
             clientBase.setIndustry(workClientInfoVo.getCompanyIndustry()); //所属行业
-            clientBase.setType(workClientInfoVo.getClientType()); //客户类型
+
             clientBase.setStatus("5");
             clientBase.setTenantId("ccpm");
             cwWorkClientBaseMapper.insert(clientBase);
@@ -114,6 +131,17 @@ public class receiveData {
                     clientBilling.setAccountHolder(workClientBank.getOurBank());//开户行
                     clientBilling.setAccount(workClientBank.getBankNumber());//银行账号
                     clientBilling.setTenantId("ccpm");
+                    if (StringUtils.isNotBlank(workClientInfoVo.getCreateMobile())){
+                        Optional<String> matchingUserId = allUserInfo.stream()
+                                .filter(user -> user.getMobile().equals(workClientInfoVo.getCreateMobile()))
+                                .map(UserDTO::getId)
+                                .findFirst();
+                        if (matchingUserId.isPresent()){
+                            clientBilling.setCreateById(matchingUserId.get());
+                            clientBilling.setUpdateById(matchingUserId.get());
+                        }
+
+                    }
                     cwWorkClientBillingMapper.insert(clientBilling);
 
                 }
@@ -127,13 +155,55 @@ public class receiveData {
             cwWorkClientType.setIsListed("0");
             cwWorkClientType.setTenantId("ccpm");
             cwWorkClientType.setClientId(workClientInfoVo.getId());
+            if (StringUtils.isNotBlank(workClientInfoVo.getCreateMobile())){
+                Optional<String> matchingUserId = allUserInfo.stream()
+                        .filter(user -> user.getMobile().equals(workClientInfoVo.getCreateMobile()))
+                        .map(UserDTO::getId)
+                        .findFirst();
+                if (matchingUserId.isPresent()){
+                    cwWorkClientType.setCreateById(matchingUserId.get());
+                    cwWorkClientType.setUpdateById(matchingUserId.get());
+                }
+
+            }
             cwWorkClientTypeMapper.insert(cwWorkClientType);
+            //客户联系人
+            cwWorkClientContactMapper.delete(new QueryWrapper<CwWorkClientContact>().eq("client_id",workClientInfoVo.getId()));
+            CwWorkClientContact cwWorkClientContact = new CwWorkClientContact();
+            if (workClientInfoVo.getWorkClientLinkmanList() != null){
+                for (WorkClientLinkman clientLinkman : workClientInfoVo.getWorkClientLinkmanList()) {
+                    cwWorkClientContact.setId(clientLinkman.getId());
+                    cwWorkClientContact.setTenantId("ccpm");
+                    cwWorkClientContact.setClientId(workClientInfoVo.getId());
+                    cwWorkClientContact.setEmail(clientLinkman.getEmail());
+                    cwWorkClientContact.setContactFirst(clientLinkman.getLinkMobile());
+                    cwWorkClientContact.setContactSecond(clientLinkman.getLinkPhone());
+                    if (StringUtils.isNotBlank(clientLinkman.getOffice())){
+                        OfficeDTO officeDTOByName = SpringUtil.getBean(IOfficeApi.class).getOfficeDTOByName(clientLinkman.getOffice());
+                        if (officeDTOByName != null){
+                            cwWorkClientContact.setOfficeId(officeDTOByName.getId());
+                        }
+                    }
+                    cwWorkClientContact.setName(clientLinkman.getName());
+                    cwWorkClientContact.setPosition(clientLinkman.getPosition());
+                    cwWorkClientContactMapper.insert(cwWorkClientContact);
+                }
+            }
+            if (workClientInfoVo.getWorkAttachments()!=null){
+                SpringUtil.getBean ( IWorkAttachmentApi.class ).deleteByAttachmentId(workClientInfoVo.getId());
+                UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(workClientInfoVo.getUserName());
+                if (userDTO != null){
+                    saveWorkContractFiles(workClientInfoVo.getWorkAttachments(),userDTO,workClientInfoVo.getId(),"cw_work_client");
+                }
+            }
         }
     }
 
     //保存合同及归档信息
     @PostMapping(value = "saveContractInfo")
     public void saveContractInfo(@RequestBody WorkContractInfoVo workContractInfoVo){
+        //获取所有的用户信息
+        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
         if (ObjectUtils.isNotEmpty(workContractInfoVo)){
             //先进行删除
             contractInfoMapper.deleteInfoById(workContractInfoVo.getId());
@@ -141,7 +211,17 @@ public class receiveData {
             ContractInfo workContractInfo = new ContractInfo();
             workContractInfo.setId(workContractInfoVo.getId());//id
             workContractInfo.setCreateTime(new Date());
-            workContractInfo.setCreateById("1");
+            if (StringUtils.isNotBlank(workContractInfoVo.getCreateUserMobile())){
+                Optional<String> matchingUserId = allUserInfo.stream()
+                        .filter(user -> user.getMobile().equals(workContractInfoVo.getCreateUserMobile()))
+                        .map(UserDTO::getId)
+                        .findFirst();
+                if (matchingUserId.isPresent()){
+                    workContractInfo.setCreateById(matchingUserId.get());
+                    workContractInfo.setUpdateById(matchingUserId.get());
+                }
+
+            }
             workContractInfo.setContractName(workContractInfoVo.getName());//合同名称
             workContractInfo.setContractNo(workContractInfoVo.getContractNum());//合同编号
             workContractInfo.setClientContacts(workContractInfoVo.getClient().getId());//客户id
@@ -177,26 +257,108 @@ public class receiveData {
             workContractInfo.setFiledNo(workContractInfoVo.getRecordNum());//案卷号
             workContractFile.setFiledPaperType(workContractInfoVo.getContrractRecordStatus());
             workContractFile.setTenantId("ccpm");
-            workContractFile.setCreateById("1");
+            if (StringUtils.isNotBlank(workContractInfoVo.getCreateUserMobile())){
+                Optional<String> matchingUserId = allUserInfo.stream()
+                        .filter(user -> user.getMobile().equals(workContractInfoVo.getCreateUserMobile()))
+                        .map(UserDTO::getId)
+                        .findFirst();
+                if (matchingUserId.isPresent()){
+                    workContractFile.setCreateById(matchingUserId.get());
+                    workContractFile.setUpdateById(matchingUserId.get());
+                }
+
+            }
             contractFilePaperMapper.insert(workContractFile);
+            if (workContractInfoVo.getWorkAttachments()!=null){
+                SpringUtil.getBean ( IWorkAttachmentApi.class ).deleteByAttachmentId(workContractInfoVo.getId());
+                UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(workContractInfoVo.getCreateUser());
+                if (userDTO != null){
+                    saveWorkContractFiles(workContractInfoVo.getWorkAttachments(),userDTO,workContractInfoVo.getId(),"workcontract");
+
+                }
+            }
         }
 
     }
 
+    /**
+     * 保存附件信息
+     * @param list 待保存的附件列表
+     * @param userDTO 当前登录用户
+     * @param id 关联id
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void saveWorkContractFiles(List<WorkClientAttachment> list, UserDTO userDTO, String id, String flag) {
+        int j = 1;
+        for (WorkClientAttachment dto : list) {
+            WorkAttachmentInfo i = new WorkAttachmentInfo();
+            //包含了url、size、name
+            i.setId(UUID.randomUUID().toString().replace("-", ""));
+//            i.getCreateBy().setId(userDTO.getId());
+            i.setCreateTime(new Date());
+//            i.getUpdateBy().setId(userDTO.getId());
+            i.setUpdateTime(new Date());
+            i.setDelFlag(0);
+            i.setUrl(dto.getUrl());
+            //文件类型处理
+            List<String> strings = Arrays.asList(dto.getAttachmentName().split("\\."));
+            if (CollectionUtil.isNotEmpty(strings)) {
+                i.setType(strings.get(1));
+            }
+            i.setAttachmentId(id);
+            i.setAttachmentName(dto.getAttachmentName());
+            i.setAttachmentFlag(flag);
+            i.setFileSize(dto.getFileSize());
+            i.setSort(j);
+            Map<String,String> map = new HashMap<>();
+            String workAttachment = JSON.toJSONString((i));
+            String userDTOInfo = JSON.toJSONString((userDTO));
+            map.put("workAttachment",workAttachment);
+            map.put("userDTO",userDTOInfo);
+            SpringUtil.getBean ( IWorkAttachmentApi.class ).insertWorkAttachment(map);
+            j++;
+        }
+    }
+
     //保存项目基本信息
     @PostMapping(value = "saveProjectInfo")
     public void saveProjectInfo(@RequestBody RuralProjectRecordsVo ruralProjectRecordsVo){
+        //获取所有的用户信息
+        List<UserDTO> allUserInfo = SpringUtil.getBean(IUserApi.class).getAllUserInfo();
         if (ObjectUtils.isNotEmpty(ruralProjectRecordsVo)){
             //先进行删除
             cwProjectRecordsMapper.deleteInfoById(ruralProjectRecordsVo.getId());
 
             CwProjectRecords cwProjectRecords = new CwProjectRecords();
             cwProjectRecords.setId(ruralProjectRecordsVo.getId());//项目id
-            cwProjectRecords.setCreateById("1");
+            if (StringUtils.isNotBlank(ruralProjectRecordsVo.getCreateNamePhone())){
+                Optional<String> matchingUserId = allUserInfo.stream()
+                        .filter(user -> user.getMobile().equals(ruralProjectRecordsVo.getCreateNamePhone()))
+                        .map(UserDTO::getId)
+                        .findFirst();
+                if (matchingUserId.isPresent()){
+                    UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getById(matchingUserId.get());
+                    if (userDTO != null){
+                        cwProjectRecords.setCreateById(userDTO.getId());
+                        cwProjectRecords.setUpdateById(userDTO.getId());
+                        //归属部门
+                        cwProjectRecords.setOfficeId(userDTO.getOfficeDTO().getId());
+                    }
+                }
+            }
+            cwProjectRecords.setCreateTime(ruralProjectRecordsVo.getCreateDate());
             cwProjectRecords.setProjectNumber(ruralProjectRecordsVo.getProjectId());//项目编号
             cwProjectRecords.setContractId(ruralProjectRecordsVo.getWorkContractInfo().getId());
             cwProjectRecords.setProjectName(ruralProjectRecordsVo.getProjectName());
-            cwProjectRecords.setProjectType(ruralProjectRecordsVo.getProjectType());
+            if (StringUtils.isNotBlank(ruralProjectRecordsVo.getProjectType())){
+                if (ruralProjectRecordsVo.getProjectType().equals("2")){
+                    cwProjectRecords.setProjectType("1");
+                    cwProjectRecords.setReportType(ruralProjectRecordsVo.getAttachmentProjectSort()); //项目类别
+                }else {
+                    cwProjectRecords.setProjectType("2");
+                    cwProjectRecords.setReportType(ruralProjectRecordsVo.getAttachmentProjectSort()); //项目类别
+                }
+            }
             cwProjectRecords.setStatus(ruralProjectRecordsVo.getProjectStatus()+"");
             cwProjectRecords.setTenantId("ccpm");
             //获取项目所在地
@@ -219,7 +381,65 @@ public class receiveData {
 
                     }
                 }
-            }            cwProjectRecordsMapper.insert(cwProjectRecords);
+            }
+            //项目等级
+            if (StringUtils.isNotBlank(ruralProjectRecordsVo.getSubmitMoney())){
+                if (ruralProjectRecordsVo.getSubmitMoney().equals("1")){
+                    cwProjectRecords.setProjectLevel("2");
+                }else {
+                    cwProjectRecords.setProjectLevel("1");
+                }
+            }
+
+            //项目金额
+            if (ObjectUtils.isNotEmpty(ruralProjectRecordsVo.getTotalFees())){
+                cwProjectRecords.setProjectMoney(ruralProjectRecordsVo.getTotalFees().toString());
+            }
+            //项目开始时间结束时间
+            cwProjectRecords.setProjectStartTime(ruralProjectRecordsVo.getStartDate());
+            cwProjectRecords.setProjectEndTime(ruralProjectRecordsVo.getEndDate());
+            //工程类型
+            cwProjectRecords.setEngineeringType(ruralProjectRecordsVo.getEngineeringType());
+            //项目负责人
+            if (StringUtils.isNotBlank(ruralProjectRecordsVo.getProjectMasterPhone())){
+                Optional<String> matchingUserId = allUserInfo.stream()
+                        .filter(user -> user.getMobile().equals(ruralProjectRecordsVo.getProjectMasterPhone()))
+                        .map(UserDTO::getId)
+                        .findFirst();
+                if (matchingUserId.isPresent()){
+                    UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getById(matchingUserId.get());
+                    if (userDTO != null){
+                        cwProjectRecords.setProjectLeaderId(userDTO.getId());
+                    }
+                }
+
+            }
+            cwProjectRecordsMapper.insert(cwProjectRecords);
+            //项目联系人
+            cwProjectClientContactMapper.delete(new QueryWrapper<CwProjectClientContact>().eq("project_id",ruralProjectRecordsVo.getId()));
+            if (CollectionUtils.isNotEmpty(ruralProjectRecordsVo.getWorkClientLinkmanList())){
+                for (WorkClientLinkman workClientLinkman : ruralProjectRecordsVo.getWorkClientLinkmanList()) {
+                    if (workClientLinkman.getClientId() != null){
+                        CwProjectClientContact cwProjectClientContact = new CwProjectClientContact();
+                        cwProjectClientContact.setProjectId(ruralProjectRecordsVo.getId());
+                        cwProjectClientContact.setClientId(workClientLinkman.getId());
+                        cwProjectClientContact.setEmail(workClientLinkman.getEmail());
+                        cwProjectClientContact.setContactFirst(workClientLinkman.getLinkMobile());
+                        cwProjectClientContact.setContactSecond(workClientLinkman.getLinkPhone());
+                        cwProjectClientContact.setName(workClientLinkman.getName());
+                        cwProjectClientContact.setPosition(workClientLinkman.getPosition());
+                        if (StringUtils.isNotBlank(workClientLinkman.getOffice())){
+                            OfficeDTO officeDTOByName = SpringUtil.getBean(IOfficeApi.class).getOfficeDTOByName(workClientLinkman.getOffice());
+                            if (officeDTOByName != null){
+                                cwProjectClientContact.setOfficeId(officeDTOByName.getId());
+                            }
+                        }
+                        cwProjectClientContact.setClientContactId(workClientLinkman.getClientId().getId());
+                        cwProjectClientContact.setTenantId("ccpm");
+                        cwProjectClientContactMapper.insert(cwProjectClientContact);
+                    }
+                }
+            }
         }
     }
 
@@ -247,6 +467,14 @@ public class receiveData {
             cwProjectReviewNew.setProjectId(recordsVo.getId());
             cwProjectReviewNew.setReviewStatus(recordsVo.getProjectReportStatus().toString());
             cwProjectReviewNew.setTenantId("ccpm");
+            if (StringUtils.isNotBlank(recordsVo.getCreateName())){
+                UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(recordsVo.getCreateName());
+                if (userDTO != null){
+                    cwProjectReviewNew.setCreateById(userDTO.getId());
+                    cwProjectReviewNew.setUpdateById(userDTO.getId());
+                }
+
+            }
             cwProjectReviewNewMapper.insert(cwProjectReviewNew);
 
             String id = UUID.randomUUID().toString().replace("-", "");
@@ -254,6 +482,14 @@ public class receiveData {
             report.setId(id);
             report.setProjectId(recordsVo.getId());
             report.setTenantId("ccpm");
+            if (StringUtils.isNotBlank(recordsVo.getCreateName())){
+                UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(recordsVo.getCreateName());
+                if (userDTO != null){
+                    report.setCreateById(userDTO.getId());
+                    report.setUpdateById(userDTO.getId());
+                }
+
+            }
             cwProjectReportMapper.insert(report);
 
             //报告编号
@@ -262,6 +498,14 @@ public class receiveData {
             cwProjectInfoData.setReportId(id);
             cwProjectInfoData.setReportNo(recordsVo.getProjectReportNumber());
             cwProjectInfoData.setTenantId("ccpm");
+            if (StringUtils.isNotBlank(recordsVo.getCreateName())){
+                UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(recordsVo.getCreateName());
+                if (userDTO != null){
+                    cwProjectInfoData.setCreateById(userDTO.getId());
+                    cwProjectInfoData.setUpdateById(userDTO.getId());
+                }
+
+            }
             cwProjectInfoMapper.insert(cwProjectInfoData);
         }
     }
@@ -283,6 +527,14 @@ public class receiveData {
 
         }
         cwProjectReportSignAndIssue.setTenantId("ccpm");
+        if (StringUtils.isNotBlank(recordsVo.getCreateName())){
+            UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(recordsVo.getCreateName());
+            if (userDTO != null){
+                cwProjectReportSignAndIssue.setCreateById(userDTO.getId());
+                cwProjectReportSignAndIssue.setUpdateById(userDTO.getId());
+            }
+
+        }
         cwProjectReportSignAndIssueMapper.insert(cwProjectReportSignAndIssue);
     }
 
@@ -305,6 +557,14 @@ public class receiveData {
                     cwProjectReportOnlineArchiving.setStatus("");
                 }
                 cwProjectReportOnlineArchiving.setTenantId("ccpm");
+                if (StringUtils.isNotBlank(recordsVo.getCreateName())){
+                    UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(recordsVo.getCreateName());
+                    if (userDTO != null){
+                        cwProjectReportOnlineArchiving.setCreateById(userDTO.getId());
+                        cwProjectReportOnlineArchiving.setUpdateById(userDTO.getId());
+                    }
+
+                }
                 cwProjectReportOnlineArchivingMapper.insert(cwProjectReportOnlineArchiving);
              }
         }
@@ -329,6 +589,14 @@ public class receiveData {
                     cwProjectReportPaperArchiving.setStatus("");
                 }
                 cwProjectReportPaperArchiving.setTenantId("ccpm");
+                if (StringUtils.isNotBlank(recordsVo.getCreateName())){
+                    UserDTO userDTO = SpringUtil.getBean(IUserApi.class).getByLoginNameNotTenantId(recordsVo.getCreateName());
+                    if (userDTO != null){
+                        cwProjectReportPaperArchiving.setCreateById(userDTO.getId());
+                        cwProjectReportPaperArchiving.setUpdateById(userDTO.getId());
+                    }
+
+                }
                 cwProjectReportPaperArchivingMapper.insert(cwProjectReportPaperArchiving);
             }
         }

+ 6 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/vo/RuralProjectRecordsVo.java

@@ -7,7 +7,6 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.google.common.collect.Lists;
 import com.jeeplus.core.domain.BaseEntity;
 
-import com.jeeplus.finance.workClientInfo.domain.WorkClientLinkman;
 
 import com.jeeplus.sys.domain.Area;
 import lombok.Data;
@@ -70,6 +69,8 @@ public class RuralProjectRecordsVo extends BaseEntity {
 	private Double installUnitFees;    //安装单位造价
 	private Double totalFees;        //总合同额
 	private Double estimateTotalFees;  //预估总投资额
+	private String createName;
+	private Date createDate;
 
 //	private ProjectReportData reportData;//报告
 
@@ -343,6 +344,10 @@ public class RuralProjectRecordsVo extends BaseEntity {
 	private String beginSubmitScale;	//送审规模(开始)
 	private String endSubmitScale;	//送审规模(结束)
 
+	private String createNamePhone;
+	private String leaderNamePhone;
+	private String projectMasterPhone;
+
 
 	private List<String> civilProjectList = Lists.newArrayList();
 

+ 44 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/vo/WorkClientAttachment.java

@@ -0,0 +1,44 @@
+/**
+ * Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
+ */
+package com.jeeplus.finance.ccpm.vo;
+
+
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 添加附件Entity
+ * @author mapengbo
+ * @version 2017-10-12
+ */
+@Data
+public class WorkClientAttachment extends BaseEntity {
+
+	private static final long serialVersionUID = 1L;
+	private String url;		// 附件地址
+	private String type;		// 附件类型
+	private String attachmentUser;		// 上传人
+	private String attachmentUserName;		// 上传人
+	private String attachmentName;		// 文件名
+	private String attachmentId; //外联 客户编号
+	private List<String> attachmentIdList; //外联 客户编号
+	private String attachmentFlag; //附件类别
+	private String companyId; //附件类别
+	private String projectId; //项目id
+	private String temporaryUrl;		// 附件地址(临时地址)
+	private String collectFlag;		// 收藏判定
+	private String fileSize;	//文件大小
+	private String fileSizeFlag;	//文件大小(已处理状态)
+	private String createName;	//创建人
+	private String sort;	//排序
+	private String description;	//说明
+	private String divIdType;//判定条件
+
+	private Date beginDate;
+	private Date endDate;
+
+}

+ 6 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/vo/WorkClientInfoVo.java

@@ -6,7 +6,6 @@ package com.jeeplus.finance.ccpm.vo;
 
 import com.google.common.collect.Lists;
 import com.jeeplus.core.domain.BaseEntity;
-import com.jeeplus.finance.workClientInfo.domain.WorkClientLinkman;
 import com.jeeplus.sys.domain.Area;
 import lombok.Data;
 
@@ -77,4 +76,10 @@ public class WorkClientInfoVo extends BaseEntity {
 
 	private Date beginDate;
 	private Date endDate;
+
+	private Date createDate;
+
+	private String createMobile;
+
+	private List<WorkClientAttachment> workAttachments;
 }

+ 4 - 1
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/ccpm/vo/WorkContractInfoVo.java

@@ -6,6 +6,7 @@ package com.jeeplus.finance.ccpm.vo;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.google.common.collect.Lists;
 import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.sys.service.dto.WorkAttachmentInfoDTO;
 import lombok.Data;
 
 
@@ -147,5 +148,7 @@ public class WorkContractInfoVo extends BaseEntity {
 	private String chargeType;     //开票收款类型
 	private String chargeTypeStr;     //开票收款类型Str
 	private String isProject;     //是否关联项目(0:否;1:是)
-
+	private Date createDate;
+	private String createUserMobile;
+	private List<WorkClientAttachment> workAttachments;
 }

+ 70 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/config/ConnectionService.java

@@ -0,0 +1,70 @@
+package com.jeeplus.finance.config;
+
+
+import com.jeeplus.common.redis.RedisUtils;
+import com.jeeplus.finance.ccpm.controller.CcpmList;
+import com.jeeplus.finance.utils.Global;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.core.ParameterizedTypeReference;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Map;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
+@Service
+public class ConnectionService {
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Autowired
+    private CcpmList ccpmList;
+
+    private ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
+    private boolean isConnected = false;
+
+    // 启动时调用,开始定期检查连接
+    public void startCheckingConnection() {
+        scheduler.scheduleAtFixedRate(this::checkConnection, 0, 5, TimeUnit.SECONDS);
+    }
+
+    private void checkConnection() {
+        try {
+            String path = Global.getConfig("CCPM_PATH");
+            String url = path+"/a/ccpmList/ccpmList/checkConnect"; // MVC 项目的 URL
+            ResponseEntity<Map<String, String>> forObject = restTemplate.exchange(url,HttpMethod.GET,null,new ParameterizedTypeReference<Map<String, String>>() {});
+
+            Map<String, String> responseBody = forObject.getBody();
+            String message = responseBody.get("message");
+            if ("success".equals(message)) {
+                if (!isConnected) {
+                    RedisUtils.getInstance().set("connect", "true", 24); // 存储连接状态到 Redis
+                    System.out.println("Connected successfully.");
+                    try {
+                        ccpmList.getCcpmMethod(); // 调用 initMethod()
+                    } catch (Exception e) {
+                        System.err.println("Error during initMethod execution: " + e.getMessage());
+                    }
+                }
+                isConnected = true; // 更新连接状态
+            }
+        } catch (Exception e) {
+            isConnected = false; // 连接失败,更新状态
+            RedisUtils.getInstance().set("connect", "false", 24); // 存储连接失败状态到 Redis
+            System.out.println("Connection failed: " + e.getMessage());
+        }
+    }
+
+    // 可选:停止检查连接的方法
+    public void stopCheckingConnection() {
+        if (scheduler != null) {
+            scheduler.shutdown(); // 停止调度
+        }
+    }
+}
+

+ 1 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/CwProjectClientContactMapper.java

@@ -13,6 +13,7 @@ import org.apache.ibatis.annotations.Mapper;
 public interface CwProjectClientContactMapper extends BaseMapper<CwProjectClientContact> {
 
 
+    void deleteByTenantId();
 }
 
 

+ 4 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectRecords/mapper/xml/CwProjectClientContactMapper.xml

@@ -43,4 +43,8 @@
         cw_pcc.fax,
         cw_pcc.email
     </sql>
+
+    <delete id="deleteByTenantId">
+        delete from cw_project_client_contact where tenant_id = 'ccpm'
+    </delete>
 </mapper>

+ 2 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/projectReport/domain/CwProjectReportData.java

@@ -733,4 +733,6 @@ public class CwProjectReportData extends BaseDTO {
      * 修改签字注师  流程taskId
      */
     private String taskSigId;
+
+    private String createName;
 }

+ 2 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/workClientInfo/mapper/CwWorkClientBaseMapper.java

@@ -63,6 +63,8 @@ public interface CwWorkClientBaseMapper extends BaseMapper<CwWorkClientBase> {
 
     void deleteByTenantId();
 
+    void deleteLinkmanByTenantId();
+
     void deleteClientById(@Param("id") String id);
 }
 

+ 3 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/workClientInfo/mapper/xml/CwWorkClientBaseMapper.xml

@@ -434,6 +434,9 @@
     <delete id="deleteByTenantId">
         delete from cw_work_client_base where tenant_id = 'ccpm'
     </delete>
+    <delete id="deleteLinkmanByTenantId">
+        delete from cw_work_client_contact where tenant_id = 'ccpm'
+    </delete>
     <delete id="deleteClientById">
         delete from cw_work_client_base where id = #{id}
     </delete>

+ 1 - 0
jeeplus-modules/jeeplus-finance/src/main/java/com/jeeplus/finance/workClientInfo/service/CwWorkClientService.java

@@ -315,6 +315,7 @@ public class CwWorkClientService extends ServiceImpl<CwWorkClientBaseMapper, CwW
         if (null != cwWorkClientBaseDTO && StringUtils.isNotBlank(cwWorkClientBaseDTO.getRepresentativeParty())){
             List<String> representativePartyList = Arrays.asList(cwWorkClientBaseDTO.getRepresentativeParty().split(","));
             cwWorkClientBaseDTO.setRepresentativePartys(representativePartyList);
+
         }
 
         return cwWorkClientBaseDTO;

+ 9 - 0
jeeplus-modules/jeeplus-flowable/src/main/java/com/jeeplus/flowable/controller/FlowableTaskController.java

@@ -826,4 +826,13 @@ public class FlowableTaskController {
         return JSON.toJSONString(noticeList);
     }
 
+    /**
+     * 检测服务是否启动
+     */
+    @GetMapping("checkConnect")
+    public ResponseEntity<Map<String, String>> checkConnect() {
+        Map<String, String> response = new HashMap<>();
+        response.put("message", "success");
+        return ResponseEntity.ok(response);
+    }
 }

+ 1 - 1
jeeplus-modules/jeeplus-system/src/main/java/com/jeeplus/sys/mapper/xml/UserMapper.xml

@@ -566,7 +566,7 @@ select a.id, a.company_id as "companyDTO.id", a.office_id as "officeDTO.id", a.l
         AND post.del_flag = 0
     </select>
     <select id="getAllUserInfo" resultType="com.jeeplus.sys.service.dto.UserDTO">
-        select distinct id,name from sys_user where del_flag = '0'
+        select distinct id,name,mobile from sys_user where del_flag = '0'
     </select>
     <select id="getHasUser" resultType="java.lang.String">
         SELECT DISTINCT