浏览代码

报告导入添加覆盖功能

user5 3 年之前
父节点
当前提交
3d43e49084

+ 9 - 0
src/main/java/com/jeeplus/modules/projectcontentinfo/service/ProjectReportDataService.java

@@ -1642,4 +1642,13 @@ public class ProjectReportDataService extends CrudService<ProjectReportDataDao,
 	public ProjectReportData getProjectReportDataByContractId(String contractId) {
 		return dao.getProjectReportDataByContractId(contractId);
 	}
+	/**
+	 * 根据签章contractId查询报告信息
+	 * @param number
+	 * @return
+	 */
+	@Transactional(readOnly = false)
+	public ProjectReportData findByNum(String number) {
+		return dao.findByNum(number);
+	}
 }

+ 2 - 2
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageElectronicSealDao.java

@@ -83,14 +83,14 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
      * @param reportIdList
      * @return
      */
-    Integer getProjectReportCountByReportId(@Param("reportIdList") List<String> reportIdList);
+    List<String> getProjectReportIdByReportId(@Param("reportIdList") List<String> reportIdList);
 
     /**
      * 根据报告号查询签章数据表数据量
      * @param reportIdList
      * @return
      */
-    Integer getCountByReportId(@Param("reportIdList") List<String> reportIdList);
+    List<ProjectReportSignatureInfo> getInfoByReportId(@Param("reportIdList") List<String> reportIdList);
 
     /**
      * 批量添加

+ 40 - 12
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java

@@ -2369,14 +2369,10 @@ public class RuralProjectMessageElectronicSealService extends CrudService<RuralP
         }
         //报告号数据查询是否已存在
         //查询质量复核表中是否存在该报告号
-        Integer projectReportCountByReportId = dao.getProjectReportCountByReportId(projectReportIdList);
-        if(projectReportCountByReportId != projectReportIdList.size()){
-            return "存在报告号不正确情况";
-        }
-        //查询新的签章表中是否已存在该报告号
-        Integer countByReportId = dao.getCountByReportId(projectReportIdList);
-        if(0 < countByReportId){
-            return "数据中已存在已上传报告号信息";
+        List<String> projectReportIdAlreadyExistList = dao.getProjectReportIdByReportId(projectReportIdList);
+        if(projectReportIdAlreadyExistList.size() != projectReportIdList.size()){
+            String projectReportIdJoin = String.join(",", projectReportIdAlreadyExistList);
+            return "存在报告号"+ projectReportIdJoin +"不正确情况";
         }
         //根据项目名称集合查询项目信息是否存在
         for (ProjectReportSignatureInfo importInfo: list) {
@@ -2388,7 +2384,26 @@ public class RuralProjectMessageElectronicSealService extends CrudService<RuralP
                 if(consultantId!=null) {
                     importInfo.setConsultant(consultantId);
                 }else {
-                    return "存在咨询员不是一级造价师的情况";
+                    return "报告号【" + importInfo.getProjectReportId() + "】咨询员不是一级造价师";
+                }
+            }
+        }
+
+        //创建重复数据集合
+        List<ProjectReportSignatureInfo> alreadyExistLest = Lists.newArrayList();
+        //查询新的签章表中是否已存在该报告号
+        List<ProjectReportSignatureInfo> getInfoListByReportId = dao.getInfoByReportId(projectReportIdList);
+        if(0 < getInfoListByReportId.size()){
+            for (ProjectReportSignatureInfo info : getInfoListByReportId) {
+                Iterator<ProjectReportSignatureInfo> it = list.iterator();
+                while(it.hasNext()){
+                    ProjectReportSignatureInfo signatureInfo = it.next();
+                    if(info.getProjectReportId().equals(signatureInfo.getProjectReportId())){
+                        signatureInfo.setId(info.getId());
+                        alreadyExistLest.add(signatureInfo);
+                        it.remove();
+                        break;
+                    }
                 }
             }
         }
@@ -2396,18 +2411,19 @@ public class RuralProjectMessageElectronicSealService extends CrudService<RuralP
 
         //对 (经过判断的) 数据进行批量新增处理
         //调用方法 分批处理
-        insertAllProjectBasicsInfo(list);
+        insertAllProjectBasicsInfo(list,alreadyExistLest);
 
         return "导入B类项目成功";
     }
 
     /**
      * 批量插入数据信息
-     * @param projectBasicsList
+     * @param projectBasicsList 新增数据
+     * @param alreadyExistLest 已存在数据进行修改
      * @return
      */
     @Transactional(readOnly = false)
