ソースを参照

生成编号时使用自增序号的同步问题

user5 4 年 前
コミット
4886e22a5a

+ 6 - 2
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageService.java

@@ -118,6 +118,8 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
     @Autowired
     private WorkContractInfoService workContractInfoService;
 
+    private static byte[] SYN_BYTE = new byte[0];
+
     public RuralProjectRecords get(String id) {
         return super.get(id);
     }
@@ -426,8 +428,10 @@ public class RuralProjectMessageService extends CrudService<RuralProjectMessageD
                     exp = "pass";
                     if ("yes".equals(flag)) {
                         notifyRole = "审批通过";
-                        String reportNo = createReportNo(reportData.getConditionType());
-                        projectReportData.setNumber(reportNo);
+                        synchronized (SYN_BYTE) {
+                            String reportNo = createReportNo(reportData.getConditionType());
+                            projectReportData.setNumber(reportNo);
+                        }
                         //projectReportDataService.updateNumber(projectReportData);
                         workActivityProcess.setIsApproval("1");
                         //workActivityProcessService.insertAuditsByType(auditUsers,reportData.getProcessInstanceId(),5,1);

+ 10 - 6
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectRecordsService.java

@@ -113,6 +113,8 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
     @Autowired
 	private ProjectReportDataDao projectReportDataDao;
 
+	private static byte[] SYN_BYTE = new byte[0];
+
 	public RuralProjectRecords get(String id) {
 		return super.get(id);
 	}
@@ -274,13 +276,15 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
         }
 
 		//添加项目编号
