瀏覽代碼

发票、报销报告号生成加锁操作

user5 4 年之前
父節點
當前提交
b59acccabd

+ 1 - 3
src/main/java/com/jeeplus/modules/projectAccessory/web/ProjectAccessoryRelationController.java

@@ -159,9 +159,7 @@ public class ProjectAccessoryRelationController extends BaseController {
 	@RequestMapping(value = "save")
 	public String save(ProjectAccessoryRelationInfo projectAccessoryInfo, Model model, RedirectAttributes redirectAttributes) throws Exception{
 		if(!projectAccessoryInfo.getIsNewRecord()){//编辑表单保存
-			ProjectAccessoryRelationInfo t = projectAccessoryRelationService.get(projectAccessoryInfo.getId());//从数据库取出记录的值
-			MyBeanUtils.copyBeanNotNull2Bean(projectAccessoryInfo, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
-			projectAccessoryRelationService.save(t);//保存
+			projectAccessoryRelationService.save(projectAccessoryInfo);//保存
 		}else{//新增表单保存
 			projectAccessoryRelationService.save(projectAccessoryInfo);//保存
 		}

+ 9 - 2
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java

@@ -98,6 +98,9 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 	protected SerialNumTplService serialNumTplService;
 	@Autowired
 	protected WorkProjectNotifyService workProjectNotifyService;
+
+	private static byte[] SYN_BYTE = new byte[0];
+
 	public WorkInvoice getByProcInsId(String procInsId) {
 		return dao.getByProcInsId(procInsId);
 	}
@@ -184,7 +187,9 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 	public String save(WorkInvoice workInvoice,Map<String, Object> variables,String processInstanceId) {
 		long s1=System.currentTimeMillis();
 			if (StringUtils.isBlank(workInvoice.getNumber())) {
-				workInvoice.setNumber(serialNumTplService.genSerialNum(UserUtils.getSelectCompany(), WorkInvoice.SERIAL_BIZCODE));
+				synchronized (SYN_BYTE) {
+					workInvoice.setNumber(serialNumTplService.genSerialNum(UserUtils.getSelectCompany(), WorkInvoice.SERIAL_BIZCODE));
+				}
 			}
 		long s2=System.currentTimeMillis();
 			super.save(workInvoice);
@@ -346,9 +351,11 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 	@Transactional(readOnly = false)
 	public String saveBranch(WorkInvoice workInvoice,Map<String, Object> variables,String processInstanceId) {
 		long s1=System.currentTimeMillis();
-			if (StringUtils.isBlank(workInvoice.getNumber())) {
+		if (StringUtils.isBlank(workInvoice.getNumber())) {
+			synchronized (SYN_BYTE) {
 				workInvoice.setNumber(serialNumTplService.genSerialNum(UserUtils.getSelectCompany(), WorkInvoice.SERIAL_BIZCODE));
 			}
+		}
 		String officeId = UserUtils.getUser().getOffice().getId();
 		Office office = officeService.get(officeId);
 		workInvoice.setOffice(office);

+ 9 - 2
src/main/java/com/jeeplus/modules/workreimbursement/service/WorkReimbursementService.java

@@ -122,6 +122,9 @@ public class WorkReimbursementService extends CrudService<WorkReimbursementDao,
     @Autowired
     private WorkLoanDao workLoanDao;
 
+    private static byte[] SYN_BYTE = new byte[0];
+
+
     @SuppressWarnings("unchecked")
     public WorkReimbursement get(String id) {
         WorkReimbursement workReimbursement = super.get(id);
@@ -234,7 +237,9 @@ public class WorkReimbursementService extends CrudService<WorkReimbursementDao,
     public  void save(WorkReimbursement workReimbursement){
         if (StringUtils.isBlank(workReimbursement.getNumber())) {
             User user = UserUtils.getUser();
-            workReimbursement.setNumber(serialNumTplService.genSerialNum(user.getCompany(), WorkReimbursement.SERIAL_BIZCODE));
+            synchronized (SYN_BYTE) {
+                workReimbursement.setNumber(serialNumTplService.genSerialNum(user.getCompany(), WorkReimbursement.SERIAL_BIZCODE));
+            }
         }
         super.save(workReimbursement);
         updateWorkReimbursementInfo(workReimbursement);
@@ -249,7 +254,9 @@ public class WorkReimbursementService extends CrudService<WorkReimbursementDao,
     public String save(WorkReimbursement workReimbursement,Map<String, Object> variables,String processInstanceId) {
         User user = UserUtils.getUser();
         if (StringUtils.isBlank(workReimbursement.getNumber())) {
-            workReimbursement.setNumber(serialNumTplService.genSerialNum(user.getCompany(), WorkReimbursement.SERIAL_BIZCODE));
+            synchronized (SYN_BYTE) {
+                workReimbursement.setNumber(serialNumTplService.genSerialNum(user.getCompany(), WorkReimbursement.SERIAL_BIZCODE));
+            }
         }
         super.save(workReimbursement);
         String str = "";