-    public String insertAllProjectBasicsInfo(List<ProjectReportSignatureInfo> projectBasicsList){
+    public String insertAllProjectBasicsInfo(List<ProjectReportSignatureInfo> projectBasicsList,List<ProjectReportSignatureInfo> alreadyExistLest){
         //分批处理
         if(null!=projectBasicsList && projectBasicsList.size()>0){
             int pointsDataLimit = 100;//限制条数
@@ -2430,6 +2446,18 @@ public class RuralProjectMessageElectronicSealService extends CrudService<RuralP
                 dao.insertByList(projectBasicsList);
             }
         }
+        //修改已存在数据
+        for (ProjectReportSignatureInfo info: alreadyExistLest) {
+            dao.updateProjectReportSignatureInfo(info);
+            //删除对应文件的附件信息
+            //根据报告号查询项目信息
+            ProjectReportData reportInfo = projectReportDataService.findByNum(info.getProjectReportId());
+            Workattachment workClientAttachment = new Workattachment();
+            workClientAttachment.setAttachmentFlag("145");
+            workClientAttachment.setAttachmentId(info.getId());
+            workClientAttachment.setProjectId(reportInfo.getProject().getId());
+            workattachmentService.deleteWorkattachment(workClientAttachment);
+        }
         return null;
     }
 

+ 3 - 2
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageElectronicSealController.java

@@ -681,6 +681,7 @@ public class RuralProjectMessageElectronicSealController extends BaseController
     public void downloadMassControl(HttpServletResponse response, ProjectReportData projectReportData)  {
         Map<String,Object> data = ruralProjectMessageElectronicSealService.disposeProjectReportdata(projectReportData);
         String projectName = (String) data.get("projectName");
+        String number = (String) data.get("number");
 
         //模板对象
         Template template=null;
@@ -695,9 +696,9 @@ public class RuralProjectMessageElectronicSealController extends BaseController
             e.printStackTrace();
         }
 
-        File docFile = new File(projectName + " 报告签章.doc");
+        File docFile = new File("报告号【"+number + "】项目名称:" + projectName + " 报告签章.doc");
         FreemarkerUtil.generateFile(data,template,docFile);
-        ResponseUtil.docResponse(projectName + " 报告签章.doc",docFile,response);
+        ResponseUtil.docResponse("报告号【"+number + "】项目名称:" + projectName + " 报告签章.doc",docFile,response);
         //将生成的文件上传到阿里云中
         ruralProjectMessageElectronicSealService.uploadOss(projectReportData,docFile);
     }

+ 7 - 0
src/main/java/com/jeeplus/modules/sys/dao/WorkattachmentDao.java

@@ -77,4 +77,11 @@ public interface WorkattachmentDao extends CrudDao<Workattachment> {
      * @param id
      */
     Integer deleteById(String id);
+
+    /**
+     * 删除附件信息
+     * @param workattachment
+     * @return
+     */
+    Integer deleteWorkattachment(Workattachment workattachment);
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/sys/service/WorkattachmentService.java

@@ -709,4 +709,13 @@ public class WorkattachmentService extends CrudService<WorkattachmentDao, Workat
 		}
 
 	}
+
+	/**
+	 * 删除附件信息
+	 * @param workattachment
+	 */
+	@Transactional(readOnly = false)
+	public void deleteWorkattachment(Workattachment workattachment) {
+		dao.deleteWorkattachment(workattachment);
+	}
 }

+ 4 - 4
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageElectronicSealDao.xml

@@ -200,8 +200,8 @@
 		</where>
 	</select>
 
-	<select id="getProjectReportCountByReportId" resultType="java.lang.Integer">
-		select count(id) from project_report_data a
+	<select id="getProjectReportIdByReportId" resultType="java.lang.String">
+		select number from project_report_data a
 		<where>
 			<if test="reportIdList!=null and reportIdList.size!=0">
 				a.number in
@@ -212,8 +212,8 @@
 		</where>
 	</select>
 
-	<select id="getCountByReportId" resultType="java.lang.Integer">
-		SELECT count(project_report_id)
+	<select id="getInfoByReportId" resultType="ProjectReportSignatureInfo">
+		SELECT id,project_report_id as "projectReportId"
 		FROM project_report_signature_info a
 		<where>
 			<if test="reportIdList!=null and reportIdList.size!=0">

+ 15 - 0
src/main/resources/mappings/modules/sys/WorkattachmentDao.xml

@@ -373,4 +373,19 @@
 		WHERE id = #{id}
 	</delete>
 
+	<delete id="deleteWorkattachment">
+		DELETE FROM work_attachment
+		<where>
+			<if test="attachmentId != null and attachmentId != ''">
+				and attachment_id = #{attachmentId}
+			</if>
+			<if test="projectId != null and projectId != ''">
+				and project_id = #{projectId}
+			</if>
+			<if test="attachmentFlag != null and attachmentFlag != ''">
+				and attachment_flag = #{attachmentFlag}
+			</if>
+		</where>
+	</delete>
+
 </mapper>