-		if(StringUtils.isBlank(projectRecords.getProjectId())){
-			if("1".equals(projectRecords.getProjectType())){
-				projectRecords.setProjectId(serialNumTplService.genSerialNum(createBy.getCompany(), RuralProjectRecords.SERIAL_BIZCODE));
-			}else if("2".equals(projectRecords.getProjectType())) {
-				projectRecords.setProjectId(serialNumTplService.genSerialNum(createBy.getCompany(), RuralProjectRecords.SERIAL_COST_BIZCODE));
+		synchronized (SYN_BYTE) {
+			if (StringUtils.isBlank(projectRecords.getProjectId())) {
+				if ("1".equals(projectRecords.getProjectType())) {
+					projectRecords.setProjectId(serialNumTplService.genSerialNum(createBy.getCompany(), RuralProjectRecords.SERIAL_BIZCODE));
+				} else if ("2".equals(projectRecords.getProjectType())) {
+					projectRecords.setProjectId(serialNumTplService.genSerialNum(createBy.getCompany(), RuralProjectRecords.SERIAL_COST_BIZCODE));
+				}
 			}
-        }
+		}
         if(projectRecords.getProjectStatus()== ProjectStatusEnum.INVALID.getValue()){
             projectRecords.setId(IdGen.uuid());
             dao.insert(projectRecords);

+ 6 - 2
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectMessageController.java

@@ -82,6 +82,8 @@ public class RuralCostProjectMessageController extends BaseController {
     @Autowired
     private ProjectTemplateService projectTemplateService;
 
+    private static byte[] SYN_BYTE = new byte[0];
+
     @ModelAttribute
     public RuralProjectRecords get(@RequestParam(required=false) String id) {
         RuralProjectRecords entity = null;
@@ -512,8 +514,10 @@ public class RuralCostProjectMessageController extends BaseController {
         ProjectReportData reportData = ruralProjectMessageService.getProjectReportDateByProjectId(projectReportRecord.getReportId());
         if(null != reportData){
             if (StringUtils.isBlank(projectReportRecord.getView()) || !projectReportRecord.getView().equals("view")){
-                int count = projectReportRecordService.getNumber(reportData.getId());
-                projectReportRecord.setRecordNum(count>9?reportData.getNumber()+"-"+count+"":reportData.getNumber()+"-"+"0"+count);
+                synchronized (SYN_BYTE) {
+                    int count = projectReportRecordService.getNumber(reportData.getId());
+                    projectReportRecord.setRecordNum(count>9?reportData.getNumber()+"-"+count+"":reportData.getNumber()+"-"+"0"+count);
+                }
             }else{
                 ProjectReportRecord projectReportRecordInfo =ruralProjectMessageService.getProjectReportRecord(reportData.getId());
                 MyBeanUtils.copyBeanNotNull2Bean(projectReportRecordInfo, projectReportRecord);

+ 7 - 3
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectMessageController.java

@@ -84,6 +84,8 @@ public class RuralProjectMessageController extends BaseController {
     @Autowired
     private ProjectTemplateService projectTemplateService;
 
+    private static byte[] SYN_BYTE = new byte[0];
+
     @ModelAttribute
     public RuralProjectRecords get(@RequestParam(required=false) String id) {
         RuralProjectRecords entity = null;
@@ -512,8 +514,10 @@ public class RuralProjectMessageController extends BaseController {
         ProjectReportData reportData = ruralProjectMessageService.getProjectReportDateByProjectId(projectReportRecord.getReportId());
         if(null != reportData){
             if (StringUtils.isBlank(projectReportRecord.getView()) || !projectReportRecord.getView().equals("view")){
-                int count = projectReportRecordService.getNumber(reportData.getId());
-                projectReportRecord.setRecordNum(count>9?reportData.getNumber()+"-"+count+"":reportData.getNumber()+"-"+"0"+count);
+                synchronized (SYN_BYTE) {
+                    int count = projectReportRecordService.getNumber(reportData.getId());
+                    projectReportRecord.setRecordNum(count > 9 ? reportData.getNumber() + "-" + count + "" : reportData.getNumber() + "-" + "0" + count);
+                }
             }else{
                 ProjectReportRecord projectReportRecordInfo =ruralProjectMessageService.getProjectReportRecord(reportData.getId());
                 MyBeanUtils.copyBeanNotNull2Bean(projectReportRecordInfo, projectReportRecord);
@@ -757,7 +761,7 @@ public class RuralProjectMessageController extends BaseController {
         return "modules/workreimbursement/workReimbursementTrack";
     }
 
-    //报告流程审批
+    //报告归档流程审批
     @RequestMapping(value = {"auditProjectReportRecordSave"})
     public String auditProjectReportRecordSave(ProjectReportRecord projectReportRecord, HttpServletRequest request, HttpServletResponse response, Model model,
                             RedirectAttributes redirectAttributes) {

+ 6 - 2
src/main/java/com/jeeplus/modules/workborrowmangement/service/WorkBorrowMangementService.java

@@ -89,6 +89,8 @@ public class WorkBorrowMangementService extends CrudService<WorkBorrowMangementD
 		return super.get(id);
 	}
 
+	private static byte[] SYN_BYTE = new byte[0];
+
 	/**
 	 * 查询权限范围内的数据列表
 	 * @param workBorrowMangement
@@ -147,8 +149,10 @@ public class WorkBorrowMangementService extends CrudService<WorkBorrowMangementD
 		if(StringUtils.isBlank(workBorrowMangement.getBorrower())){
 			workBorrowMangement.setBorrower(UserUtils.getUser().getId());
 		}
-		if(StringUtils.isBlank(workBorrowMangement.getNumber())){
-			workBorrowMangement.setNumber(serialNumTplService.genSerialNum(createBy.getCompany(),"14"));
+		synchronized (SYN_BYTE) {
+			if (StringUtils.isBlank(workBorrowMangement.getNumber())) {
+				workBorrowMangement.setNumber(serialNumTplService.genSerialNum(createBy.getCompany(), "14"));
+			}
 		}
 		if(StringUtils.isBlank(workBorrowMangement.getOfficeId())){
 			workBorrowMangement.setOfficeId(UserUtils.getSelectOffice().getId());

+ 6 - 1
src/main/java/com/jeeplus/modules/workcontractinfo/service/WorkContractInfoService.java

@@ -145,6 +145,8 @@ public class WorkContractInfoService extends CrudService<WorkContractInfoDao, Wo
 	@Autowired
 	private WorkContractBorrowDao workContractBorrowDao;
 
+	private static byte[] SYN_BYTE = new byte[0];
+
 	public WorkContractInfo get(String id) {
 		WorkContractInfo workContractInfo = super.get(id);
 		/*合同投标项目,则查投标。不是投标项目,不去查*/
@@ -625,7 +627,10 @@ public class WorkContractInfoService extends CrudService<WorkContractInfoDao, Wo
 			}else {
 				type = WorkContractInfo.SERIAL_ELST;
 			}
-			workContractInfo.setContractNum(serialNumTplService.genSerialNum(UserUtils.get(workContractInfo.getCreateBy().getId()).getCompany(), type).replace("TYPE",contractType));
+			synchronized (SYN_BYTE){
+				workContractInfo.setContractNum(serialNumTplService.genSerialNum(UserUtils.get(workContractInfo.getCreateBy().getId()).getCompany(), type).replace("TYPE",contractType));
+			}
+
 
 			/*//生成合同编号
 			workContractInfo.setContractNum(serialNumTplService.genSerialNumNotNum(UserUtils.get(workContractInfo.getCreateBy().getId()).getCompany(), WorkContractInfo.SERIAL_CONSULT).replace("TYPE",contractType));