Browse Source

评估-合同编号调整

sangwenwei 1 year ago
parent
commit
45672ee7b7

+ 62 - 14
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/program/configuration/projectList/service/ProjectListService.java

@@ -644,21 +644,69 @@ public class ProjectListService {
                             WorkContractInfo contract = workContractInfoMapper.findById(contractId);
                             if (ObjectUtil.isNotEmpty(contract) && StringUtils.isBlank(contract.getNo())) {
                                 if (StringUtils.isNotBlank(programProjectListInfo.getReportType())) {
-                                    if ("1".equals(programProjectListInfo.getReportType())) {
-                                        // 生成合同编号-评估类
-                                        String serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), WorkContractInfoDto.BIZ_CODE,currentToken);
-                                        // 根据合同id和合同编号来修改合同数据
-                                        WorkContractInfo workContractInfo = new WorkContractInfo();
-                                        workContractInfo.setNo(serialNum);
-                                        workContractInfoMapper.update(workContractInfo, new QueryWrapper<WorkContractInfo>().lambda().eq(WorkContractInfo::getId, contractId));
-                                    }else if("2".equals(programProjectListInfo.getReportType())){
-                                        // 生成合同编号-咨询类
-                                        String serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), WorkContractInfoDto.BIZ_CODE_,currentToken);
-                                        // 根据合同id和合同编号来修改合同数据
-                                        WorkContractInfo workContractInfo = new WorkContractInfo();
-                                        workContractInfo.setNo(serialNum);
-                                        workContractInfoMapper.update(workContractInfo, new QueryWrapper<WorkContractInfo>().lambda().eq(WorkContractInfo::getId, contractId));
+                                    String projectYear = ""; //项目编号的年份
+                                    if (StringUtils.isNotBlank(programProjectListInfo.getNo())){
+                                        //截取项目编号所在的年份
+                                        projectYear = programProjectListInfo.getNo().substring(0, 4);
+                                        if ("1".equals(programProjectListInfo.getReportType())) {
+                                            String serialNum="";
+                                            //当项目编号年份与当前年份一致时,则合同编号正常生成,否则手动生成合同编号
+                                            if (projectYear.equals(currentYear)) {
+                                                // 生成合同编号-评估类
+                                                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), WorkContractInfoDto.BIZ_CODE,currentToken);
+                                            }else {
+                                                String contractNum = "评估合同";
+                                                //查找合同中与项目编号年份一致的最后一条评估合同的编号
+                                                String contractNo = workContractInfoMapper.getNoByYear(projectYear,contractNum);
+                                                int lastIndex = contractNo.lastIndexOf("-");
+                                                if (lastIndex != -1) {
+                                                    String lastPart = contractNo.substring(lastIndex + 1); // 从 "-" 后面开始截取
+                                                    int parseInt = Integer.parseInt(lastPart);
+                                                    int newNum =parseInt+1;
+                                                    if (newNum<100 && newNum >=10){
+                                                        serialNum = "评估合同-"+projectYear+"-0"+newNum;
+                                                    }else if (newNum>0 && newNum<10){
+                                                        serialNum = "评估合同-"+projectYear+"-00"+newNum;
+                                                    } else {
+                                                        serialNum = "评估合同-"+projectYear+"-"+newNum;
+                                                    }
+                                                }
+                                            }
+                                            // 根据合同id和合同编号来修改合同数据
+                                            WorkContractInfo workContractInfo = new WorkContractInfo();
+                                            workContractInfo.setNo(serialNum);
+                                            workContractInfoMapper.update(workContractInfo, new QueryWrapper<WorkContractInfo>().lambda().eq(WorkContractInfo::getId, contractId));
+                                        }else if("2".equals(programProjectListInfo.getReportType())){
+                                            String serialNum="";
+                                            //当项目编号年份与当前年份一致时,则合同编号正常生成,否则手动生成合同编号
+                                            if (projectYear.equals(currentYear)) {
+                                                // 生成合同编号-咨询类
+                                                serialNum = SpringUtil.getBean ( IWorkAttachmentApi.class ).genSerialNum(userDTO.getCompanyDTO().getId(), WorkContractInfoDto.BIZ_CODE_,currentToken);
+                                            }else {
+                                                String contractNum = "咨询合同";
+                                                //查找合同中与项目编号年份一致的最后一条咨询合同的编号
+                                                String contractNo = workContractInfoMapper.getNoByYear(projectYear,contractNum);
+                                                int lastIndex = contractNo.lastIndexOf("-");
+                                                if (lastIndex != -1) {
+                                                    String lastPart = contractNo.substring(lastIndex + 1); // 从 "-" 后面开始截取
+                                                    int parseInt = Integer.parseInt(lastPart);
+                                                    int newNum = parseInt+1;
+                                                    if (newNum>0 && newNum<10){
+                                                        serialNum = "咨询合同-"+projectYear+"-00"+newNum;
+                                                    }else if (newNum<100 && newNum >=10){
+                                                        serialNum = "咨询合同-"+projectYear+"-0"+newNum;
+                                                    } else {
+                                                        serialNum = "咨询合同-"+projectYear+"-"+newNum;
+                                                    }
+                                                }
+                                            }
+                                            // 根据合同id和合同编号来修改合同数据
+                                            WorkContractInfo workContractInfo = new WorkContractInfo();
+                                            workContractInfo.setNo(serialNum);
+                                            workContractInfoMapper.update(workContractInfo, new QueryWrapper<WorkContractInfo>().lambda().eq(WorkContractInfo::getId, contractId));
+                                        }
                                     }
+
                                 }
                             }
                         }

+ 2 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/mapper/WorkContractInfoMapper.java

@@ -53,4 +53,6 @@ public interface WorkContractInfoMapper extends BaseMapper<WorkContractInfo> {
      * @return
      */
     List<WorkContractInfoDto> getInfoByClientId (@Param("clientId") String clientId);
+    //查找合同中与项目编号年份一致的最后一条评估合同的编号
+    String getNoByYear(@Param("projectYear")String projectYear, @Param("contractNum")String contractNum);
 }

+ 12 - 0
jeeplus-modules/jeeplus-assess/src/main/java/com/jeeplus/assess/workContract/mapper/xml/WorkContractInfoMapper.xml

@@ -255,4 +255,16 @@
 			a.client_id = #{clientId}
 			AND a.del_flag = 0
 	</select>
+	
+	
+	<select id="getNoByYear" resultType="string">
+		SELECT `no`
+		FROM work_contract_info
+		WHERE del_flag = '0'
+  		AND no LIKE CONCAT(#{contractNum}, '%')
+  		AND no LIKE CONCAT('%', #{projectYear}, '%')
+		ORDER BY `no` DESC
+		LIMIT 1;
+	</select>
+	
 </mapper>