Browse Source

财务切换BUG修复

anderx 2 years ago
parent
commit
8baf54894c

+ 0 - 3
src/main/java/com/goafanti/admin/service/impl/AdminServiceImpl.java

@@ -651,9 +651,6 @@ public class AdminServiceImpl extends BaseMybatisDao<AdminMapper> implements Adm
 			if (!orderList.isEmpty()){
 				aList.addAll(orderList);
 			}
-			if (admin.getId().equals("060583e4-82a2-4f72-8141-ae44806844e7")){
-				System.out.println("???");
-			}
 			List<FinanceCount> expenseList = expenseAccountMapper.selectCountByFinance(admin.getId());
 			pushFinanceList(aList, expenseList,0);
 			List<FinanceCount> invoiceList =tOrderInvoiceMapper.selectCountByFinance(admin.getId());

+ 98 - 2
src/main/java/com/goafanti/common/utils/AsyncUtils.java

@@ -56,9 +56,18 @@ public class AsyncUtils {
 	private TOrderMidMapper tOrderMidMapper;
 	@Autowired
 	private RoleMapper roleMapper;
-
+	@Autowired
+	private ExpenseAccountMapper expenseAccountMapper;
+	@Autowired
+	private TOrderInvoiceMapper tOrderInvoiceMapper;
+	@Autowired
+	private TTaskMemberMapper tTaskMemberMapper;
+	@Autowired
+	private TOrderPaymentMapper tOrderPaymentMapper;
 	@Autowired
 	private AdminUserCountMapper adminUserCountMapper;
+	@Autowired
+	private FinanceCountMapper financeCountMapper;
 
 
 
@@ -669,10 +678,97 @@ public class AsyncUtils {
 		newOrderChangeMapper.updateExamineById(id,OrderChangeProcess.CWZY.getCode());
 	}
 
-	public  void updateFinanceExamineAndDep(String id, String financeId){
+	public  void updateFinanceExamineAndDep(String id, String financeId, String depFinanceId){
 		updateFinanceExamine( id);
 		tOrderMidMapper.updateFinanceId(id,financeId);
+		//如果切换财务,俩个财务都需要重新计算
+		financeCoutSwitch(financeId,depFinanceId);
+	}
+
+	public void financeCoutSwitch(String financeId, String depFinanceId) {
+		List<FinanceCount> list=new ArrayList<>();
+		financeCountRestart(financeId,list);
+		financeCountRestart(depFinanceId,list);
+		listBatches(list);
+	}
+
+	public void financeCoutSwitch(String financeId) {
+		List<FinanceCount> list=new ArrayList<>();
+		financeCountRestart(financeId,list);
+		listBatches(list);
+	}
+
+	private void listBatches(List<FinanceCount> list) {
+		List<FinanceCount> addList=new ArrayList<>();
+		for (int i = 0; i <list.size(); i++) {
+			FinanceCount financeCount = list.get(i);
+			FinanceCount newFc=FinanceCount.initialization(financeCount);
+			addList.add(newFc);
+			if (addList.size()==50||i==list.size()-1){
+				financeCountMapper.insetBatch(addList);
+				addList.clear();
+				try {
+					Thread.sleep(500);
+				} catch (InterruptedException exception) {
+					exception.printStackTrace();
+				}
+			}
+		}
+	}
 
+	private void financeCountRestart(String financeId, List<FinanceCount> list) {
+		List<FinanceCount> aList=new ArrayList<>();
+		List<FinanceCount> orderList = tOrderNewMapper.selectCountByFinance(financeId);
+		if (!orderList.isEmpty()){
+			aList.addAll(orderList);
+		}
+		List<FinanceCount> expenseList = expenseAccountMapper.selectCountByFinance(financeId);
+		pushFinanceList(aList, expenseList,0);
+		List<FinanceCount> invoiceList =tOrderInvoiceMapper.selectCountByFinance(financeId);
+		pushFinanceList(aList, invoiceList,1);
+		List<FinanceCount> memberList =tTaskMemberMapper.selectCountByFinance(financeId);
+		pushFinanceList(aList, memberList,2);
+		List<FinanceCount> paymentList =tOrderPaymentMapper.selectCountByFinance(financeId);
+		pushFinanceList(aList, paymentList,3);
+		if (!aList.isEmpty()){
+			list.addAll(aList);
+		}
+	}
+
+
+	/**
+	 *
+	 * @param list
+	 * @param minList
+	 * @param type
+	 */
+	private void pushFinanceList(List<FinanceCount> list, List<FinanceCount> minList,Integer type) {
+		if (!minList.isEmpty()){
+			for (FinanceCount expense : minList) {
+				boolean flag=true;
+				for (FinanceCount e : list) {
+					if (e.getDateTime().getTime()==expense.getDateTime().getTime()){
+						if (type==0){
+							e.setExpenseCount(expense.getExpenseCount());
+							e.setExpenseUnauditedCount(expense.getExpenseUnauditedCount());
+						}else if (type==1){
+							e.setInvoiceCount(expense.getInvoiceCount());
+							e.setInvoiceUnauditedCount(expense.getInvoiceUnauditedCount());
+						}else if (type==2){
+							e.setMemberCount(expense.getMemberCount());
+							e.setMemberUnauditedCount(expense.getMemberUnauditedCount());
+						}else if (type==3){
+							e.setPaymentCount(expense.getPaymentCount());
+							e.setPaymentUnauditedCount(expense.getPaymentUnauditedCount());
+						}
+						flag=false;
+					}
+				}
+				if (flag){
+					list.add(expense);
+				}
+			}
+		}
 	}
 
 	public void updateAdminUserOrderCount(List<AdminUserCount> tramsferList) {

+ 4 - 5
src/main/java/com/goafanti/organization/service/impl/OrganizationServiceImpl.java

@@ -199,14 +199,13 @@ public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> im
 
 	/**
 	 * 如果更换了负责人刷新中间表
-	 * @param id
-	 * @param financeId
+	 * @param id 部门编号
+	 * @param financeId  财务编号
 	 */
 	private void checkFinaceUpdate(String id, String financeId) {
 		Department dep = departmentMapper.selectByPrimaryKey(id);
-		if (financeId!=null&&financeId.equals(dep.getFinanceId())){
-			asyncUtils.updateFinanceExamineAndDep(id,financeId);
-			financeCountMapper.updateByFinance(dep.getFinanceId(),financeId);
+		if (financeId!=null&&!financeId.equals(dep.getFinanceId())){
+			asyncUtils.updateFinanceExamineAndDep(id,financeId,dep.getFinanceId());
 		}
 	}