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

Merge remote-tracking branch 'origin/master'

user5 7 месяцев назад
Родитель
Сommit
5d9851d0fd
28 измененных файлов с 1071 добавлено и 113 удалено
  1. 28 0
      src/main/java/com/jeeplus/common/szCcpm/controller/CcpmList.java
  2. 2 2
      src/main/java/com/jeeplus/modules/centerservice/config/ConnectionService.java
  3. 10 0
      src/main/java/com/jeeplus/modules/projectcontentinfo/entity/ProjectReportData.java
  4. 9 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java
  5. 25 22
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectRecordsController.java
  6. 25 22
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectRecordsController.java
  7. 279 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectViewController.java
  8. 10 10
      src/main/java/com/jeeplus/modules/sys/web/LoginController.java
  9. 345 4
      src/main/java/com/jeeplus/modules/szCenterservice/controller/szCloud/CpaFinanceInvoiceController.java
  10. 1 1
      src/main/java/com/jeeplus/modules/szCenterservice/service/szCloud/FinanceInvoiceService.java
  11. 2 0
      src/main/java/com/jeeplus/modules/szCenterservice/utils/SzConvertServiceUtil.java
  12. 15 0
      src/main/java/com/jeeplus/modules/workinvoice/dao/WorkInvoiceCloudDao.java
  13. 2 0
      src/main/java/com/jeeplus/modules/workinvoice/dao/WorkInvoiceDao.java
  14. 18 0
      src/main/java/com/jeeplus/modules/workinvoice/entity/WorkInvoice.java
  15. 78 0
      src/main/java/com/jeeplus/modules/workinvoice/entity/WorkInvoiceCloud.java
  16. 23 11
      src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceAllService.java
  17. 12 4
      src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java
  18. 44 12
      src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceAllController.java
  19. 34 16
      src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceTwoController.java
  20. 6 3
      src/main/resources/jeeplus.properties
  21. 1 0
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml
  22. 77 0
      src/main/resources/mappings/modules/workinvoice/WorkInvoiceCloudDao.xml
  23. 10 2
      src/main/resources/mappings/modules/workinvoice/WorkInvoiceDao.xml
  24. 1 0
      src/main/resources/spring-context-shiro.xml
  25. 6 1
      src/main/webapp/webpage/modules/workinvoice/workInvoiceAllList.jsp
  26. 1 1
      src/main/webapp/webpage/modules/workinvoice/workInvoiceAuditCpa.jsp
  27. 6 1
      src/main/webapp/webpage/modules/workinvoice/workInvoiceTwoList.jsp
  28. 1 1
      src/main/webapp/webpage/modules/workinvoice/workInvoiceViewCpa.jsp

+ 28 - 0
src/main/java/com/jeeplus/common/szCcpm/controller/CcpmList.java

@@ -3,15 +3,34 @@ package com.jeeplus.common.szCcpm.controller;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.serializer.SerializerFeature;
+import com.google.common.collect.Lists;
+import com.jeeplus.common.utils.Collections3;
+import com.jeeplus.common.utils.MyBeanUtils;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.web.BaseController;
+import com.jeeplus.modules.projectAccessory.entity.ProjectAccessoryRelationInfo;
 import com.jeeplus.modules.projectVisa.entity.ProjectVisa;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportData;
+import com.jeeplus.modules.projectcontentinfo.entity.ProjectReportDataTwo;
+import com.jeeplus.modules.projectcontentinfo.entity.Projectcontentinfo;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectContentDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectReportDataService;
+import com.jeeplus.modules.projectcontentinfo.service.ProjectcontentinfoService;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecordsReported;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralReportConsultant;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
+import com.jeeplus.modules.ruralprojectrecords.web.RuralProjectRecordsController;
+import com.jeeplus.modules.ruralprojectrecords.web.RuralProjectViewController;
 import com.jeeplus.modules.sys.dao.OfficeDao;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.service.UserService;
 import com.jeeplus.modules.sys.service.WorkattachmentService;
+import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.workclientinfo.dao.WorkClientBankDao;
 import com.jeeplus.modules.workclientinfo.dao.WorkClientInfoDao;
@@ -22,7 +41,10 @@ import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
 import com.jeeplus.modules.workcontractinfo.dao.WorkContractInfoDao;
 import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
+import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
 import com.jeeplus.modules.workreceiptsregister.entity.ResponseEntity;
+import com.jeeplus.modules.workreview.entity.WorkReviewAudit;
+import com.jeeplus.modules.workstaff.entity.WorkStaffCertificate;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -56,6 +78,10 @@ public class CcpmList{
     @Autowired
     private WorkattachmentService workattachmentService;
 
+    @Autowired
+    private RuralProjectViewController recordsViewController;
+
+
 
     /**
      * 获取苏州分公司下的部门
@@ -85,6 +111,8 @@ public class CcpmList{
                         }
                     }
                     projectRecordsService.queryLinkmanInfos(projectRecord);
+                    //查询质量复核信息
+                    recordsViewController.findProjectReportData(projectRecord);
                 }
             }
 

+ 2 - 2
src/main/java/com/jeeplus/modules/centerservice/config/ConnectionService.java

@@ -49,14 +49,14 @@ public class ConnectionService {
             String message = responseBody.get("message");
             if ("success".equals(message)) {
                 if (!isConnected) {
-                    JedisUtils.set("connect", "true", 24);
+                    JedisUtils.set("ccpmConnect", "true", 24);
                     System.out.println("Connected successfully.");
                 }
                 isConnected = true; // 更新连接状态
             }
         } catch (Exception e) {
             isConnected = false; // 连接失败,更新状态
-            JedisUtils.set("connect", "false", 24);
+            JedisUtils.set("ccpmConnect", "false", 24);
             System.out.println("Connection failed: " + e.getMessage());
         }
     }

+ 10 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/entity/ProjectReportData.java

@@ -9,6 +9,7 @@ import com.jeeplus.common.persistence.DataEntity;
 import com.jeeplus.common.utils.StringUtils;
 import com.jeeplus.common.utils.excel.annotation.ExcelField;
 import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralReportConsultant;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.entity.Workattachment;
 import com.jeeplus.modules.workcontent.entity.WorkContentType;
@@ -132,6 +133,15 @@ public class ProjectReportData extends ActEntity<ProjectReportData> {
 	private Date firstAuditDate;  //质量复核初次审核时间
 	private String overReportStatus;  //是否超期
 	private String createName;
+	private List<RuralReportConsultant> consultants;
+
+	public List<RuralReportConsultant> getConsultants() {
+		return consultants;
+	}
+
+	public void setConsultants(List<RuralReportConsultant> consultants) {
+		this.consultants = consultants;
+	}
 
 	public String getCreateName() {
 		return createName;

+ 9 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java

@@ -235,6 +235,7 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private String checkProcessInstanceId;   //检查流程id
 	private Integer checkStatus;   //检查状态
 	private String bzshbUserId; //总审用户id
+	private String bzshbUserName; //总审用户id
 	private String checkUserId; //检查发起人用户id
 	private String checkRemarks; //选查要求
 	private String fileNum; //选查案卷号
@@ -428,6 +429,14 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private List<ProjectReportData> projectReportData = Lists.newArrayList();
 	private List<ProjectFilingBatchProInfo> proInfos=Lists.newArrayList();
 
+	public String getBzshbUserName() {
+		return bzshbUserName;
+	}
+
+	public void setBzshbUserName(String bzshbUserName) {
+		this.bzshbUserName = bzshbUserName;
+	}
+
 	public String getCreateNamePhone() {
 		return createNamePhone;
 	}

+ 25 - 22
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectRecordsController.java

@@ -500,6 +500,7 @@ public class RuralCostProjectRecordsController extends BaseController {
         }
 		//判断项目创建人所属部门是否是苏州分公司
 		RuralProjectRecords records=projectRecordsService.findUseableByProjectName(projectRecords.getProjectName());
+		projectRecordsService.queryLinkmanInfos(records);
 		Office info = officeDao.getByName("苏州分公司");
 		List<Office> officeList = officeDao.getChildrenOfficeById(info.getId());
 		for (Office office1 : officeList) {
@@ -536,6 +537,7 @@ public class RuralCostProjectRecordsController extends BaseController {
         }
 		//判断项目创建人所属部门是否是苏州分公司
 		RuralProjectRecords records=projectRecordsService.findUseableByProjectName(projectRecords.getProjectName());
+		projectRecordsService.queryLinkmanInfos(records);
 		Office info = officeDao.getByName("苏州分公司");
 		List<Office> officeList = officeDao.getChildrenOfficeById(info.getId());
 		for (Office office1 : officeList) {
@@ -557,30 +559,31 @@ public class RuralCostProjectRecordsController extends BaseController {
 		if(pathFlag) {
 			String path = Global.getConfig("SZ_PATH");
 
-			RuralProjectRecords records = new RuralProjectRecords();
-			records.setId(ruralProjectRecords.getId());
-			records.setProjectId(ruralProjectRecords.getProjectId());
-			records.setProjectName(ruralProjectRecords.getProjectName());
-			records.setProjectType(ruralProjectRecords.getProjectType());
-			records.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
-			records.setSubmitMoney(ruralProjectRecords.getSubmitMoney());
-			records.setTotalFees(ruralProjectRecords.getTotalFees());
-			records.setStartDate(ruralProjectRecords.getStartDate());
-			records.setEndingDate(ruralProjectRecords.getEndingDate());
-			records.setEngineeringType(ruralProjectRecords.getEngineeringType());
-			records.setProjectMasterName(ruralProjectRecords.getProjectMasterName());
-			records.setWorkClientLinkmanList(ruralProjectRecords.getWorkClientLinkmanList());
-			records.setCreateNamePhone(ruralProjectRecords.getCreateNamePhone());
-			records.setProjectMasterPhone(ruralProjectRecords.getProjectMasterPhone());
-			records.setArea(ruralProjectRecords.getArea());
-			records.setCreateName(ruralProjectRecords.getCreateName());
-			records.setCreateDate(ruralProjectRecords.getCreateDate());
-			WorkContractInfo workContractInfo = new WorkContractInfo();
-			workContractInfo.setId(ruralProjectRecords.getWorkContractInfo().getId());
-			records.setWorkContractInfo(workContractInfo);
+//			RuralProjectRecords records = new RuralProjectRecords();
+//			records.setId(ruralProjectRecords.getId());
+//			records.setProjectId(ruralProjectRecords.getProjectId());
+//			records.setProjectName(ruralProjectRecords.getProjectName());
+//			records.setProjectType(ruralProjectRecords.getProjectType());
+//			records.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
+//			records.setSubmitMoney(ruralProjectRecords.getSubmitMoney());
+//			records.setTotalFees(ruralProjectRecords.getTotalFees());
+//			records.setStartDate(ruralProjectRecords.getStartDate());
+//			records.setEndingDate(ruralProjectRecords.getEndingDate());
+//			records.setEngineeringType(ruralProjectRecords.getEngineeringType());
+//			records.setProjectMasterName(ruralProjectRecords.getProjectMasterName());
+//			records.setWorkClientLinkmanList(ruralProjectRecords.getWorkClientLinkmanList());
+//			records.setCreateNamePhone(ruralProjectRecords.getCreateNamePhone());
+//			records.setProjectMasterPhone(ruralProjectRecords.getProjectMasterPhone());
+//			records.setArea(ruralProjectRecords.getArea());
+//			records.setCreateName(ruralProjectRecords.getCreateName());
+//			records.setCreateDate(ruralProjectRecords.getCreateDate());
+//			records.setProjectReportNumber(ruralProjectRecords.getProjectReportNumber());
+//			WorkContractInfo workContractInfo = new WorkContractInfo();
+//			workContractInfo.setId(ruralProjectRecords.getWorkContractInfo().getId());
+//			records.setWorkContractInfo(workContractInfo);
 			HttpHeaders headers = new HttpHeaders();
 			String url = path + "/ccpmData/data/saveProjectInfo";
-			HttpEntity<RuralProjectRecords> httpEntity = new HttpEntity<>(records, headers);
+			HttpEntity<RuralProjectRecords> httpEntity = new HttpEntity<>(ruralProjectRecords, headers);
 			try {
 				restTemplate.exchange(url, HttpMethod.POST, httpEntity, RuralProjectRecords.class);
 			} catch (Exception e) {

+ 25 - 22
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectRecordsController.java

@@ -390,6 +390,7 @@ public class RuralProjectRecordsController extends BaseController {
         }
 		//判断项目创建人所属部门是否是苏州分公司
 		RuralProjectRecords records=projectRecordsService.findUseableByProjectName(projectRecords.getProjectName());
+		projectRecordsService.queryLinkmanInfos(records);
 		Office info = officeDao.getByName("苏州分公司");
 		List<Office> officeList = officeDao.getChildrenOfficeById(info.getId());
 		for (Office office1 : officeList) {
@@ -482,6 +483,7 @@ public class RuralProjectRecordsController extends BaseController {
 		}
 		//判断项目创建人所属部门是否是苏州分公司
 		RuralProjectRecords records=projectRecordsService.findUseableByProjectName(projectRecords.getProjectName());
+		projectRecordsService.queryLinkmanInfos(records);
 		Office info = officeDao.getByName("苏州分公司");
 		List<Office> officeList = officeDao.getChildrenOfficeById(info.getId());
 		for (Office office1 : officeList) {
@@ -503,30 +505,31 @@ public class RuralProjectRecordsController extends BaseController {
 		if(pathFlag) {
 			String path = Global.getConfig("SZ_PATH");
 
-			RuralProjectRecords records = new RuralProjectRecords();
-			records.setId(ruralProjectRecords.getId());
-			records.setProjectId(ruralProjectRecords.getProjectId());
-			records.setProjectName(ruralProjectRecords.getProjectName());
-			records.setProjectType(ruralProjectRecords.getProjectType());
-			records.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
-			records.setSubmitMoney(ruralProjectRecords.getSubmitMoney());
-			records.setTotalFees(ruralProjectRecords.getTotalFees());
-			records.setStartDate(ruralProjectRecords.getStartDate());
-			records.setEndingDate(ruralProjectRecords.getEndingDate());
-			records.setEngineeringType(ruralProjectRecords.getEngineeringType());
-			records.setProjectMasterName(ruralProjectRecords.getProjectMasterName());
-			records.setWorkClientLinkmanList(ruralProjectRecords.getWorkClientLinkmanList());
-			records.setCreateNamePhone(ruralProjectRecords.getCreateNamePhone());
-			records.setProjectMasterPhone(ruralProjectRecords.getProjectMasterPhone());
-			records.setArea(ruralProjectRecords.getArea());
-			records.setCreateName(ruralProjectRecords.getCreateName());
-			records.setCreateDate(ruralProjectRecords.getCreateDate());
-			WorkContractInfo workContractInfo = new WorkContractInfo();
-			workContractInfo.setId(ruralProjectRecords.getWorkContractInfo().getId());
-			records.setWorkContractInfo(workContractInfo);
+//			RuralProjectRecords records = new RuralProjectRecords();
+//			records.setId(ruralProjectRecords.getId());
+//			records.setProjectId(ruralProjectRecords.getProjectId());
+//			records.setProjectName(ruralProjectRecords.getProjectName());
+//			records.setProjectType(ruralProjectRecords.getProjectType());
+//			records.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
+//			records.setSubmitMoney(ruralProjectRecords.getSubmitMoney());
+//			records.setTotalFees(ruralProjectRecords.getTotalFees());
+//			records.setStartDate(ruralProjectRecords.getStartDate());
+//			records.setEndingDate(ruralProjectRecords.getEndingDate());
+//			records.setEngineeringType(ruralProjectRecords.getEngineeringType());
+//			records.setProjectMasterName(ruralProjectRecords.getProjectMasterName());
+//			records.setWorkClientLinkmanList(ruralProjectRecords.getWorkClientLinkmanList());
+//			records.setCreateNamePhone(ruralProjectRecords.getCreateNamePhone());
+//			records.setProjectMasterPhone(ruralProjectRecords.getProjectMasterPhone());
+//			records.setArea(ruralProjectRecords.getArea());
+//			records.setCreateName(ruralProjectRecords.getCreateName());
+//			records.setCreateDate(ruralProjectRecords.getCreateDate());
+//			records.setProjectReportNumber(ruralProjectRecords.getProjectReportNumber());
+//			WorkContractInfo workContractInfo = new WorkContractInfo();
+//			workContractInfo.setId(ruralProjectRecords.getWorkContractInfo().getId());
+//			records.setWorkContractInfo(workContractInfo);
 			HttpHeaders headers = new HttpHeaders();
 			String url = path + "/ccpmData/data/saveProjectInfo";
-			HttpEntity<RuralProjectRecords> httpEntity = new HttpEntity<>(records, headers);
+			HttpEntity<RuralProjectRecords> httpEntity = new HttpEntity<>(ruralProjectRecords, headers);
 			try {
 				restTemplate.exchange(url, HttpMethod.POST, httpEntity, RuralProjectRecords.class);
 			} catch (Exception e) {

+ 279 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectViewController.java

@@ -1258,4 +1258,283 @@ public class RuralProjectViewController extends BaseController {
         model.addAttribute("projectPaperFiling", paperFiling);
         return "modules/ruralprojectrecords/view/projectPaperFilingView";
     }
+
+
+    /**
+     * 质量复核信息
+     * @param projectRecord
+     */
+    public void findProjectReportData(RuralProjectRecords projectRecord) {
+
+        Projectcontentinfo projectcontentinfo1 = projectcontentinfoService.getByProjectId(projectRecord.getId());
+        if (null !=projectcontentinfo1){
+            ProjectReportData projectReportData = projectReportDataService.getOnRural(projectcontentinfo1.getInfoId());
+            if (null !=projectReportData){
+                projectReportData = projectReportDataService.get(projectReportData.getId());
+                if(null != projectReportData.getSignatureUploadFileUser() && StringUtils.isNotBlank(projectReportData.getSignatureUploadFileUser().getId())){
+                    projectReportData.setSignatureUploadFileUser(UserUtils.get(projectReportData.getSignatureUploadFileUser().getId()));
+                }
+            }
+
+            RuralProjectRecords ruralProjectRecords = projectRecordsService.getQueryProjectUsers(projectcontentinfo1.getProject().getId());
+            //获取项目负责人
+            List<User> users = workProjectUserDao.getProjectprincipalList(projectRecord.getId());
+            projectRecord.setProjectLeaders(users);
+            projectRecord.setLeaderNameStr(Collections3.extractToString(users, "name", ","));
+            projectRecord.setLeaderIds(Collections3.extractToString(users, "id", ","));
+            User loginUser = UserUtils.getUser();
+//            if(ruralProjectRecords.getLeaderIds().contains(loginUser.getId()) || loginUser.getId().equals(ruralProjectRecords.getCreateBy().getId())){
+//                ruralProjectRecords.setOperateFlag("1");
+//            }else{
+            projectRecord.setOperateFlag("0");
+//            }
+
+            Projectcontentinfo projectcontent = projectcontentinfoService.getByInfoId(projectReportData.getId());
+            projectcontent.setProjectReportData(projectReportData);
+
+            //项目与附件关系表
+            ProjectAccessoryRelationInfo relateInfo = new ProjectAccessoryRelationInfo();
+            //添加项目类型
+            relateInfo.setAttachmentProjectType(ruralProjectRecords.getProjectType());
+            relateInfo.setAttachmentProjectSort(ruralProjectRecords.getAttachmentProjectSort());
+
+            String money=ruralProjectRecords.getSubmitMoney();
+            Integer approvalMoney=null;
+            if(StringUtils.isBlank(money)){
+                approvalMoney=1;
+            }else{
+                approvalMoney=Integer.parseInt(money);
+            }
+            switch (approvalMoney){
+                case 0:
+                    //金额为0
+                    relateInfo.setAttachmentProjectApprovalMoney(null);
+                    break;
+                case 1:
+                    //500w以下金额状态
+                    relateInfo.setAttachmentProjectApprovalMoney("1");
+                    break;
+                case 2:
+                    //500w以上金额状态
+                    relateInfo.setAttachmentProjectApprovalMoney("2");
+                    break;
+            }
+
+
+            //添加报告类型
+            relateInfo.setRequiredStage(1);
+            relateInfo.setId(ruralProjectRecords.getId());
+
+            List<RuralReportConsultant> consultants = Lists.newArrayList();
+            //将自己添加到咨询员数据中
+            //根据用户查询技能信息
+            RuralReportConsultant currentConsultant = new RuralReportConsultant();
+            List<WorkStaffCertificate> userCertificateList = Lists.newArrayList();
+            if(StringUtils.isNotBlank(ruralProjectRecords.getProjectMasterId())){
+                userCertificateList = ruralProjectMessageService.getCertificateByUser(ruralProjectRecords.getProjectMasterId());
+            }
+            //获取专业类型
+            List<MainDictDetail> certificateMajor = DictUtils.getMainDictList("certificate_major");
+            for (WorkStaffCertificate certificateInfo: userCertificateList) {
+                if("161".equals(certificateInfo.getName()) || "171".equals(certificateInfo.getName())){
+                    currentConsultant.setZhucezigezhID(certificateInfo.getNum());
+                    currentConsultant.setZhucezigezhKey(certificateInfo.getName());
+                    for (MainDictDetail type : certificateMajor) {
+                        if(certificateInfo.getMajor().equals(type.getValue())){
+                            currentConsultant.setMajor(type.getLabel());
+                        }
+                    }
+                    User currentUser=userService.get(ruralProjectRecords.getProjectMasterId());
+                    currentConsultant.setZixunyuanName(currentUser.getName());
+                    currentConsultant.setZixunyuan(currentUser.getId());
+                    currentConsultant.setRole("负责人");
+                    consultants.add(currentConsultant);
+                    break;
+                }
+            }
+            //查询总审人员信息
+            RuralReportConsultant bzshbConsultant = new RuralReportConsultant();
+            //根据项目id查找报告咨询员信息
+            List<RuralReportConsultant> consultantList = ruralProjectMessageService.getConsultantsList(projectRecord.getId());
+            //使用迭代器去除重复信息
+            //排除 重新申请|撤销
+            Iterator<RuralReportConsultant> it = consultantList.iterator();
+            while(it.hasNext()){
+                RuralReportConsultant consultant = it.next();
+                //根据人员id和角色进行唯一值判定,避免出现重复值
+                if(consultant.getZixunyuan().equals(currentConsultant.getZixunyuan()) && ((StringUtils.isNotBlank(consultant.getRole()) && consultant.getRole().equals(currentConsultant.getRole())) || StringUtils.isBlank(consultant.getRole()))){
+                    try {
+                        MyBeanUtils.copyBeanNotNull2Bean(consultant, currentConsultant);
+                    } catch (Exception e) {
+                        e.printStackTrace();
+                    }
+                    it.remove();
+                }else{
+                    //根据用户查询技能信息
+                    List<WorkStaffCertificate> certificateList = ruralProjectMessageService.getCertificateByUser(consultant.getZixunyuan());
+                    for (WorkStaffCertificate certificateInfo: certificateList) {
+                        if(certificateInfo.getName().equals(consultant.getZhucezigezhKey())){
+                            consultant.setZhucezigezhID(certificateInfo.getNum());
+                        }
+                        for (MainDictDetail type : certificateMajor) {
+                            if(certificateInfo.getMajor().equals(type.getValue())){
+                                consultant.setMajor(type.getLabel());
+                            }
+                        }
+                    }
+                    User user=userService.get(consultant.getZixunyuan());
+                    if(null != user){
+                        consultant.setZixunyuanName(user.getName());
+                    /*if(StringUtils.isBlank(consultant.getRole())){
+                        consultant.setRole("咨询员");
+                    }*/
+                    }
+                    if(consultant.getZixunyuan().equals(projectReportData.getBzshbUserId()) && ((StringUtils.isNotBlank(consultant.getRole()) && consultant.getRole().equals("技术负责人")) || StringUtils.isBlank(consultant.getRole()))){
+                        User chenHongXing=UserUtils.getByLoginName("陈红星");
+                        List<WorkStaffCertificate> chenHongXingCertificateList = ruralProjectMessageService.getCertificateByUser(chenHongXing.getId());
+                        //获取陈红星的造价师信息
+                        WorkStaffCertificate chenHongXingStaffCertificate = chenHongXingCertificateList.get(0);
+
+                        //根据用户查询技能信息
+                        List<WorkStaffCertificate> certificateBList = ruralProjectMessageService.getCertificateByUser(consultant.getZixunyuan());
+                        for (WorkStaffCertificate certificateInfo: certificateBList) {
+                            for (MainDictDetail type : certificateMajor) {
+                                if(certificateInfo.getMajor().equals(type.getValue())){
+                                    bzshbConsultant.setMajor(type.getLabel());
+                                }
+                            }
+                        }
+
+                        bzshbConsultant = consultant;
+                        bzshbConsultant.setZhucezigezhID(chenHongXingStaffCertificate.getNum());
+                        bzshbConsultant.setZixunyuanName("陈红星("+consultant.getZixunyuanName()+"代)");
+                        bzshbConsultant.setRole("技术负责人");
+                        it.remove();
+                    }
+                }
+            }
+            consultants.addAll(consultantList);
+
+            if(StringUtils.isNotBlank(bzshbConsultant.getZixunyuan())){
+                consultants.add(bzshbConsultant);
+            }else{
+                //查询总审人员信息
+                bzshbConsultant = new RuralReportConsultant();
+                List<WorkStaffCertificate> bzshbCertificateList = Lists.newArrayList();
+                if(StringUtils.isNotBlank(ruralProjectRecords.getProjectMasterId())){
+                    bzshbCertificateList = ruralProjectMessageService.getCertificateByUser(projectReportData.getBzshbUserId());
+                }
+                for (WorkStaffCertificate certificateInfo: bzshbCertificateList) {
+                    bzshbConsultant.setZhucezigezhID(certificateInfo.getNum());
+                    bzshbConsultant.setZhucezigezhKey(certificateInfo.getName());
+                    for (MainDictDetail dictType : certificateMajor) {
+                        if(certificateInfo.getMajor().equals(dictType.getValue())){
+                            bzshbConsultant.setMajor(dictType.getLabel());
+                        }
+                    }
+                    User bzshbUser=userService.get(projectReportData.getBzshbUserId());
+                    bzshbConsultant.setZixunyuanName(bzshbUser.getName());
+                    bzshbConsultant.setZixunyuan(bzshbUser.getId());
+                    consultants.add(bzshbConsultant);
+                }
+                Iterator<RuralReportConsultant> itView = consultants.iterator();
+                while (itView.hasNext()) {
+                    RuralReportConsultant consultant = itView.next();
+                    if (bzshbCertificateList.size() > 0) {
+                        if (consultant.getZixunyuan().equals(bzshbConsultant.getZixunyuan()) && ((StringUtils.isNotBlank(consultant.getRole()) && consultant.getRole().equals("技术负责人")) || StringUtils.isBlank(consultant.getRole()) )) {
+                            try {
+                                MyBeanUtils.copyBeanNotNull2Bean(consultant, bzshbConsultant);
+                                bzshbConsultant.setZixunyuanName("陈红星(" + bzshbConsultant.getZixunyuanName() + "代)");
+                                bzshbConsultant.setRole("技术负责人");
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                            itView.remove();
+                        }
+                    } else {
+                        if (consultant.getZixunyuan().equals(projectReportData.getBzshbUserId()) && ((StringUtils.isNotBlank(consultant.getRole()) && consultant.getRole().equals("技术负责人")) || StringUtils.isBlank(consultant.getRole()) )) {
+                            try {
+                                MyBeanUtils.copyBeanNotNull2Bean(consultant, bzshbConsultant);
+                                bzshbConsultant.setZixunyuanName("陈红星(" + bzshbConsultant.getZixunyuanName() + "代)");
+                                bzshbConsultant.setRole("技术负责人");
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                            itView.remove();
+                        }
+                    }
+                }
+                if(StringUtils.isNotBlank(bzshbConsultant.getZixunyuan())){
+                    consultants.add(bzshbConsultant);
+                }else{
+                    if(StringUtils.isNotBlank(projectReportData.getBzshbUserId())){
+                        User user=userService.get(projectReportData.getBzshbUserId());
+                        bzshbConsultant.setZixunyuanName("陈红星("+user.getName()+"代)");
+                        bzshbConsultant.setZixunyuan(user.getId());
+                        bzshbConsultant.setRole("技术负责人");
+                        consultants.add(bzshbConsultant);
+                    }
+                }
+            }
+            for (RuralReportConsultant consultant : consultants) {
+                if(StringUtils.isBlank(consultant.getRole())){
+                    consultant.setRole("咨询员");
+                }
+            }
+            //展示
+            //获取自检的质量复核标准
+            String reviewId="";
+            if ("2".equals(ruralProjectRecords.getSubmitMoney())){
+                reviewId="1";
+            }else{
+                if(StringUtils.isBlank(ruralProjectRecords.getEmergencyProject()) ||"0".equals(ruralProjectRecords.getEmergencyProject())){
+                    reviewId="2";
+                }else{
+                    reviewId="3";
+                }
+            }
+            List<WorkReviewAudit> workReviewAudits = projectContentDataService.findListReview(reviewId,"质量复核");
+            WorkReviewAudit workReviewAudit = new WorkReviewAudit();
+            String type = "4";
+            workReviewAudit.setCompanyId(UserUtils.getSelectCompany().getId());
+            workReviewAudit.setType(type);
+            workReviewAudit.setReportId(projectReportData.getId());
+            List<WorkReviewAudit> audits = workReviewStandardService.findAuditList(workReviewAudit);
+            for(WorkReviewAudit reviewAudit:workReviewAudits){
+                for (WorkReviewAudit audit:audits){
+                    if (reviewAudit.getId().equals(audit.getStandardId())){
+                        reviewAudit.setDeductOption(audit.getDeductOption());
+                        break;
+                    }
+                }
+            }
+            projectReportData.setProjectReviewList(workReviewAudits);
+
+            //查询总审人员信息
+            List<User> auditUserList = userService.getAuditUserList();
+            projectRecord.setBzshbUserList(auditUserList);
+            //项目组成员
+            projectReportData.setConsultants(consultants);
+//            model.addAttribute("consultantinfo", consultants);
+
+            List<MainDictDetail> achievementTypes = DictUtils.getMainDictList("achievement_type");
+            if(null != achievementTypes){
+                for (MainDictDetail achievementType:achievementTypes) {
+                    if(achievementType.getValue().equals(projectReportData.getAchievementType())){
+                        projectReportData.setAchievementType(achievementType.getLabel());
+                        break;
+                    }
+                }
+            }
+            projectRecord.setReportData(projectReportData);
+            //获取总审人员
+            User user=UserUtils.get(projectReportData.getBzshbUserId());
+            if(null != user){
+                projectRecord.setBzshbUserName(user.getName());
+            }
+
+        }
+
+
+    }
 }

+ 10 - 10
src/main/java/com/jeeplus/modules/sys/web/LoginController.java

@@ -636,8 +636,8 @@ public class LoginController extends BaseController{
 			// 查询中台待办数据
 			List<WorkProjectNotify> notifyList = centerCpaTaskService.getNotifyList(workProjectNotify);
 			if (CollectionUtils.isEmpty(notifyList)){
-				String connect = JedisUtils.get("connect");
-				if (StringUtils.isNotBlank(connect) && connect.equals("true")){
+//				String connect = JedisUtils.get("ccpmConnect");
+//				if (StringUtils.isNotBlank(connect) && connect.equals("true")){
 					//苏州分公司cloud数据
 					List<Map<String, Object>> result = new ArrayList<>();
 					Object sz = szFlowRequest.getNotifyList(workProjectNotify, "sz", user);
@@ -671,14 +671,14 @@ public class LoginController extends BaseController{
 						model.addAttribute("notifyCount", notifyPage.getList().size());//未读通知条数
 						model.addAttribute("notifyCount1", notifyPage.getCount());//未读通知条数
 					}
-				}else {
-					// 本系统待办分页数据查询
-					Page<WorkProjectNotify> notifyPage = workProjectNotifyService.findPage(new Page<WorkProjectNotify>(1, 10), workProjectNotify);
-					disposePageResp(notifyPage.getList()); // 查询结果处理
-					model.addAttribute("notifyPage", notifyPage.getList());
-					model.addAttribute("notifyCount", notifyPage.getList().size());//未读通知条数
-					model.addAttribute("notifyCount1", notifyPage.getCount());//未读通知条数
-				}
+//				}else {
+//					// 本系统待办分页数据查询
+//					Page<WorkProjectNotify> notifyPage = workProjectNotifyService.findPage(new Page<WorkProjectNotify>(1, 10), workProjectNotify);
+//					disposePageResp(notifyPage.getList()); // 查询结果处理
+//					model.addAttribute("notifyPage", notifyPage.getList());
+//					model.addAttribute("notifyCount", notifyPage.getList().size());//未读通知条数
+//					model.addAttribute("notifyCount1", notifyPage.getCount());//未读通知条数
+//				}
 
 			}else {
 				if (notifyList.size() > 0) {

+ 345 - 4
src/main/java/com/jeeplus/modules/szCenterservice/controller/szCloud/CpaFinanceInvoiceController.java

@@ -1,14 +1,32 @@
 package com.jeeplus.modules.szCenterservice.controller.szCloud;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.jeeplus.common.config.Global;
 import com.jeeplus.common.utils.ObjectUtils;
 import com.jeeplus.common.utils.StringUtils;
+import com.jeeplus.modules.sys.entity.Area;
+import com.jeeplus.modules.sys.entity.Office;
+import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.entity.Workattachment;
+import com.jeeplus.modules.sys.service.OfficeService;
+import com.jeeplus.modules.sys.service.WorkattachmentService;
+import com.jeeplus.modules.sys.utils.UserUtils;
 import com.jeeplus.modules.szCenterservice.service.szCloud.FinanceInvoiceRequest;
+import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
+import com.jeeplus.modules.workinvoice.dao.WorkInvoiceCloudDao;
+import com.jeeplus.modules.workinvoice.dao.WorkInvoiceDao;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoice;
+import com.jeeplus.modules.workinvoice.entity.WorkInvoiceCloud;
+import com.jeeplus.modules.workinvoice.entity.WorkInvoiceProjectRelation;
+import com.jeeplus.modules.workinvoice.service.WorkInvoiceAllService;
+import com.jeeplus.modules.workinvoicedetail.dao.WorkInvoiceDetailDao;
+import com.jeeplus.modules.workinvoicedetail.entity.WorkInvoiceDetail;
 import com.jeeplus.modules.workreimbursement.entity.WorkReimbursement;
 import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
@@ -16,10 +34,7 @@ import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
 
 @Controller
 @RequestMapping(value = "${adminPath}/cpa_finance")
@@ -28,6 +43,22 @@ public class CpaFinanceInvoiceController {
     @Autowired
     private FinanceInvoiceRequest financeInvoiceRequest;
 
+    @Autowired
+    protected WorkInvoiceDao workInvoiceDao;
+
+    @Autowired
+    private OfficeService officeService;
+
+    @Autowired
+    private WorkInvoiceAllService workInvoiceService;
+
+    @Autowired
+    private WorkInvoiceCloudDao workInvoiceCloudDao;
+    @Autowired
+    private WorkInvoiceDetailDao workInvoiceDetailDao;
+    @Autowired
+    private WorkattachmentService workattachmentService;
+
 
     @RequestMapping(value = "saveAudit")
     public String saveAudit(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) throws ParseException {
@@ -72,5 +103,315 @@ public class CpaFinanceInvoiceController {
         redirectAttributes.addFlashAttribute("message", sb.toString());
     }
 
+    @Transactional(readOnly = false)
+    @RequestMapping(value = "saveInfo", method = RequestMethod.POST)
+    public void saveInfo(@RequestBody String json) throws Exception {
+        WorkInvoice workInvoice = new WorkInvoice();
+        if(json != null) {
+            Map<String, Object> reim = JSONObject.parseObject(json);
+            workInvoice = convertFinance(reim); // 格式转换
+            //保存信息
+            WorkInvoice invoice = workInvoiceDao.getById(workInvoice.getId());
+            if (invoice != null){
+                workInvoiceDao.update(workInvoice);
+            }else {
+                workInvoiceDao.insert(workInvoice);
+            }
+            //附件处理
+            Workattachment workattachment = new Workattachment();
+            workattachment.setAttachmentId(workInvoice.getId());
+            workattachment.setAttachmentFlag("115");
+            workattachment.setAttachmentUser(workInvoice.getCreateBy().getId());
+            workattachmentService.delete(workattachment);
+            for (Workattachment workAttachment : workInvoice.getWorkAttachments()) {
+                workattachmentService.insertOnWorkAttachment(workAttachment);
+            }
+            //开票明细处理
+            WorkInvoiceDetail workInvoiceDetail = new WorkInvoiceDetail();
+            workInvoiceDetail.setInvoiceId(workInvoice.getId());
+            workInvoiceDetailDao.delete(workInvoiceDetail);
+            for (WorkInvoiceDetail invoiceDetail : workInvoice.getWorkAccountList()) {
+                workInvoiceDetailDao.insert(invoiceDetail);
+
+            }
+            //开票与项目关系处理
+            workInvoiceCloudDao.deleteByInvoiceId(workInvoice.getId());
+            for (WorkInvoiceCloud workInvoiceCloud : workInvoice.getWorkInvoiceCloudList()) {
+                workInvoiceCloudDao.insert(workInvoiceCloud);
+            }
+        }
+    }
+
+
+    /**
+     * 将cpa的发票详情字段转换为当前系统字段
+     * @param resp
+     * @return
+     */
+    public WorkInvoice convertFinance(Map<String,Object> resp) throws Exception{
+        WorkInvoice result = new WorkInvoice();
+        if (Objects.nonNull(resp)) {
+            result.setIsSzCloud("sz");
+            // id
+            if (Objects.nonNull(resp.get("id"))) {
+                result.setId(resp.get("id").toString());
+            }
+            if (Objects.nonNull(resp.get("createByName"))){
+                String createByName = (String) resp.get("createByName");
+                User user = UserUtils.getByUserName(createByName);
+                result.setCreateBy(user);
+                result.setUpdateBy(user);
+                Office office = officeService.get(user.getOffice().getId());
+                result.setOffice(office);
+                result.setCompanyId(user.getCompany().getId());
+            }
+            if (Objects.nonNull(resp.get("status"))){
+                result.setInvoiceState(resp.get("status").toString());
+            }
+            if (Objects.nonNull(resp.get("createTime"))){
+                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
+                Long createTimeMillis = (Long) resp.get("createTime");
+                Date createDate = new Date(createTimeMillis);
+                result.setCreateDate(createDate);
+                result.setUpdateDate(createDate);
+            }
+            // processInstanceId
+            if (Objects.nonNull(resp.get("procInsId"))) {
+                result.setProcessInstanceId(resp.get("procInsId").toString());
+            }
+            // 基本信息
+            if (Objects.nonNull(resp.get("financeInvoiceBaseDTOList"))){
+                String data = JSON.toJSONString(resp.get("financeInvoiceBaseDTOList"));
+                List<Object> baseList = JSON.parseArray(data,Object.class);
+                ArrayList<WorkInvoiceCloud> projectRelations = new ArrayList<>();
+                if (Objects.nonNull(baseList)){
+                    for (Object base : baseList) {
+                        WorkInvoiceCloud projectRelation = new WorkInvoiceCloud();
+                        Map<String, Object> baseMap = JSONObject.parseObject(JSON.toJSONString(base));
+                        if (Objects.nonNull(baseMap.get("programName"))){
+                            projectRelation.setProjectName(baseMap.get("programName").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("contractName"))){
+                            projectRelation.setWorkContractName(baseMap.get("contractName").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("programNo"))){
+                            projectRelation.setProjectNum(baseMap.get("programNo").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("clientName"))){
+                            projectRelation.setClientName(baseMap.get("clientName").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("reportNo"))){
+                            projectRelation.setReportNo(baseMap.get("reportNo").toString());
+                        }
+                        projectRelation.setId(baseMap.get("id").toString());
+                        projectRelation.setInvoiceId(result.getId());
+                        projectRelation.setDelFlag("0");
+                        projectRelation.setCreateBy(result.getCreateBy());
+                        projectRelation.setUpdateBy(result.getUpdateBy());
+                        projectRelation.setCreateDate(result.getCreateDate());
+                        projectRelation.setUpdateDate(result.getUpdateDate());
+                        projectRelation.setOfficeId(result.getOffice().getId());
+                        projectRelation.setCompanyId(result.getCompanyId());
+                        projectRelations.add(projectRelation);
+                    }
+
+                }
+                result.setWorkInvoiceCloudList(projectRelations);
+            }
+
+            // 发票类型
+            if (Objects.nonNull(resp.get("type"))) {
+                result.setInvoiceType(resp.get("type").toString());
+            }
+            //发票编号
+            if (Objects.nonNull(resp.get("no"))) {
+                result.setNumber(resp.get("no").toString());
+            }
+            //开票类型
+            if (Objects.nonNull(resp.get("billingType"))) {
+                result.setNewDrawer(resp.get("billingType").toString());
+            }
+            //实际开票单位
+            if (Objects.nonNull(resp.get("billingWorkplaceReal"))) {
+                WorkClientInfo workClientInfo = new WorkClientInfo();
+                workClientInfo.setId(resp.get("billingWorkplaceReal").toString());
+                result.setClient(workClientInfo);
+            }
+            //纳税人识别号
+            if (Objects.nonNull(resp.get("taxpayerIdentificationNo"))) {
+                result.setOrUnicode(resp.get("taxpayerIdentificationNo").toString());
+            }
+            //地址
+            if (Objects.nonNull(resp.get("address"))) {
+                result.setAddress(resp.get("address").toString());
+            }
+            //电话
+            if (Objects.nonNull(resp.get("telPhone"))) {
+                result.setTelephone(resp.get("telPhone").toString());
+            }
+            //开户银行
+            if (Objects.nonNull(resp.get("openBank"))) {
+                result.setBank(resp.get("openBank").toString());
+            }
+            //银行账号
+            if (Objects.nonNull(resp.get("bankAccount"))) {
+                result.setBankNumber(resp.get("bankAccount").toString());
+            }
+            //收款类型
+            if (Objects.nonNull(resp.get("receivablesTypeLabel"))) {
+                result.setChargeType(resp.get("receivablesTypeLabel").toString());
+            }
+            //开票内容
+            if (Objects.nonNull(resp.get("billingContentLabel"))) {
+                result.setBillingContent(resp.get("billingContentLabel").toString());
+            }
+            //开票金额
+            if (Objects.nonNull(resp.get("account"))) {
+                result.setMoney(Double.parseDouble(resp.get("account").toString()));
+            }
+            //开票内容要求
+            if (Objects.nonNull(resp.get("billingContentTerms"))) {
+                result.setContent(resp.get("billingContentTerms").toString());
+            }
+            //开票人
+            if (Objects.nonNull(resp.get("billingPeople"))) {
+                User userName = UserUtils.getByUserName(resp.get("billingPeople").toString());
+                result.setDrawer(userName);
+                result.setDrawerName(userName.getName());
+
+            }
+            //实际开票人
+            if (Objects.nonNull(resp.get("billingPeopleRealName"))) {
+                User userName = UserUtils.getByUserName(resp.get("billingPeopleRealName").toString());
+                result.setActualDrawerName(resp.get("billingPeopleRealName").toString());
+                result.setActualDrawerId(userName.getId());
+            }
+            //接收邮箱
+            if (Objects.nonNull(resp.get("actualDrawerEmailAddress"))) {
+                result.setActualDrawerEmailAddress(resp.get("actualDrawerEmailAddress").toString());
+            }
+            //对账人
+            if (Objects.nonNull(resp.get("reconciliationPeopleName"))) {
+                User userName = UserUtils.getByUserName(resp.get("reconciliationPeopleName").toString());
+                result.setAccountCheckingUserName(resp.get("reconciliationPeopleName").toString());
+                result.setAccountCheckingUserId(userName.getId());
+            }
+            //对账地区
+            if (Objects.nonNull(resp.get("reconciliationAreaName"))) {
+                Area area = new Area();
+                area.setId(resp.get("reconciliationAreaName").toString());
+                result.setArea(area);
+            }
+            //备注
+            if (Objects.nonNull(resp.get("remarks"))) {
+                result.setRemarks(resp.get("remarks").toString());
+            }
+            //开票时间
+            if (Objects.nonNull(resp.get("billingDate"))) {
+                String billingDate = resp.get("billingDate").toString();
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                Date date = sdf.parse(billingDate);
+                result.setInvoiceDate(date);
+            }
+            //领票时间
+            if (Objects.nonNull(resp.get("collectDate"))) {
+                String billingDate = resp.get("collectDate").toString();
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                Date date = sdf.parse(billingDate);
+                result.setTakeDate(date);
+            }
+            //发票明细
+            if (Objects.nonNull(resp.get("financeInvoiceDetailDTOList"))){
+                String data = JSON.toJSONString(resp.get("financeInvoiceDetailDTOList"));
+                List<Object> baseList = JSON.parseArray(data,Object.class);
+                ArrayList<WorkInvoiceDetail> workInvoiceDetails = new ArrayList<>();
+                if (Objects.nonNull(baseList)){
+                    for (Object base : baseList) {
+                        WorkInvoiceDetail workInvoiceDetail = new WorkInvoiceDetail();
+                        Map<String, Object> baseMap = JSONObject.parseObject(JSON.toJSONString(base));
+                        if (Objects.nonNull(baseMap.get("code"))){
+                            workInvoiceDetail.setCode(baseMap.get("code").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("number"))){
+                            workInvoiceDetail.setNumber(baseMap.get("number").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("account"))){
+                            workInvoiceDetail.setTotalMoney(baseMap.get("account").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("amount"))){
+                            workInvoiceDetail.setTaxMoney(baseMap.get("amount").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("rate"))){
+                            workInvoiceDetail.setTax(baseMap.get("rate").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("tax"))){
+                            workInvoiceDetail.setTaxRate(baseMap.get("tax").toString());
+                        }
+                        workInvoiceDetail.setId(baseMap.get("id").toString());
+                        workInvoiceDetail.setInvoiceId(result.getId());
+                        workInvoiceDetail.setDelFlag("0");
+                        workInvoiceDetail.setCreateBy(result.getCreateBy());
+                        workInvoiceDetail.setUpdateBy(result.getUpdateBy());
+                        workInvoiceDetail.setCreateDate(result.getCreateDate());
+                        workInvoiceDetail.setUpdateDate(result.getUpdateDate());
+                        workInvoiceDetail.setOfficeId(result.getOffice().getId());
+                        workInvoiceDetail.setComId(result.getCompanyId());
+                        workInvoiceDetail.setBackSign("正常");
+                        workInvoiceDetail.setState("正常");
+                        workInvoiceDetails.add(workInvoiceDetail);
+                    }
+
+                }
+                result.setWorkAccountList(workInvoiceDetails);
+            }
+
+            // 附件
+            if (Objects.nonNull(resp.get("workAttachmentDtoList"))) {
+                String jsonString = JSON.toJSONString(resp.get("workAttachmentDtoList"));
+                List<Object> attachmentList = JSON.parseArray(jsonString, Object.class);
+                List<Workattachment> attachments = new ArrayList<>();
+                if (Objects.nonNull(attachmentList)) {
+                    for (Object attachment : attachmentList) {
+                        Workattachment attachmentDto = new Workattachment();
+                        Map<String, Object> fileMap = JSONObject.parseObject(JSON.toJSONString(attachment));
+                        User u = new User();
+                        if (Objects.nonNull(fileMap.get("name"))) { // 附件名称
+                            attachmentDto.setAttachmentName(fileMap.get("name").toString());
+                        }
+                        if (Objects.nonNull(fileMap.get("createBy"))) { // 创建人
+                            Map<String, Object> createBy = JSONObject.parseObject(JSON.toJSONString(fileMap.get("createBy")));
+                            if (Objects.nonNull(createBy.get("name"))) {
+                                u.setName(createBy.get("name").toString());
+                            }
+                        }
+                        if (Objects.nonNull(fileMap.get("createTime"))) { // 创建时间
+                            Object createTime = fileMap.get("createTime");
+                            if (createTime instanceof Long) {
+                                long timestamp = (Long) createTime;
+                                attachmentDto.setCreateDate(new Date(timestamp));
+                            }
+                        }
+                        if (Objects.nonNull(fileMap.get("url"))) { // 文件地址
+                            attachmentDto.setUrl(fileMap.get("url").toString());
+                        }
+                        attachmentDto.setCreateBy(u); // 创建人
+                        attachmentDto.setAttachmentId(result.getId());
+                        attachmentDto.setAttachmentFlag("115");
+                        User byUserName = UserUtils.getByUserName(u.getName());
+                        attachmentDto.setAttachmentUser(byUserName.getId());
+                        attachmentDto.setDelFlag("0");
+                        attachmentDto.setCreateBy(result.getCreateBy());
+                        attachmentDto.setUpdateBy(result.getUpdateBy());
+                        attachmentDto.setCreateDate(result.getCreateDate());
+                        attachmentDto.setUpdateDate(result.getUpdateDate());
+                        attachments.add(attachmentDto);
+                    }
+                }
+                result.setWorkAttachments(attachments);
+            }
+        }
+        return result;
+    }
+
 
 }

+ 1 - 1
src/main/java/com/jeeplus/modules/szCenterservice/service/szCloud/FinanceInvoiceService.java

@@ -178,7 +178,7 @@ public class FinanceInvoiceService {
             }
             //备注
             if (Objects.nonNull(resp.get("remarks"))) {
-                result.setRemarks(resp.get("remarks").toString());
+                result.setInvoiceRemarks(resp.get("remarks").toString());
             }
             //开票时间
             if (Objects.nonNull(resp.get("billingDate"))) {

+ 2 - 0
src/main/java/com/jeeplus/modules/szCenterservice/utils/SzConvertServiceUtil.java

@@ -41,6 +41,7 @@ public class SzConvertServiceUtil {
                         notify.setType(workProjectNotify.getType());
                         notify.setProcessInstanceId(workProjectNotify.getTask().getProcessInstanceId());
                         notify.setTitle((String) workProjectNotify.getVars().get("title"));
+                        notify.setContent((String) workProjectNotify.getVars().get("title"));
                         notify.setInitiator((String) workProjectNotify.getVars().get("userName"));
                         notify.setAuditUserName(UserUtils.getUser().getName());
                         notify.setCreateDate(workProjectNotify.getTask().getCreateTime());
@@ -335,6 +336,7 @@ public class SzConvertServiceUtil {
             notify.setType(workProjectNotify.getProcessDefinitionName());
             notify.setProcessInstanceId(workProjectNotify.getProcessInstanceId());
             notify.setTitle((String) workProjectNotify.getVars().get("title"));
+            notify.setContent((String) workProjectNotify.getVars().get("title"));
             notify.setInitiator((String) workProjectNotify.getVars().get("userName"));
             notify.setWapCreateDate(workProjectNotify.getCreateTime());
             notify.setWapEndDate(workProjectNotify.getEndTime());

+ 15 - 0
src/main/java/com/jeeplus/modules/workinvoice/dao/WorkInvoiceCloudDao.java

@@ -0,0 +1,15 @@
+package com.jeeplus.modules.workinvoice.dao;
+
+import com.jeeplus.common.persistence.CrudDao;
+import com.jeeplus.common.persistence.annotation.MyBatisDao;
+import com.jeeplus.modules.workinvoice.entity.WorkInvoiceCloud;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@MyBatisDao
+public interface WorkInvoiceCloudDao extends CrudDao<WorkInvoiceCloud> {
+    void deleteByInvoiceId(@Param("invoiceId") String invoiceId);
+
+    List<WorkInvoiceCloud> getByInvoiceId(@Param("invoiceId")String invoiceId);
+}

+ 2 - 0
src/main/java/com/jeeplus/modules/workinvoice/dao/WorkInvoiceDao.java

@@ -234,4 +234,6 @@ public interface WorkInvoiceDao extends CrudDao<WorkInvoice> {
 	 * @return
 	 */
 	String getInvoiceNumberStr(String invoiceId);
+
+	WorkInvoice getById(@Param("id")String id);
 }

+ 18 - 0
src/main/java/com/jeeplus/modules/workinvoice/entity/WorkInvoice.java

@@ -132,6 +132,24 @@ public class WorkInvoice extends ActEntity<WorkInvoice> {
 	private String redInvoiceRelevancyId;	//红字发票关联其他发票id
 	private String redInvoiceRelevancyNumber;	//红字发票关联其他发票编号
 	private List<String> redNotStatusList;
+	private List<WorkInvoiceCloud> workInvoiceCloudList;
+	private String isSzCloud; //判断是否是苏州分公司的发票数据
+
+	public String getIsSzCloud() {
+		return isSzCloud;
+	}
+
+	public void setIsSzCloud(String isSzCloud) {
+		this.isSzCloud = isSzCloud;
+	}
+
+	public List<WorkInvoiceCloud> getWorkInvoiceCloudList() {
+		return workInvoiceCloudList;
+	}
+
+	public void setWorkInvoiceCloudList(List<WorkInvoiceCloud> workInvoiceCloudList) {
+		this.workInvoiceCloudList = workInvoiceCloudList;
+	}
 
 	public String getComment() {
 		return comment;

+ 78 - 0
src/main/java/com/jeeplus/modules/workinvoice/entity/WorkInvoiceCloud.java

@@ -0,0 +1,78 @@
+package com.jeeplus.modules.workinvoice.entity;
+
+import com.jeeplus.common.persistence.DataEntity;
+
+public class WorkInvoiceCloud extends DataEntity<WorkInvoiceCloud> {
+    private String invoiceId;
+    private String projectName;
+    private String projectNum;
+    private String workContractName;
+    private String reportNo;
+    private String clientName;
+    private String officeId;
+    private String companyId;
+
+    public String getOfficeId() {
+        return officeId;
+    }
+
+    public void setOfficeId(String officeId) {
+        this.officeId = officeId;
+    }
+
+    public String getCompanyId() {
+        return companyId;
+    }
+
+    public void setCompanyId(String companyId) {
+        this.companyId = companyId;
+    }
+
+    public String getInvoiceId() {
+        return invoiceId;
+    }
+
+    public void setInvoiceId(String invoiceId) {
+        this.invoiceId = invoiceId;
+    }
+
+    public String getProjectName() {
+        return projectName;
+    }
+
+    public void setProjectName(String projectName) {
+        this.projectName = projectName;
+    }
+
+    public String getProjectNum() {
+        return projectNum;
+    }
+
+    public void setProjectNum(String projectNum) {
+        this.projectNum = projectNum;
+    }
+
+    public String getWorkContractName() {
+        return workContractName;
+    }
+
+    public void setWorkContractName(String workContractName) {
+        this.workContractName = workContractName;
+    }
+
+    public String getReportNo() {
+        return reportNo;
+    }
+
+    public void setReportNo(String reportNo) {
+        this.reportNo = reportNo;
+    }
+
+    public String getClientName() {
+        return clientName;
+    }
+
+    public void setClientName(String clientName) {
+        this.clientName = clientName;
+    }
+}

+ 23 - 11
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceAllService.java

@@ -17,10 +17,7 @@ import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
 import com.jeeplus.modules.serialnum.service.SerialNumTplService;
-import com.jeeplus.modules.sys.entity.Office;
-import com.jeeplus.modules.sys.entity.Role;
-import com.jeeplus.modules.sys.entity.User;
-import com.jeeplus.modules.sys.entity.Workattachment;
+import com.jeeplus.modules.sys.entity.*;
 import com.jeeplus.modules.sys.service.AreaService;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.service.WorkattachmentService;
@@ -38,9 +35,11 @@ import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
 import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
 import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
+import com.jeeplus.modules.workinvoice.dao.WorkInvoiceCloudDao;
 import com.jeeplus.modules.workinvoice.dao.WorkInvoiceDao;
 import com.jeeplus.modules.workinvoice.dao.WorkInvoiceReceiptDao;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoice;
+import com.jeeplus.modules.workinvoice.entity.WorkInvoiceCloud;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoiceProjectRelation;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoiceReceipt;
 import com.jeeplus.modules.workinvoicedetail.dao.WorkInvoiceDetailDao;
@@ -117,6 +116,8 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 	private WorkContractInfoService contractInfoService;
 	@Autowired
 	private AreaService areaService;
+	@Autowired
+	private WorkInvoiceCloudDao workInvoiceCloudDao;
 
 	private static byte[] SYN_BYTE = new byte[0];
 
@@ -170,15 +171,22 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 				}
 			}
 			//如果发票对账地区为空,则将第一个项目信息的所在地添加到对账地区
-			if(StringUtils.isBlank(workInvoice.getArea().getId())){
-				//判定项目是否存在
-				if(0 < projectRelationList.size()){
-					if(projectRelationList.get(0).getIsProject()==1){
-						workInvoice.setArea(areaService.get(ruralProjectRecordsService.get(projectRelationList.get(0).getProjectId()).getArea()));
+
+			if (StringUtils.isNotBlank(workInvoice.getIsSzCloud())){
+				Area area = new Area();
+				area.setName(workInvoice.getArea().getId());
+				workInvoice.setArea(area);
+			}else {
+				if(StringUtils.isBlank(workInvoice.getArea().getId())){
+					//判定项目是否存在
+					if(0 < projectRelationList.size()){
+						if(projectRelationList.get(0).getIsProject()==1){
+							workInvoice.setArea(areaService.get(ruralProjectRecordsService.get(projectRelationList.get(0).getProjectId()).getArea()));
+						}
 					}
+				}else{
+					workInvoice.setArea(areaService.get(workInvoice.getArea().getId()));
 				}
-			}else{
-				workInvoice.setArea(areaService.get(workInvoice.getArea().getId()));
 			}
 			workInvoice.setWorkInvoiceProjectRelationList(projectRelationList);
 			//查找发票的附件信息
@@ -2363,4 +2371,8 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 		workInvoiceDao.updateDate(workInvoice);
 		this.updateWorkInvoiceInfo(workInvoice);
 	}
+
+	public List<WorkInvoiceCloud> getByInvoiceId(String id) {
+		return workInvoiceCloudDao.getByInvoiceId(id);
+	}
 }

+ 12 - 4
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java

@@ -41,12 +41,10 @@ import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
 import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
 import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
+import com.jeeplus.modules.workinvoice.dao.WorkInvoiceCloudDao;
 import com.jeeplus.modules.workinvoice.dao.WorkInvoiceDao;
 import com.jeeplus.modules.workinvoice.dao.WorkInvoiceReceiptDao;
-import com.jeeplus.modules.workinvoice.entity.TemporaryInvoiceInfo;
-import com.jeeplus.modules.workinvoice.entity.WorkInvoice;
-import com.jeeplus.modules.workinvoice.entity.WorkInvoiceProjectRelation;
-import com.jeeplus.modules.workinvoice.entity.WorkInvoiceReceipt;
+import com.jeeplus.modules.workinvoice.entity.*;
 import com.jeeplus.modules.workinvoicedetail.dao.WorkInvoiceDetailDao;
 import com.jeeplus.modules.workinvoicedetail.entity.WorkInvoiceDetail;
 import com.jeeplus.modules.workinvoicedetail.service.WorkInvoiceDetailService;
@@ -129,6 +127,8 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 	private AreaService areaService;
 	@Autowired
 	private WorkContractInfoService contractInfoService;
+	@Autowired
+	private WorkInvoiceCloudDao workInvoiceCloudDao;
 
 	private static byte[] SYN_BYTE = new byte[0];
 
@@ -4098,4 +4098,12 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 		}
 	}
 
+	/**
+	 * 查询苏州cloud中传过来项目与发票关联的信息
+	 * @param id
+	 * @return
+	 */
+	public List<WorkInvoiceCloud> getByInvoiceId(String id) {
+		return workInvoiceCloudDao.getByInvoiceId(id);
+	}
 }

+ 44 - 12
src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceAllController.java

@@ -22,10 +22,7 @@ import com.jeeplus.modules.projectrecord.entity.ProjectRecords;
 import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
 import com.jeeplus.modules.projectrecord.service.ProjectRecordsService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
-import com.jeeplus.modules.sys.entity.MainDictDetail;
-import com.jeeplus.modules.sys.entity.Office;
-import com.jeeplus.modules.sys.entity.Role;
-import com.jeeplus.modules.sys.entity.User;
+import com.jeeplus.modules.sys.entity.*;
 import com.jeeplus.modules.sys.service.AreaService;
 import com.jeeplus.modules.sys.service.OfficeService;
 import com.jeeplus.modules.sys.utils.DictUtils;
@@ -40,10 +37,7 @@ import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
 import com.jeeplus.modules.workclientinfo.service.WorkClientInfoService;
 import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
 import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
-import com.jeeplus.modules.workinvoice.entity.WorkInvoice;
-import com.jeeplus.modules.workinvoice.entity.WorkInvoiceExport;
-import com.jeeplus.modules.workinvoice.entity.WorkInvoiceProjectRelation;
-import com.jeeplus.modules.workinvoice.entity.WorkInvoiceReceipt;
+import com.jeeplus.modules.workinvoice.entity.*;
 import com.jeeplus.modules.workinvoice.service.WorkInvoiceAllService;
 import com.jeeplus.modules.workinvoice.service.WorkInvoiceService;
 import com.jeeplus.modules.workinvoicealter.entity.WorkInvoiceAlter;
@@ -158,10 +152,27 @@ public class WorkInvoiceAllController extends BaseController {
 		String getSumMoney = workInvoiceService.getSumMoney(workInvoice);
 		List<WorkInvoice> workInvoiceList = page.getList();
 		for (WorkInvoice invoice: workInvoiceList) {
-			invoice.setWorkInvoiceProjectRelationList(invoiceService.getProjectRelation(invoice));
-			List<String> projectNameList = invoiceService.getProjectNameList(invoice);
-			String projectNameStr = String.join(",", projectNameList);
-			invoice.setProjectName(projectNameStr);
+			if (StringUtils.isNotBlank(invoice.getIsSzCloud()) && invoice.getIsSzCloud().equals("sz")){
+				List<WorkInvoiceCloud> workInvoiceCloud = workInvoiceService.getByInvoiceId(invoice.getId());
+				if (workInvoiceCloud != null){
+					ArrayList<String> names = new ArrayList<>();
+					for (WorkInvoiceCloud cloud : workInvoiceCloud) {
+						names.add(cloud.getProjectName());
+					}
+					String projectNameStr = String.join(",", names);
+					invoice.setProjectName(projectNameStr);
+					WorkClientInfo workClientInfo = new WorkClientInfo();
+					workClientInfo.setName(invoice.getClient().getId());
+					invoice.setClient(workClientInfo);
+					invoice.setAccountCheckingArea(invoice.getArea().getId());
+				}
+			}else {
+				invoice.setWorkInvoiceProjectRelationList(invoiceService.getProjectRelation(invoice));
+				List<String> projectNameList = invoiceService.getProjectNameList(invoice);
+				String projectNameStr = String.join(",", projectNameList);
+				invoice.setProjectName(projectNameStr);
+			}
+
 		}
 		model.addAttribute("page", page);
 		model.addAttribute("sumMoney", getSumMoney);
@@ -358,6 +369,27 @@ public class WorkInvoiceAllController extends BaseController {
 			workInvoiceService.queryDetails(workInvoice);
 		}
 		String tabId = request.getParameter("tabId");
+		String isSzCloud = workInvoice.getIsSzCloud();
+		if (StringUtils.isNotBlank(isSzCloud) && isSzCloud.equals("sz")){
+			List<WorkInvoiceCloud> invoiceClouds = workInvoiceService.getByInvoiceId(workInvoice.getId());
+			if (invoiceClouds != null){
+				ArrayList<WorkInvoiceProjectRelation> workInvoiceProjectRelations = new ArrayList<>();
+				for (WorkInvoiceCloud invoiceCloud : invoiceClouds) {
+					WorkInvoiceProjectRelation projectRelation = new WorkInvoiceProjectRelation();
+					projectRelation.setProjectName(invoiceCloud.getProjectName());
+					projectRelation.setWorkContractName(invoiceCloud.getWorkContractName());
+					projectRelation.setProjectNum(invoiceCloud.getProjectNum());
+					projectRelation.setClientName(invoiceCloud.getClientName());
+					projectRelation.setReportDataNum(invoiceCloud.getReportNo());
+					workInvoiceProjectRelations.add(projectRelation);
+				}
+				workInvoice.setWorkInvoiceProjectRelationList(workInvoiceProjectRelations);
+				WorkClientInfo workClientInfo = new WorkClientInfo();
+				workClientInfo.setName(workInvoice.getClient().getId());
+				workInvoice.setClient(workClientInfo);
+			}
+
+		}
 		if("1".equals(tabId)){
 			List<MainDictDetail> billingContentList = DictUtils.getMainDictList("billing_content");
 			for (MainDictDetail dictDetail: billingContentList) {

+ 34 - 16
src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceTwoController.java

@@ -45,6 +45,7 @@ import com.jeeplus.modules.workclientinfo.service.WorkClientInfoService;
 import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
 import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoice;
+import com.jeeplus.modules.workinvoice.entity.WorkInvoiceCloud;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoiceExport;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoiceProjectRelation;
 import com.jeeplus.modules.workinvoice.service.WorkInvoiceService;
@@ -191,23 +192,40 @@ public class WorkInvoiceTwoController extends BaseController {
 					break;
 				}
 			}*/
-			invoice.setWorkInvoiceProjectRelationList(workInvoiceService.getProjectRelation(invoice));
-			List<String> projectNameList = workInvoiceService.getProjectNameList(invoice);
-			String projectNameStr = String.join(",", projectNameList);
-			if(projectNameStr.contains("\r")){
-				projectNameStr = projectNameStr.replaceAll("\r"," ");
-			}
-			if(projectNameStr.contains("\n")){
-				projectNameStr = projectNameStr.replaceAll("\n"," ");
-			}
-			invoice.setProjectName(projectNameStr);
-			List<String> reportNumber = Lists.newArrayList();
-			for (WorkInvoiceProjectRelation info : invoice.getWorkInvoiceProjectRelationList()) {
-				if(StringUtils.isNotBlank(info.getReportDataNum()))
-					reportNumber.add(info.getReportDataNum());
+			if (StringUtils.isNotBlank(invoice.getIsSzCloud()) && invoice.getIsSzCloud().equals("sz")){
+				List<WorkInvoiceCloud> workInvoiceCloud = workInvoiceService.getByInvoiceId(invoice.getId());
+				if (workInvoiceCloud != null){
+					ArrayList<String> names = new ArrayList<>();
+					for (WorkInvoiceCloud cloud : workInvoiceCloud) {
+						names.add(cloud.getProjectName());
+					}
+					String projectNameStr = String.join(",", names);
+					invoice.setProjectName(projectNameStr);
+					WorkClientInfo workClientInfo = new WorkClientInfo();
+					workClientInfo.setName(invoice.getClient().getId());
+					invoice.setClient(workClientInfo);
+					invoice.setAccountCheckingArea(invoice.getArea().getId());
+				}
+			}else {
+				invoice.setWorkInvoiceProjectRelationList(workInvoiceService.getProjectRelation(invoice));
+				List<String> projectNameList = workInvoiceService.getProjectNameList(invoice);
+				String projectNameStr = String.join(",", projectNameList);
+				if(projectNameStr.contains("\r")){
+					projectNameStr = projectNameStr.replaceAll("\r"," ");
+				}
+				if(projectNameStr.contains("\n")){
+					projectNameStr = projectNameStr.replaceAll("\n"," ");
+				}
+				invoice.setProjectName(projectNameStr);
+				List<String> reportNumber = Lists.newArrayList();
+				for (WorkInvoiceProjectRelation info : invoice.getWorkInvoiceProjectRelationList()) {
+					if(StringUtils.isNotBlank(info.getReportDataNum()))
+						reportNumber.add(info.getReportDataNum());
+				}
+				String reportNumberStr = String.join(",", reportNumber);
+				invoice.setReportNumber(reportNumberStr);
 			}
-			String reportNumberStr = String.join(",", reportNumber);
-			invoice.setReportNumber(reportNumberStr);
+
 		}
 		model.addAttribute("page", page);
 		model.addAttribute("sumMoney", getSumMoney);

+ 6 - 3
src/main/resources/jeeplus.properties

@@ -7,7 +7,7 @@ jdbc.type=mysql
 jdbc.driver=com.mysql.jdbc.Driver
 db.name=ruihuaoa-activity-data
 #jdbc.url=jdbc:mysql://8.136.152.135:3306/new_ccpm?useUnicode=true&characterEncoding=utf-8
-jdbc.url=jdbc:mysql://127.0.0.1:3306/new_ccpm?useUnicode=true&characterEncoding=utf-8
+jdbc.url=jdbc:mysql://192.168.2.4:3306/new_ccpm?useUnicode=true&characterEncoding=utf-8
 jdbc.username=root
 jdbc.password=root
 #jdbc.password=Xgcomdata10376@
@@ -378,7 +378,7 @@ signature_project_approval_work = 3245192847945704016
 #其他系统的地址
 CPA_PATH:   http://localhost:2800
 #苏州分公司是否同步数据
-SZ_PATH_flag: false
+SZ_PATH_flag: true
 #苏州分公司 发票
 SZ_PATH: http://localhost:9527
 #flowable
@@ -400,4 +400,7 @@ INQUIRE_STATUS: cpa
 SZCLOUD_STATUS: sz
 
 # 公共密码
-publicPassword: Xg@sys9hB2!xWm
+publicPassword: Xg@sys9hB2!xWm
+
+//苏州公共密码
+szPublicPassword: Xg@sys9hB2!xWm

+ 1 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml

@@ -6852,6 +6852,7 @@ GROUP BY
 		,prd.number AS "projectReportNumber"
 		,sua.name as "createName"
 		,sua.mobile as "createNamePhone"
+		,a.submit_money as "submitMoney"
 		,a.engineering_type as "engineeringType"
 		,supmi.name as "projectMasterName"
 		,supmi.mobile as "projectMasterPhone"

+ 77 - 0
src/main/resources/mappings/modules/workinvoice/WorkInvoiceCloudDao.xml

@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.modules.workinvoice.dao.WorkInvoiceCloudDao">
+
+    <select id="get" resultType="WorkInvoiceCloud">
+        select
+            id,
+            invoice_id,
+            project_name,
+            project_num,
+            report_no,
+            client_name
+        from work_project_cloud
+        where id = #{id} and del_flag = '0'
+    </select>
+
+
+    <insert id="insert">
+        insert into work_project_cloud(
+            id,
+            create_by,
+            create_date,
+            update_by,
+            update_date,
+            del_flag,
+            invoice_id,
+            project_name,
+            project_num,
+            work_contract_name,
+            report_no,
+            company_id,
+            office_id,
+            client_name
+        ) values (
+            #{id},
+            #{createBy.id},
+            #{createDate},
+            #{updateBy.id},
+            #{updateDate},
+            #{delFlag},
+            #{invoiceId},
+            #{projectName},
+            #{projectNum},
+            #{workContractName},
+            #{reportNo},
+            #{companyId},
+            #{officeId},
+            #{clientName}
+        )
+    </insert>
+
+    <update id="update">
+        update work_project_cloud set
+            project_name = #{projectName},
+            project_num = #{projectNum},
+            work_contract_name = #{workContractName},
+            report_no = #{reportNo},
+            client_name = #{clientName}
+        where id = #{id}
+    </update>
+
+    <delete id="deleteByInvoiceId">
+        delete from work_project_cloud where invoice_id = #{invoiceId}
+    </delete>
+    <select id="getByInvoiceId" resultType="WorkInvoiceCloud">
+        select
+            id,
+            invoice_id,
+            project_name,
+            project_num,
+            report_no,
+            client_name,
+            work_contract_name
+        from work_project_cloud
+        where invoice_id = #{invoiceId} and del_flag = '0'
+    </select>
+</mapper>

+ 10 - 2
src/main/resources/mappings/modules/workinvoice/WorkInvoiceDao.xml

@@ -165,6 +165,7 @@
 			,
 		acu.name as "accountCheckingUserName"
 		,actu.name as "actualDrawerName"
+		,a.is_sz_cloud as "isSzCloud"
 		FROM work_invoice a
 		<include refid="workInvoiceJoins"/>
 		WHERE a.id = #{id} and a.del_flag = 0
@@ -478,6 +479,7 @@
 			<include refid="workInvoiceColumns"/>
 			,wid.number as "widNumber"
 			,wid.total_money as "widTotalMoney"
+			,a.is_sz_cloud as "isSzCloud"
 
 		,sa.name as "accountCheckingArea"
 		,ifnull(( SELECT wir.receipt_date FROM work_invoice_receipt wir WHERE wir.invoice_id = a.id ORDER BY wir.receipt_date DESC LIMIT 1 ),a.receipt_money_date) AS "receiptMoneyDate",
@@ -1854,7 +1856,8 @@
 			red_invoice_flag,
 			red_invoice_relevancy_id,
 			red_invoice_relevancy_number,
-			id_card
+			id_card,
+			is_sz_cloud
 		) VALUES (
 			#{id},
 			#{number},
@@ -1904,7 +1907,8 @@
 		    #{redInvoiceFlag},
 		    #{redInvoiceRelevancyId},
 		    #{redInvoiceRelevancyNumber},
-		    #{idCard}
+		    #{idCard},
+		    #{isSzCloud}
 		)
 	</insert>
 
@@ -3196,5 +3200,9 @@
 		select group_concat(number) from work_invoice_detail where invoice_id = #{invoiceId}
 	</select>
 
+	<select id="getById" resultType="WorkInvoice">
+		select * from work_invoice where id = #{id} and del_flag = '0'
+	</select>
+
 
 </mapper>

+ 1 - 0
src/main/resources/spring-context-shiro.xml

@@ -19,6 +19,7 @@
                 ${adminPath}/clockInRecordController/** = anon
                 ${adminPath}/hrUserController/** = anon
                 ${adminPath}/ccpmList/ccpmList/** = anon
+                ${adminPath}/cpa_finance/saveInfo = anon
                 ${adminPath}/workMaterialCollect/total/** = anon
                 ${adminPath}/ruralProject/signatureOldMessageDispose/** = anon
                 ${adminPath}/weChatCallBack/** = anon

+ 6 - 1
src/main/webapp/webpage/modules/workinvoice/workInvoiceAllList.jsp

@@ -685,7 +685,7 @@
 				//{checkbox: true, fixed: true},
                 {field:'index',align:'center', title: '序号',width:40}
 				,{field:'projName',align:'center', title: '项目名称', minWidth:160,templet:function(d){
-						if(1 == d.showView && d.showView != undefined){
+						if(1 == d.showView && d.showView != undefined && d.isSzCloud == ''){
 							return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/workinvoiceAll/workInvoiceAll/projectview?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
 						}else{
 							return "<span title='"+ d.projName +"'>" +d.projName+ "</span>";
@@ -843,6 +843,10 @@
                     ,"invoiceNum":"${workInvoice.number}"
                     ,"chargeType":"${fns:getMainDictLabels(workInvoice.chargeType,',','receipt_type', '')}"
                     ,"billingContent":"${fns:getMainDictLabels(workInvoice.billingContent,',','billing_content', '')}"
+					<c:if test="${workInvoice.isSzCloud != null && workInvoice.isSzCloud != '' && workInvoice.isSzCloud == 'sz'}">
+					,"chargeType":"${workInvoice.chargeType}"
+					,"billingContent":"${workInvoice.billingContent}"
+					</c:if>
                     ,"invoiceType":"${workInvoice.invoiceTypeStr}"
                     ,"projNum":"${workInvoice.project.projectId}"
                     ,"projectId":"${workInvoice.project.id}"
@@ -858,6 +862,7 @@
 					,"widNumber":"${workInvoice.widNumber}"
 					,"widTotalMoney":"${workInvoice.widTotalMoney}"
 					,"accountCheckingArea":"${workInvoice.accountCheckingArea}"
+					,"isSzCloud":"${workInvoice.isSzCloud}"
                     ,"money":"<fmt:formatNumber value="${workInvoice.money}" pattern="##0.00"/>"
                     ,"invoiceDate":"<fmt:formatDate value="${workInvoice.invoiceDate}" pattern="yyyy-MM-dd"/>"
                     ,"receiptMoneyDate":"<fmt:formatDate value="${workInvoice.receiptMoneyDate}" pattern="yyyy-MM-dd"/>"

+ 1 - 1
src/main/webapp/webpage/modules/workinvoice/workInvoiceAuditCpa.jsp

@@ -712,7 +712,7 @@
 			<div class="layui-item layui-col-sm12 with-textarea">
 				<label class="layui-form-label double-line">备注:</label>
 				<div class="layui-input-block">
-					<form:textarea path="remarks" value="${workInvoice.remarks}" readonly="true" htmlEscape="false" rows="4" class="form-control" style="background-color: #f1f1f1" />
+					<form:textarea path="invoiceRemarks" value="${workInvoice.invoiceRemarks}" readonly="true" htmlEscape="false" rows="4" class="form-control" style="background-color: #f1f1f1" />
 				</div>
 			</div>
 

+ 6 - 1
src/main/webapp/webpage/modules/workinvoice/workInvoiceTwoList.jsp

@@ -809,7 +809,7 @@
 			,cols: [[
 				{field:'index',align:'center', title: '序号',width:40}
 				,{field:'projName',align:'center', title: '项目名称', minWidth:160,templet:function(d){
-						if(1 == d.showView && d.showView != undefined){
+						if(1 == d.showView && d.showView != undefined && d.isSzCloud == ''){
 							return "<a class=\"attention-info\" title=\"" + d.projName + "\" href=\"javascript:void(0);\" onclick=\"openDialogView('查看项目', '${ctx}/workinvoiceAll/workInvoiceAll/projectview?id=" + d.id +"','95%', '95%')\">" + d.projName + "</a>";
 						}else{
 							return "<span title='"+ d.projName +"'>" +d.projName+ "</span>";
@@ -969,6 +969,10 @@
 					,"invoiceNum":"${workInvoice.number}"
 					,"chargeType":"${fns:getMainDictLabels(workInvoice.chargeType,',','receipt_type', '')}"
 					,"billingContent":"${fns:getMainDictLabels(workInvoice.billingContent,',','billing_content', '')}"
+					<c:if test="${workInvoice.isSzCloud != null && workInvoice.isSzCloud != '' && workInvoice.isSzCloud == 'sz'}">
+					,"chargeType":"${workInvoice.chargeType}"
+					,"billingContent":"${workInvoice.billingContent}"
+					</c:if>
 					,"invoiceType":"${workInvoice.invoiceTypeStr}"
 					,"projectId":"${workInvoice.project.id}"
 					,"projName":"${workInvoice.projectName}"
@@ -986,6 +990,7 @@
 					,"electronicInvoiceFlag":"${workInvoice.electronicInvoiceFlag}"
 					,"accountCheckingArea":"${workInvoice.accountCheckingArea}"
 					,"workAccountListStr":${fns:toJson(workInvoice.workAccountList)}
+					,"isSzCloud":"${workInvoice.isSzCloud}"
 					,"money":"<fmt:formatNumber value="${workInvoice.money}" pattern="##0.00"/>"
 					,"invoiceDate":"<fmt:formatDate value="${workInvoice.invoiceDate}" pattern="yyyy-MM-dd"/>"
 					,"receiptMoneyDate":"<fmt:formatDate value="${workInvoice.receiptMoneyDate}" pattern="yyyy-MM-dd"/>"

+ 1 - 1
src/main/webapp/webpage/modules/workinvoice/workInvoiceViewCpa.jsp

@@ -712,7 +712,7 @@
 			<div class="layui-item layui-col-sm12 with-textarea">
 				<label class="layui-form-label double-line">备注:</label>
 				<div class="layui-input-block">
-					<form:textarea path="remarks" value="${workInvoice.remarks}" readonly="true" htmlEscape="false" rows="4" class="form-control" style="background-color: #f1f1f1" />
+					<form:textarea path="invoiceRemarks" value="${workInvoice.invoiceRemarks}" readonly="true" htmlEscape="false" rows="4" class="form-control" style="background-color: #f1f1f1" />
 				</div>
 			</div>